Skip to content

Easily model and obtain analytic derivatives of arbitrarily complex coupled systems

License

Notifications You must be signed in to change notification settings

byuflowlab/CoupledSystems.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CoupledSystems

Easily model and obtain analytic derivatives of arbitrarily complex coupled systems

Author: Taylor McDonnell

CoupledSystems is a modeling framework for easily modeling and obtaining exact derivatives of arbitrarily complex coupled systems. It is similar in nature to OpenMDAO, but relies on a different theoretical foundation for propagating derivatives (and is written in Julia!). It is also designed to automatically interface with a variety of packages in the Julia ecosystem to make obtaining derivatives and solving nonlinear systems of equations relatively painless.

Package Features

  • Can be used to:
    • Perform mixed-mode automatic differentiation
    • Construct objective and constraint functions (with exact derivatives) for gradient-based optimization.
    • Easily construct monolithic coupled systems of equations from an arbitrary number of systems of equations.
    • Perform efficient sensitivity analyses and obtain exact derivatives (to machine precision)
  • Automatically calculates partial derivatives using:
    • Finite Differencing (Implemented using FiniteDiff)
      • Forward
      • Central
      • Complex Step
    • Automatic Differentiation
    • User-defined analytic calculations
  • Automatically calculates total derivatives using the
    • Chain Rule (for explicit systems)
      • Forward
      • Reverse
    • Analytic Sensitivity Equations (for implicit systems)
      • Direct
      • Adjoint
  • Multiple solvers available for solving implicit systems
    • Trust Region (Implemented using NLsolve)
    • Newton's Method with Line Search (Implemented using NLsolve)
    • User-defined solvers
  • Efficient and convenient calling interface
    • Output only, derivative only, and/or combined output and derivative calculation functions
    • Non-allocating interface to reduce/eliminate run-time allocations
    • Allocating interface for derivative verification using ForwardDiff
    • Only calculates new values/derivatives for each component/subcomponent if inputs have been updated (unless otherwise specified)

Installation

Enter the package manager by typing ] and then run the following:

pkg> add CoupledSystems

Usage

See the documentation

References

[1] Martins, Joaquim R. R. A., and Ning, Andrew, Engineering Design Optimization, Cambridge University Press, 2021.

About

Easily model and obtain analytic derivatives of arbitrarily complex coupled systems

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages