コード例 #1
0
ファイル: add_functions_tests.py プロジェクト: qwilka/pflacs
 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
コード例 #2
0
ファイル: pcontain_overall.py プロジェクト: qwilka/PDover2t
              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()
コード例 #3
0
                    "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."},
コード例 #4
0
ファイル: add_functions_tests.py プロジェクト: qwilka/pflacs
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)
コード例 #5
0
    }

    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
    #                 }    )
コード例 #6
0
        _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")
コード例 #7
0
ファイル: simple_cube_example.py プロジェクト: qwilka/pflacs
    "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
コード例 #8
0
                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()