def make_calc_branch(ndata): _parent = None for _d in ndata: _name = _d.get("name") _paras = _d.get("parameters", None) _funcname = _d.get("funcname", None) _argmap = _d.get("argmap", None) _kwargs = _d.get("kwargs", None) _n = Calc(_name, _parent, parameters=_paras, funcname=_funcname, argmap=_argmap, kwargs=_kwargs) _parent = _n return _n._root
parent=basecase, data={"desc": "This is the 1st child loadcase."}) gc1 = Premise("gchild lc1", parent=lc1, data={"desc": "This is the 1st child loadcase."}) lc2 = Premise("Load case 2", parent=basecase, data={"desc": "This is the 2nd child loadcase."}) basecase.plugin_func("pressure_containment_all", "pdover2t.dnvgl_st_f101") lc1.rho_cont = np.linspace(100, 1000, 10) print("lc1.rho_cont", lc1.rho_cont) resdict = lc1.pressure_containment_all() print(resdict["p_cont_uty"]) lc1_pcont = Premise("GROUP: lc1 press contain", parent=lc1, data={"desc": "Group lc1 pressure contain calcs."}) _uty = lc1_pcont.pressure_containment_all(rho_cont=100) print("lc1_pcont (rho_cont=100) ", _uty) lc2_pcont = Calc("CallNode: lc2 press contain", parent=lc2, data={"desc": "Group lc2 pressure contain calcs."}, funcname="pressure_containment_all") lc2_pcont.rho_cont = np.linspace(100, 1000, 10) lc2_pcont() basecase.savefile()
"LC": 2, "SC": "high", "D": 0.6172 + 2*0.0242, "t": 0.0242, }, data={"desc": "P-01 section 1, KP 0-0.3."}) rootnode.plugin_func("pipe_physical_props", "pdover2t", argmap={ "Do": "D", "WT": "t", }) rootnode.plugin_func("pressure_containment_all", "pdover2t.dnvgl_st_f101") rootnode.plugin_func("pipe_collapse_all", "pdover2t.dnvgl_st_f101") lc1_pprops = Calc("Calc: pipe properties", parent=P01_1, data={"desc": "pipe physical properties."}, funcname="pipe_physical_props") lc1_cont = Calc("Calc: pressure containment", parent=P01_1, parameters={ "h_l": -370, }, data={"desc": "pressure containment calcs."}, funcname="pressure_containment_all") lc1_collapse = Calc("Calc: pipe collapse", parent=P01_1, parameters={ "h_l": -370, }, data={"desc": "pipe collapse calcs."},
rootnode = Premise("Root Node", parameters={ **params1, }, data={"desc": "Top-level parameters."}, vnpkl_fpath="add_tests.vn3") base1 = Premise("Base 1", parent=rootnode) rootnode.plugin_func(addAB) rootnode.plugin_func(addCD, argmap={"return":"CplusD"}) if True: addab = Calc("Calc: addAB", parent=rootnode, data={"desc": "First calc."}, funcname="addAB") addcd = Calc("Calc: addCD", parent=addab, parameters={ **params2, }, data={"desc": "2nd calc."}, funcname="addCD") total = Calc("Calc: add results", parent=addcd, data={"desc": "add results"}, funcname="addAB", argmap={"a":"AplusB", "b":"CplusD", "return":"TOTAL"}) base1.add_param("TOTAL", linkid=total._nodeid) base1.add_param("CplusD", linkid=addcd._nodeid)
} basecase = Premise("Pipe study base case.", parameters=study_parameters) basecase.plugin_func(pipe_hoop_stress) basecase.plugin_func(allowable_stress_unity_check) #basecase.plugin_func("pressure_containment_all", "pdover2t.dnvgl_st_f101") #basecase.plugin_func(pdover2t.dnvgl_st_f101.pressure_containment_all) lc1 = Premise( "LoadCase1, pressure 15 bar.", basecase, parameters={ "P": 15 * 10**5, # pipe internal pressure in Pa }) lc1_pstress = Calc( "Calc pipe stress", lc1, funcname="pipe_hoop_stress", ) lc1_unity = Calc("Stress unity check", lc1_pstress, funcname="allowable_stress_unity_check", argmap={ "sigma": "_pipe_hoop_stress", "allowable": "ys", "df": "design_factor", }) # lc2 = Premise("LoadCase2, pressure 20 bar.", basecase) # lc3 = Premise("LoadCase3, pressure 25 bar.", basecase, # parameters={ # "P": 25 * 10**5, # pipe internal pressure in Pa # } )
_funcname = _d.get("funcname", None) _argmap = _d.get("argmap", None) _n = Calc(_name, _parent, parameters=_paras, funcname=_funcname, argmap=_argmap) _parent = _n return _n._root calctree = make_calc_branch(pipemass_branch) P101 = Premise( "P101", parameters=P101_data, data={ "desc": "Top-level field details, environmental and universal parameters." }) P101.plugin_func("calc_pipe_Di", "pdover2t.pipe") P101.plugin_func("pipe_CSA", "pdover2t.pipe") P101_z1 = Premise("P101 zone1", parent=P101) P101_z2 = Premise("P101 zone2", parent=P101) #P101.plugin_func("calc_pipe_Di", "pdover2t.pipe") calc_joint_mass = Calc("calc Di", parent=P101_z1, funcname="calc_pipe_Di")
"b": 5, "h": 3.5, }) basecase.plugin_func(rectangle_area) basecase.plugin_func(box_volume) print(f"Base-case rectange area = {basecase.rectangle_area()}") print(f"Base-case cube volume = {basecase.box_volume()}") parastudy = Premise("Parameter study", parent=basecase, parameters={ "w": np.array([1.0, 1.35, 2.0, 4.5]), "b": np.linspace(2.2, 5.5, 4), "h": 10.0, }) rect = Calc("Study rectangle area", parent=parastudy, funcname="rectangle_area") Calc("Study cube volume", parent=rect, funcname="box_volume") rect() rect.df box = rect.get_child_by_name("Study cube volume") box() box.df
parent=P01, parameters={ "KP": [0.3, 15.0], "h_l": -420, "LC": 1, "D": 0.6172 + 2*0.0242, "t": 0.0242, }, data={"desc": "P-01 section 2, KP 0.3-15."}) P01_3 = Premise("P-01 section 3, KP 15-79.7", parent=P01, parameters={ "KP": [15.0, 79.7], "LC": 1, "D": 0.6172 + 2*0.0214, "t": 0.0214, }, data={"desc": "P-01 section 3, KP 15-79.7."}) rootnode.plugin_func("pressure_containment_all", "pdover2t.dnvgl_st_f101") rootnode.plugin_func("pipe_collapse_all", "pdover2t.dnvgl_st_f101") lc1_cont = Calc("Calc: lc2 press contain", parent=P01_1, parameters={ "h_l": -370, }, data={"desc": "Group lc2 pressure contain calcs."}, funcname="pressure_containment_all") rootnode.savefile()