Code Monkey home page Code Monkey logo

petroleummodels.jl's Introduction

PetroleumModels.jl

PetroleumModels logo

Release:

Dev: Build Status codecov

PetroleumModels.jl is a Julia/JuMP package for Steady-State Petroleum (petroleum products) Network Optimization. It is designed to optimize the operations of existing single liquid commodity pipeline systems subject to physical flow and pump engineering constraints. The code is engineered to decouple problem specifications from the network formulations. This enables the definition of a variety of liquid network formulations and their comparison on common problem specifications.

Core Problem Specifications

  • Optimal Petro Flow (opf)

Core Network Formulations

  • LP

Basic Usage

Once PetroleumModels is installed, a optimizer is installed, and a network data file has been acquired, a Petro Flow can be executed with,

using PetroleumModels
using <solver_package>

run_opf("foo.m", FooPetroleumModel, FooSolver())

Similarly, an expansion optimizer can be executed with,

run_ne("foo.m", FooPetroleumModel, FooSolver())

where FooPetroleumModel is the implementation of the mathematical program of the Petroleum equations you plan to use (i.e. ) and FooSolver is the JuMP optimizer you want to use to solve the optimization problem (i.e. IpoptSolver).

Acknowledgments

This code has been developed as part of the Advanced Network Science Initiative at Los Alamos National Laboratory. The primary developer is Elena Khlebnikova, with significant contributions from Kaarthik Sundar and Russell Bent.

License

This code is provided under a BSD license as part of the Multi-Infrastructure Control and Optimization Toolkit (MICOT) project, LA-CC-13-108.

petroleummodels.jl's People

Contributors

ccoffrin avatar elennnaaa avatar kaarthiksundar avatar rb004f avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

sambuddhac

petroleummodels.jl's Issues

Travis

Get travis linked and set up for unit tests

TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.

If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.

If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

summary.jl, summary2.jl

In the tests, we have two files summary.jl and summary2.jl that are not used. Do we still need them?

slack node pressure

We have a field for slack nodes (junctions), we need to add a constraint that pins these pressures

American Standard Units

Documentation and some code in data.jl implies we support conversions from american standard units. I recommend we complete the implementations with a test, or delete all references and support for this.

Q_pipe_dim

@elennnaaa what is mpc.Q_pipe_dim? The constant to get from m^3 per hour to m^3 per second?

SI units

Lets unify all the SI units (make all hours be in seconds, and power in watts), rotations per minute

Update Infrastructure Models Conventions (01/2021)

Non-breaking

  • Migrate from Travis CI to Github Actions for CI
  • update run_model to support relax_integrality argument that was added in IM v0.5.4.
  • update all run_* methods to be solve_* and add deprecation warnings (example, lanl-ansi/PowerModels.jl#807)

Breaking

  • Update to IM v0.6.0 (i.e. multi-infrastructure support)
  • Remove use of the cnw and replace it with the constant default network id defined in IMs v0.6.0
  • Drop support JuMP v0.19/v0.20 and replace use of with_optimizer with optimizer_with_attributes

Objective function constants

What are the constants in the objective function. Should we consider making those parameters of the input file?

constraint_pump_efficiency_and_rotation discrepancy

In the implementation of this constraint, we have

(Hj - Hi) == (w_pump / w_nom)^2 * a - (q_pump * Q_pump_dim )^2 * b

however equation 17a in the paper has

(Hj - Hi) == (w_pump / w_nom)^2 * a - (q_pump )^2 * b

which one is correct?

Wikidocs

Get the wikidocs set up to automatically build the documentation

Codecov

Get CodCov linked and set up

Unify non dimensionalization constants (?)

@kaarthiksundar It looks like we have a lot of non dimensionalization constants for units in the same dimension. For example, base_head, base_length, base_diameter, and base_elevation are all in m. If these have different non-dimensionalization constants do we run into potential bugs down the road where things could get out of whack? Would it make sense to have one constant per unit? Just a thought...

Names for producers

Is there a name we should use for producers that is commonly used in the petro industry? For example, we changed the name of producers in GasModels from producers to receipts since that is what is used in the gas industry

Upperbound on q_pump

We should consider having an explicit upper bound in the inputs on q_pump rather than q_nom * 1.2. That way the user can specify it should it be something different.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.