Skip to content

Instantly share code, notes, and snippets.

@bbrelje
bbrelje / tank_opt.py
Created December 2, 2020 23:24
Carbon fiber H2 tank optimization problem
import numpy as np
from matplotlib import pyplot as plt
import openmdao.api as om
def rotations(theta):
# define rotation matrices per http://web.mit.edu/course/3/3.11/www/modules/laminates.pdf
s = np.sin(theta)
c = np.cos(theta)
# stress in fiber axis = A * stress in xy axis
@bbrelje
bbrelje / tank_weight_opt.py
Created December 8, 2020 22:34
Validate simple laminate model versus finite element model from Argonne (10.1016/j.ijhydene.2017.08.123)
import numpy as np
from matplotlib import pyplot as plt
import openmdao.api as om
def rotations(theta):
# define rotation matrices per http://web.mit.edu/course/3/3.11/www/modules/laminates.pdf
s = np.sin(theta)
c = np.cos(theta)
# stress in fiber axis = A * stress in xy axis
@bbrelje
bbrelje / weird.py
Created March 2, 2021 03:27
Weird promote order issue
import openmdao.api as om
class MyGroupAsteriskFirst(om.Group):
def setup(self):
self.add_subsystem('foo', om.IndepVarComp('thrust', val=2.0), promotes_outputs=['*'])
self.add_subsystem('blah', om.ExecComp('a=b+c',a={'units':'kg','value':1},b={'units':'kg','value':1},c={'units':'kg','value':1}), promotes_inputs=['*',('c','thrust')])
class MyGroupAsteriskLast(om.Group):
def setup(self):
@bbrelje
bbrelje / color_cs.py
Created March 5, 2021 00:41
Manual colored CS
class SimpleHose(om.ExplicitComponent):
"""
A coolant hose used to track pressure drop and weight in long hose runs.
Inputs
------
hose_diameter : float
Inner diameter of the hose (scalar, m)
hose_length
Length of the hose (scalar, m)