From 0f834bb5769ff8b6613138d1829f52f16b3f9523 Mon Sep 17 00:00:00 2001 From: jbpezent Date: Mon, 24 Jun 2024 02:57:07 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20AlabamaA?= =?UTF-8?q?SRL/asset=5Fasrl@48f5f9c81efa41db7aa30692d90838eb906bf328=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .buildinfo | 2 +- Installation.html | 9 +- _sources/index.rst.txt | 13 +- _sources/tutorials/Install.rst.txt | 53 +- _sources/tutorials/NewInterface.rst.txt | 286 +++++++++++ _sources/tutorials/tutorials.rst.txt | 1 + _static/documentation_options.js | 2 +- contrib.html | 9 +- examples/CartPole.html | 9 +- examples/Delta3.html | 9 +- examples/HyperSensitive.html | 9 +- examples/MultiTarg.html | 9 +- examples/ParallelParking.html | 9 +- examples/ReentryExample.html | 9 +- examples/examples.html | 9 +- examples/halo.html | 9 +- examples/zermelo.html | 9 +- examples/zermelolink.html | 9 +- genindex.html | 62 ++- index.html | 21 +- install.html | 9 +- objects.inv | Bin 8423 -> 8641 bytes py-modindex.html | 22 +- python/Astro.html | 9 +- python/asset.html | 9 +- python/optimalcontrol.html | 161 +++++- python/python.html | 29 +- python/vectorfunctions.html | 9 +- search.html | 9 +- searchindex.js | 2 +- tutorials/AutoMeshGuide.html | 15 +- tutorials/Install.html | 68 ++- tutorials/IntegratorGuide.html | 9 +- tutorials/NewInterface.html | 619 ++++++++++++++++++++++++ tutorials/ODEGuide.html | 9 +- tutorials/OptimalControlProblem.html | 9 +- tutorials/OptimalControlUtilites.html | 15 +- tutorials/PSIOPT.html | 9 +- tutorials/PhaseGuide.html | 9 +- tutorials/VectorFunctionGuide.html | 9 +- tutorials/tutorials.html | 18 +- 41 files changed, 1414 insertions(+), 182 deletions(-) create mode 100644 _sources/tutorials/NewInterface.rst.txt create mode 100644 tutorials/NewInterface.html diff --git a/.buildinfo b/.buildinfo index c3eb51ee..075606fa 100644 --- a/.buildinfo +++ b/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 5c824843bcd42df5ed2cdc3acabdaffe +config: 3d1bae2c42148cab69c877b9471d3730 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/Installation.html b/Installation.html index 55b2cd1b..ee2176ad 100644 --- a/Installation.html +++ b/Installation.html @@ -6,7 +6,7 @@ - Python: Installing ASSET - ASSET 0.4.0 documentation + Python: Installing ASSET - ASSET 0.5.0 documentation @@ -181,7 +181,7 @@
-
ASSET 0.4.0 documentation
+
ASSET 0.5.0 documentation
@@ -208,7 +208,7 @@
- ASSET 0.4.0 documentation + ASSET 0.5.0 documentation
diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt index 750deeb9..a305ac2b 100644 --- a/_sources/index.rst.txt +++ b/_sources/index.rst.txt @@ -38,7 +38,13 @@ Cite the following `paper `_ file on the Github repo. +ASSET is distributed under the permissive Apache 2.0 license that can be found in the `LICENSE `_ file on the Github repo. The license and copyright notices of ASSET's source and redistributable dependencies are shown below. The full text for each respective license can be found in the `notices `_ folder on the Github repo. @@ -71,6 +77,9 @@ The license and copyright notices of ASSET's source and redistributable dependen rubber_types - MIT License : Copyright (C) 2014 Andreas J. Herrmann + kepler propagator - MIT License : Copyright (C) 2014 Darin Koblick + + lambert solver - MIT License : Copyright (C) 2018 Rody Oldenhuis .. cpp/cpp_root.rst diff --git a/_sources/tutorials/Install.rst.txt b/_sources/tutorials/Install.rst.txt index 15d0f30b..755962a3 100644 --- a/_sources/tutorials/Install.rst.txt +++ b/_sources/tutorials/Install.rst.txt @@ -1,13 +1,23 @@ Installing ASSET ================ -This tutorial will guide you through the complete setup process for installing and building ASSET from scratch on: +In most cases we suggest simply installing ASSET via pip, which is as simple as running the following command in the console: + +.. code-block:: console + + pip install asset-asrl + +We currently host Windows and Linux binaries for python 3.7-3.12 on PyPi. + + +If you are interested in building ASSET from source, please see the following sections for a step-by-step guide on how to do so on: + * Windows * Linux -* Docker +* Docker (Linux) -Windows Installation --------------------- +Build from Source on Windows +---------------------------- In order to build ASSET on Windows the following dependencies are required: @@ -136,8 +146,8 @@ Step-By-Step Guide -Linux Installation ------------------- +Build from Source on Linux +-------------------------- The dependencies for Linux installations are similar to that of Windows; however, we'll be using Visual Studio Code for our IDE: * `Visual Studio Code `_ @@ -253,16 +263,35 @@ If it is desired to use an IDE other than Visual Studio Code, it is still requir Docker ------ -Want to skip installing all of the dependencies? ASSET can be installed through a Docker image. There's also great integrations of Docker and VS Code. +The `dockerfiles `_ folder in the repo contains docker files and supporting scripts for building asset_asrl .whl files for pip installation on linux systems. +Two images are provided based on Ubuntu 18.04 and 20.04. Build wheels on 18.04 for better compatibility with older linux distros or 20.04 for better performance. + + +To use, cd to the desired image's folder and build the image. You may optionally set the number of cores used building the image with the +CMakeBuildJobs build argument. + +.. code-block:: console + + cd Ubuntu18.04 + + docker build -t assetbuild . --build-arg CMakeBuildJobs=12 + +After building the image, start up a new container. + +.. code-block:: console + + docker run -it assetbuild /bin/bash + +Once inside the container, run the BuildWheel.sh script to build a .whl file for a particular python version (-p), repo branch (-b). +You may also set the number of jobs used when compiling with the -j argument. -Download the Docker/VS Code project template here and get to coding! +.. code-block:: console -https://github.com/jasonmeverett/asset-example-project + bash ~/BuildWheel.sh -b master -j 12 -p 3.10 -Developing Docker Images -^^^^^^^^^^^^^^^^^^^^^^^^ +After the build has completed, the packaged wheel file will be available in ~/asset_asrl/wheelhouse. You can then copy this file out of the container +for installation on other systems. -Interested in contributing to Docker/ASSET development? Check in-depth details in `Dockerfile` and `Dockerfile-dev` in the repository. diff --git a/_sources/tutorials/NewInterface.rst.txt b/_sources/tutorials/NewInterface.rst.txt new file mode 100644 index 00000000..9569f246 --- /dev/null +++ b/_sources/tutorials/NewInterface.rst.txt @@ -0,0 +1,286 @@ +.. _scale-guide + +====================== +Interface Enhancements +====================== +Beginning in version 0.5.0, we have made significant improvements to the ODE, phase and OCP interfaces +in order to simplify the definition of more complex optimal control problems. Note that these changes are backwards +compatible and the previous tutorials and any existing code will continue to work as is. We will be updating all existing +tutorials to reflect the new changes at a later date, but for now we will provide a brief overview of the new features. A subset of +the existing examples have been updated to reflect the new interface and can be found in the examples/UpdatedInterface folder on the repo. + + +ODE Component Naming +#################### + +The first major improvement is the ability to give string name aliases to the input arguments of an ODE in the constructor. +These names may then be used in place of integer indexes when applying constraints and objectives to phases +and optimal control problems. As an example, lets take a look at how this works for the ODE defined for the Delta-III +launch example. + +Here, we define the ODE exactly as we normally would in terms of :code:`ODEArguments`. We can then add the different components of +the arguments to a dictionary indexed by the name or names that we want to use as aliases. Multiple aliases for the same variable +grouping can be used by indexing the dictionary with a tuple of string names. The variables of the alias can be specified with +the list integer indices,the actual segment or element, or a list of segments and/or elements. After populating the dictionary,we pass it +to the :code:`Vgroups` (Variable groups) argument of :code:`ODEBase`'s constructor. + +.. code:: python + + class RocketODE(oc.ODEBase): + def __init__(self,T,mdot): + #################################################### + XtU = oc.ODEArguments(7,3) + + R = XtU.XVec().head(3) + V = XtU.XVec().segment(3,3) + m = XtU.XVar(6) + + U = XtU.UVec() + + h = R.norm() - Re + rho = RhoAir * vf.exp(-h / h_scale) + Vr = V + R.cross(np.array([0,0,We])) + + D = (-0.5*CD*S)*rho*(Vr*Vr.norm()) + + Rdot = V + Vdot = (-mu)*R.normalized_power3() + (T*U.normalized() + D)/m + + ode = vf.stack(Rdot,Vdot,-mdot) + + Vgroups = {} + + + Vgroups[("R","Position")]=R + #Vgroups[("R","Position")]=[0,1,2] # same as above + + Vgroups[("V","Velocity")]=V + Vgroups[("U","ThrustVec")]=U + + Vgroups["RV"] = [R,V] + #Vgroups["RV"] = [0,1,2,3,4,5] # same as above + + Vgroups["Xt"] = XtU.XtVec() + + Vgroups[("t","time")]=XtU.TVar() + Vgroups[("m","mass")]=m + + #################################################### + super().__init__(ode,7,3,Vgroups = Vgroups) + + +Having defined the variable groups for our ODE we can now use the string names or lists of string names +anywhere where we could previously use integer indices or lists of indices. As an example, lets take a look at how this would modify the +definition of the Delta-III launch vehicle optimal control problem below. For example, we can now simply use the alias :code:`"U"`, which we have +defined to be our thrust vector, when placing an LUNorm bound on our control. Similarly, we can replace the :code:`range(0,8)` in the boundary value specification, +with a list of string names specifying the different components of the states or with the combined alias :code:`"Xt"` of those same variables. Note that when specifying multiple names, +the combined index vector is just the concatenation of sub index vectors, so the order matters. + +.. code:: python + + ######################################### + phase1 = ode1.phase(tmode,IG1,nsegs1) + phase1.setControlMode(cmode) + + phase1.addLUNormBound("Path","U",.5,1.5) + ## Same as above + ## phase1.addLUNormBound("Path",[8,9,10],.5,1.5) + + phase1.addBoundaryValue("Front",["R","V","m","t"],IG1[0][0:8]) + ## Same as above + ##phase1.addBoundaryValue("Front","Xt",IG1[0][0:8]) + ##phase1.addBoundaryValue("Front",range(0,8),IG1[0][0:8]) + + + phase1.addLowerNormBound("Path","R",Re*.999999) + + phase1.addBoundaryValue("Back","time",tf_phase1) ## Can drop brackets if scalar + ## Same as above + ## phase1.addBoundaryValue("Back",[7],[tf_phase1]) + + + ######################################### + phase2 = ode2.phase(tmode,IG2,nsegs2) + phase2.setControlMode(cmode) + + phase2.addLowerNormBound("Path","R",Re) + phase2.addLUNormBound("Path","U",.5,1.5) + + phase2.addBoundaryValue("Front","mass", m0_phase2) + phase2.addBoundaryValue("Back", "time" ,tf_phase2) + + ######################################### + phase3 = ode3.phase(tmode,IG3,nsegs3) + phase3.setControlMode(cmode) + + phase3.addLowerNormBound("Path","R",Re) + phase3.addLUNormBound("Path","U",.5,1.5) + phase3.addBoundaryValue("Front","mass", m0_phase3) + phase3.addBoundaryValue("Back", "time" ,tf_phase3) + + ######################################### + phase4 = ode4.phase(tmode,IG4,nsegs4) + phase4.setControlMode(cmode) + + phase4.addLowerNormBound("Path","R",Re) + phase4.addLUNormBound("Path","U",.5,1.5) + phase4.addBoundaryValue("Front","mass", m0_phase4) + phase4.addUpperVarBound("Back","time",tf_phase4) + + phase4.addEqualCon("Back",TargetOrbit(at,et,istart,Ot,Wt),["R","V"]) + ## Same as above + ## phase4.addEqualCon("Back",TargetOrbit(at,et,istart,Ot,Wt),"RV") + + # Maximize final mass + phase4.addValueObjective("Back","mass",-1.0) + + ######################################### + +We can also now use these same string names when applying any link constraints and objectives to :code:`OptimalControlProblem` objects. +So for the Delta-III example, we can modify the :code:`addForwardLinkEqualCon` as shown below. Note that you will need to define the string aliases in the ODE +associated with each phase. Note however that the indices specified by a string name do not have to be the same in every phase/ODE linked +(though they are in this case). This makes it much easier to enforce continuity between variables in each phase even if they +have different indices. For example, in the old interface, models with different numbers of state variables would have different indices for time. +Now, so long as the user names time say :code:`"t"` in both model definitions, then the call below will enforce continuity correctly. + +.. code:: python + + ocp = oc.OptimalControlProblem() + ocp.addPhase(phase1) + ocp.addPhase(phase2) + ocp.addPhase(phase3) + ocp.addPhase(phase4) + + + + ## All phases continuous in everything but mass (var 6) + ocp.addForwardLinkEqualCon(phase1,phase4,["R","V","t","U"]) + + ## Same as above + ##ocp.addForwardLinkEqualCon(phase1,phase4,[0,1,2,3,4,5, 7,8,9,10]) + + +Finally, the new string names or lists of names can also be used when applying specifying the inputs to control law for an ODE's integrator as shown below. + +.. code:: python + + ode = RocketODE(T_phase1,mdot_phase1) + + integ = ode.integrator(1.0,Args(3).normalized(),"V") + + + + + +Auto-Scaling +############ + +The second major addition to the interface is automatic problem scaling from user defined canonical units. In the +Delta-III and Shuttle tutorials we emphasized the importance of defining problems in non-dimensional units. This is typically +done by defining a set of base length, mass, and time units and then redefining all constants and boundary conditions in this new +unit system. This is easy enough for simple problems like the Delta-III, but quickly becomes cumbersome for more complex scenarios. +For that we reason, we have added interfaces to :code:`phase` and :code:`OptimalControlProblem` that will handle this non-dimensionalization behind the scenes +and allow users to specify their problem in traditional units. To use this interface, the user must enable auto scaling and declare the canonical units +associated with each ODE input variable for a phase. As shown below for the Delta-III example, we can specify the units using code:`phase.setUnits` +by passing a single vector with the same dimensions as the ODE's input vector, or if we defined names for our components, we can assign them by name. + +.. code:: python + + phase1 = ode1.phase(tmode,IG1,nsegs1) + phase1.setControlMode(cmode) + + ## Enable AutoScaling, off by default + phase1.setAutoScaling(True) + + units = np.ones((11)) + units[0:3]=Lstar + units[3:6]=Vstar + units[6]=Mstar + units[7]=Tstar + ## All others are one,i.e no auto-scaling + + phase1.setUnits(units) # As a single vector + # Or + phase1.setUnits(R=Lstar,V=Vstar,t=Tstar,m=Mstar) + + + phase1.addLUNormBound("Path","U",.5,1.5) + phase1.addBoundaryValue("Front",["R","V","m","t"],IG1[0][0:8]) + + #. Continue definition + #. + # + + +The specified canonical units will be used under the hood to non-dimensionalize any trajectory passed into the phase and any variables sent to the optimizer. +From the units for the states and times, we can also uniquely determine a set of output scales for the transcription defect constraints that will make them equivalent +to a problem that was non-dimensionalized by hand. + +.. note:: + + When auto-scaling is enabled the mesh tolerance for adaptive mesh refinement refers to the scaled ODE system. + + +However, since we don't track the physical units of functions, this is not possible for all other constraints and objectives added to phase. +By default for all non-dynamics constraints and objectives, we compute a set of output scales that normalizes each row of +the function's Jacobian at the initial guess for the problem. Alternatively, the user can override these scales manually. +All of this is controlled via an optional :code:`AutoScale`` argument that has been, +added to all :code:`phase`` and :code:`OptimalControlProblem` :code:`.add###`` methods. As an example, lets take a look at a portion of the definition of the Delta-III problem again below. + + +.. code:: python + + ## AutoScale = "auto" if not specified + phase4.addBoundaryValue("Front","mass", m0_phase4) + phase4.addUpperVarBound("Back","time",tf_phase4) + # AutoScale=None, will turn it off for this constraint + phase4.addLUNormBound("Path","U",.5,1.5,AutoScale=None) + + # Override the scale for this constraint + phase4.addLowerNormBound("Path","R",Re,AutoScale=1/Lstar) + phase4.addEqualCon("Back",TargetOrbit(at,et,istart,Ot,Wt),["R","V"],AutoScale = [1/Lstar,1.0,1.0,1.0,1.0]) + + # Maximize final mass + phase4.addValueObjective("Back","mass",-1.0) + + + +By default :code:`AutoScale` is set to :code:`"auto"` for all constraints and objectives. This will work well in most cases, but can be overridden when the user can specify a better scale factor. +Manual scales specified by a assigning a scalar or vector of scales to the :code:`AutoScale` parameter. These will multiply the output of the function whenever AutoScaling is enabled. +For example, for the bound on :code:`"R"`, we know that the units of the output will have dimensions of length, so it is reasonable to set the AutoScale variable to :code:`1/Lstar`. +Similarly, for the :code:`TargetOrbit` constraint, we know that the first component of the output(semi-major axis) has dimensions of length and all others are already non-dimensional. +In that case, we can manually specify the output scale of the first component and then leave the others set to 1.0. + + +When adding multiple phases to an :code:`OptimalControlProblem` we should also enable AutoScaling for the :code:`ocp` object as well. This will enable AutoScaling +on all link constraints and objectives between phases. It should also be noted that units do not have to be the same for all phases in an :code:`ocp`. +As with phases, the optional :code:`AutoScale` parameter on all link constraints and objectives can be overridden +with custom scales if necessary. + +.. code:: python + + ocp = oc.OptimalControlProblem() + ocp.addPhase(phase1) + ocp.addPhase(phase2) + ocp.addPhase(phase3) + ocp.addPhase(phase4) + + # Enable AutoScaling for the OCP,and all constitiuent phases currently in ocp + ocp.setAutoScaling(True,True) + ocp.setAdaptiveMesh(True) + + + for phase in ocp.Phases: + phase.setUnits(R=Lstar,V=Vstar,t=Tstar,m=Mstar) + phase.setMeshTol(1.0e-6) + phase.setMeshErrorCriteria('max') + phase.setMeshErrorEstimator('integrator') + + + ## Each Phase does not have to have the same AutoScale units even if its the same ODE + phase4.setUnits(R=2*Lstar,V=Vstar,t=.8*Tstar,m=Mstar) + + ## Can override the AutoScale for any link constraints and objectives as well + ocp.addForwardLinkEqualCon(phase1,phase4,["R","V","t","U"],AutoScale="auto") + + \ No newline at end of file diff --git a/_sources/tutorials/tutorials.rst.txt b/_sources/tutorials/tutorials.rst.txt index 8cbc882a..9ec40a87 100644 --- a/_sources/tutorials/tutorials.rst.txt +++ b/_sources/tutorials/tutorials.rst.txt @@ -16,6 +16,7 @@ New readers should begin at the beginning, since it's important to understand th OptimalControlProblem PSIOPT AutoMeshGuide + NewInterface OptimalControlUtilites diff --git a/_static/documentation_options.js b/_static/documentation_options.js index 025330ce..240446d5 100644 --- a/_static/documentation_options.js +++ b/_static/documentation_options.js @@ -1,5 +1,5 @@ const DOCUMENTATION_OPTIONS = { - VERSION: '0.4.0', + VERSION: '0.5.0', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/contrib.html b/contrib.html index 56ddf231..163d535e 100644 --- a/contrib.html +++ b/contrib.html @@ -6,7 +6,7 @@ - Guidelines for Contributing - ASSET 0.4.0 documentation + Guidelines for Contributing - ASSET 0.5.0 documentation @@ -181,7 +181,7 @@
-
ASSET 0.4.0 documentation
+
ASSET 0.5.0 documentation
@@ -208,7 +208,7 @@
- ASSET 0.4.0 documentation + ASSET 0.5.0 documentation @@ -227,6 +227,7 @@
  • Optimal Control Problem Tutorial
  • PSIOPT
  • Adaptive Mesh Refinement Tutorial
  • +
  • Interface Enhancements
  • Optimal Control Utilities
  • @@ -323,7 +324,7 @@

    Guidelines for Contributing +

    diff --git a/examples/CartPole.html b/examples/CartPole.html index 72a42e2f..392a727f 100644 --- a/examples/CartPole.html +++ b/examples/CartPole.html @@ -6,7 +6,7 @@ - Cart-Pole Swing Up - ASSET 0.4.0 documentation + Cart-Pole Swing Up - ASSET 0.5.0 documentation @@ -181,7 +181,7 @@
    -
    ASSET 0.4.0 documentation
    +
    ASSET 0.5.0 documentation
    @@ -208,7 +208,7 @@
    - ASSET 0.4.0 documentation + ASSET 0.5.0 documentation @@ -227,6 +227,7 @@
  • Optimal Control Problem Tutorial
  • PSIOPT
  • Adaptive Mesh Refinement Tutorial
  • +
  • Interface Enhancements
  • Optimal Control Utilities
  • @@ -716,7 +717,7 @@

    Full-Code +

    diff --git a/examples/Delta3.html b/examples/Delta3.html index ca2e6d7c..acbe63b1 100644 --- a/examples/Delta3.html +++ b/examples/Delta3.html @@ -6,7 +6,7 @@ - Delta 3 Multi-phase GTO Transfer - ASSET 0.4.0 documentation + Delta 3 Multi-phase GTO Transfer - ASSET 0.5.0 documentation @@ -181,7 +181,7 @@
    -
    ASSET 0.4.0 documentation
    +
    ASSET 0.5.0 documentation
    @@ -208,7 +208,7 @@
    - ASSET 0.4.0 documentation + ASSET 0.5.0 documentation @@ -227,6 +227,7 @@
  • Optimal Control Problem Tutorial
  • PSIOPT
  • Adaptive Mesh Refinement Tutorial
  • +
  • Interface Enhancements
  • Optimal Control Utilities
  • @@ -1077,7 +1078,7 @@

    Full Code +

    diff --git a/examples/HyperSensitive.html b/examples/HyperSensitive.html index 1d234217..2f086145 100644 --- a/examples/HyperSensitive.html +++ b/examples/HyperSensitive.html @@ -6,7 +6,7 @@ - Hyper-Sensitive Optimal Control Problem - ASSET 0.4.0 documentation + Hyper-Sensitive Optimal Control Problem - ASSET 0.5.0 documentation @@ -181,7 +181,7 @@
    -
    ASSET 0.4.0 documentation
    +
    ASSET 0.5.0 documentation
    @@ -208,7 +208,7 @@
    - ASSET 0.4.0 documentation + ASSET 0.5.0 documentation @@ -227,6 +227,7 @@
  • Optimal Control Problem Tutorial
  • PSIOPT
  • Adaptive Mesh Refinement Tutorial
  • +
  • Interface Enhancements
  • Optimal Control Utilities
  • @@ -571,7 +572,7 @@

    Full Code +

    diff --git a/examples/MultiTarg.html b/examples/MultiTarg.html index 7860fe8c..2d302367 100644 --- a/examples/MultiTarg.html +++ b/examples/MultiTarg.html @@ -6,7 +6,7 @@ - Multi-Spacecraft Optimization - ASSET 0.4.0 documentation + Multi-Spacecraft Optimization - ASSET 0.5.0 documentation @@ -181,7 +181,7 @@
    -
    ASSET 0.4.0 documentation
    +
    ASSET 0.5.0 documentation
    @@ -208,7 +208,7 @@
    - ASSET 0.4.0 documentation + ASSET 0.5.0 documentation @@ -227,6 +227,7 @@
  • Optimal Control Problem Tutorial
  • PSIOPT
  • Adaptive Mesh Refinement Tutorial
  • +
  • Interface Enhancements
  • Optimal Control Utilities
  • @@ -906,7 +907,7 @@

    Full Code: +

    diff --git a/examples/ParallelParking.html b/examples/ParallelParking.html index 74304561..bfa99e8a 100644 --- a/examples/ParallelParking.html +++ b/examples/ParallelParking.html @@ -6,7 +6,7 @@ - Parallel Parking - ASSET 0.4.0 documentation + Parallel Parking - ASSET 0.5.0 documentation @@ -181,7 +181,7 @@
    -
    ASSET 0.4.0 documentation
    +
    ASSET 0.5.0 documentation
    @@ -208,7 +208,7 @@
    - ASSET 0.4.0 documentation + ASSET 0.5.0 documentation @@ -227,6 +227,7 @@
  • Optimal Control Problem Tutorial
  • PSIOPT
  • Adaptive Mesh Refinement Tutorial
  • +
  • Interface Enhancements
  • Optimal Control Utilities
  • @@ -323,7 +324,7 @@

    Parallel Parking +

    diff --git a/examples/ReentryExample.html b/examples/ReentryExample.html index 89687f0a..b33a8208 100644 --- a/examples/ReentryExample.html +++ b/examples/ReentryExample.html @@ -6,7 +6,7 @@ - Space Shuttle Reentry - ASSET 0.4.0 documentation + Space Shuttle Reentry - ASSET 0.5.0 documentation @@ -181,7 +181,7 @@
    -
    ASSET 0.4.0 documentation
    +
    ASSET 0.5.0 documentation
    @@ -208,7 +208,7 @@
    - ASSET 0.4.0 documentation + ASSET 0.5.0 documentation @@ -227,6 +227,7 @@
  • Optimal Control Problem Tutorial
  • PSIOPT
  • Adaptive Mesh Refinement Tutorial
  • +
  • Interface Enhancements
  • Optimal Control Utilities
  • @@ -833,7 +834,7 @@

    Full Code +

    diff --git a/examples/examples.html b/examples/examples.html index c985f29e..15440673 100644 --- a/examples/examples.html +++ b/examples/examples.html @@ -6,7 +6,7 @@ - Examples - ASSET 0.4.0 documentation + Examples - ASSET 0.5.0 documentation @@ -181,7 +181,7 @@
    -
    ASSET 0.4.0 documentation
    +
    ASSET 0.5.0 documentation
    @@ -208,7 +208,7 @@
    - ASSET 0.4.0 documentation + ASSET 0.5.0 documentation @@ -227,6 +227,7 @@
  • Optimal Control Problem Tutorial
  • PSIOPT
  • Adaptive Mesh Refinement Tutorial
  • +
  • Interface Enhancements
  • Optimal Control Utilities
  • @@ -390,7 +391,7 @@

    Examples

    - + diff --git a/examples/halo.html b/examples/halo.html index 46fbe7cc..a5349e06 100644 --- a/examples/halo.html +++ b/examples/halo.html @@ -6,7 +6,7 @@ - Orbit Family Continuation - ASSET 0.4.0 documentation + Orbit Family Continuation - ASSET 0.5.0 documentation @@ -181,7 +181,7 @@
    -
    ASSET 0.4.0 documentation
    +
    ASSET 0.5.0 documentation
    @@ -208,7 +208,7 @@
    - ASSET 0.4.0 documentation + ASSET 0.5.0 documentation @@ -227,6 +227,7 @@
  • Optimal Control Problem Tutorial
  • PSIOPT
  • Adaptive Mesh Refinement Tutorial
  • +
  • Interface Enhancements
  • Optimal Control Utilities
  • @@ -815,7 +816,7 @@

    Full Code +

    diff --git a/examples/zermelo.html b/examples/zermelo.html index 33f83c66..4beae240 100644 --- a/examples/zermelo.html +++ b/examples/zermelo.html @@ -6,7 +6,7 @@ - Zermelo’s Problem - ASSET 0.4.0 documentation + Zermelo’s Problem - ASSET 0.5.0 documentation @@ -181,7 +181,7 @@
    -
    ASSET 0.4.0 documentation
    +
    ASSET 0.5.0 documentation
    @@ -208,7 +208,7 @@
    - ASSET 0.4.0 documentation + ASSET 0.5.0 documentation @@ -227,6 +227,7 @@
  • Optimal Control Problem Tutorial
  • PSIOPT
  • Adaptive Mesh Refinement Tutorial
  • +
  • Interface Enhancements
  • Optimal Control Utilities
  • @@ -871,7 +872,7 @@

    Full Source Listing +

    diff --git a/examples/zermelolink.html b/examples/zermelolink.html index 77fcfc75..f563ac2e 100644 --- a/examples/zermelolink.html +++ b/examples/zermelolink.html @@ -6,7 +6,7 @@ - Multi-Phase Zermelo’s Problem - ASSET 0.4.0 documentation + Multi-Phase Zermelo’s Problem - ASSET 0.5.0 documentation @@ -181,7 +181,7 @@
    -
    ASSET 0.4.0 documentation
    +
    ASSET 0.5.0 documentation
    @@ -208,7 +208,7 @@
    - ASSET 0.4.0 documentation + ASSET 0.5.0 documentation @@ -227,6 +227,7 @@
  • Optimal Control Problem Tutorial
  • PSIOPT
  • Adaptive Mesh Refinement Tutorial
  • +
  • Interface Enhancements
  • Optimal Control Utilities
  • @@ -776,7 +777,7 @@

    Full Code +

    diff --git a/genindex.html b/genindex.html index e0e13163..bde5a476 100644 --- a/genindex.html +++ b/genindex.html @@ -4,7 +4,7 @@ - Index - ASSET 0.4.0 documentation + Index - ASSET 0.5.0 documentation @@ -179,7 +179,7 @@
    -
    ASSET 0.4.0 documentation
    +
    ASSET 0.5.0 documentation
    @@ -206,7 +206,7 @@
    - ASSET 0.4.0 documentation + ASSET 0.5.0 documentation @@ -225,6 +225,7 @@
  • Optimal Control Problem Tutorial
  • PSIOPT
  • Adaptive Mesh Refinement Tutorial
  • +
  • Interface Enhancements
  • Optimal Control Utilities
  • @@ -381,6 +382,10 @@

    _

  • (asset.VectorFunctions.VectorFunction method)
  • +
  • __delattr__() (in module asset_asrl.OptimalControl.ODEBase) +
  • +
  • __dir__() (in module asset_asrl.OptimalControl.ODEBase) +
  • __eq__() (asset.OptimalControl.ControlModes method)
  • +
  • __format__() (in module asset_asrl.OptimalControl.ODEBase) +
  • __ge__() (asset.VectorFunctions.Element method)
  • +
  • __getattribute__() (in module asset_asrl.OptimalControl.ODEBase) +
  • __getitem__() (asset.VectorFunctions.Arguments method)
  • __index__() (asset.OptimalControl.ControlModes method) @@ -545,6 +562,8 @@

    _

  • (asset.VectorFunctions.VectorFunction method)
  • +
  • __init_subclass__() (in module asset_asrl.OptimalControl.ODEBase) +
  • __int__() (asset.OptimalControl.ControlModes method)
  • __neg__() (asset.VectorFunctions.Arguments method) @@ -717,6 +742,8 @@

    _

  • (asset.VectorFunctions.VectorFunction method)
  • +
  • __new__() (in module asset_asrl.OptimalControl.ODEBase) +
  • __or__() (asset.VectorFunctions.Conditional method)
  • __pow__() (asset.VectorFunctions.Element method) @@ -745,6 +772,10 @@

    _

  • (asset.VectorFunctions.VectorFunction method)
  • +
  • __reduce__() (in module asset_asrl.OptimalControl.ODEBase) +
  • +
  • __reduce_ex__() (in module asset_asrl.OptimalControl.ODEBase) +
  • __repr__() (asset.OptimalControl.ControlModes method)
  • __rgt__() (asset.VectorFunctions.Element method) @@ -813,6 +846,8 @@

    _

  • (asset.VectorFunctions.ScalarFunction method)
  • +
  • __setattr__() (in module asset_asrl.OptimalControl.ODEBase) +
  • __setstate__() (asset.OptimalControl.ControlModes method)
  • +
  • __sizeof__() (in module asset_asrl.OptimalControl.ODEBase) +
  • __str__() (asset.OptimalControl.ControlModes method)
  • __sub__() (asset.VectorFunctions.Arguments method) @@ -857,6 +896,8 @@

    _

  • (asset.VectorFunctions.VectorFunction method)
  • +
  • __subclasshook__() (in module asset_asrl.OptimalControl.ODEBase) +
  • __truediv__() (asset.VectorFunctions.Arguments method)
  • MeshErrFactor (asset.OptimalControl.PhaseInterface property)
  • - - + @@ -2867,7 +2917,7 @@

    X

    - + diff --git a/index.html b/index.html index 276d1746..78a6cdcf 100644 --- a/index.html +++ b/index.html @@ -6,7 +6,7 @@ - ASSET 0.4.0 documentation + ASSET 0.5.0 documentation @@ -181,7 +181,7 @@
    -
    ASSET 0.4.0 documentation
    +
    ASSET 0.5.0 documentation
    @@ -208,7 +208,7 @@
    - ASSET 0.4.0 documentation + ASSET 0.5.0 documentation @@ -227,6 +227,7 @@
  • Optimal Control Problem Tutorial
  • PSIOPT
  • Adaptive Mesh Refinement Tutorial
  • +
  • Interface Enhancements
  • Optimal Control Utilities
  • @@ -306,6 +307,7 @@

    Welcome to ASSET’s documentation!Optimal Control Problem Tutorial
  • PSIOPT
  • Adaptive Mesh Refinement Tutorial
  • +
  • Interface Enhancements
  • Optimal Control Utilities
  • @@ -345,9 +347,12 @@

    Citation

    }

    -

    If you have questions, please email any of:

    +

    If you have questions, please email any of the following or post an issue on the GitHub:

    -

    jbpezent@crimson.ua.edu

    +

    ajhouin@crimson.ua.edu

    +

    cgsandel@crimson.ua.edu

    +

    rsood@eng.ua.edu

    +

    jbpezent@crimson.ua.edu

    jdsikes1@crimson.ua.edu

    wgledbetter@crimson.ua.edu

    @@ -359,7 +364,7 @@

    Funding Acknowledgment