| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | __title__ = "FreeCAD FEM _element fluid 1D document object" |
| | __author__ = "Ofentse Kgoa" |
| | __url__ = "https://www.freecad.org" |
| |
|
| | |
| | |
| | |
| |
|
| | from . import base_femelement |
| |
|
| |
|
| | class ElementFluid1D(base_femelement.BaseFemElement): |
| | """ |
| | The element_fluid1D object |
| | """ |
| |
|
| | Type = "Fem::ElementFluid1D" |
| |
|
| | known_fluid_types = ["Liquid"] |
| | |
| | |
| | known_liquid_types = [ |
| | "PIPE MANNING", |
| | "PIPE ENLARGEMENT", |
| | "PIPE CONTRACTION", |
| | "PIPE INLET", |
| | "PIPE OUTLET", |
| | "PIPE ENTRANCE", |
| | "PIPE DIAPHRAGM", |
| | "PIPE BEND", |
| | "PIPE GATE VALVE", |
| | "LIQUID PUMP", |
| | "PIPE WHITE-COLEBROOK", |
| | ] |
| | known_gas_types = ["NONE"] |
| | known_channel_types = ["NONE"] |
| |
|
| | def __init__(self, obj): |
| | super().__init__(obj) |
| |
|
| | obj.addProperty( |
| | "App::PropertyEnumeration", "SectionType", "FluidSection", "select fluid section type" |
| | ) |
| | obj.setPropertyStatus("SectionType", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyEnumeration", |
| | "LiquidSectionType", |
| | "LiquidSection", |
| | "select liquid section type", |
| | ) |
| | obj.setPropertyStatus("LiquidSectionType", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyArea", |
| | "ManningArea", |
| | "LiquidManning", |
| | "set area of the manning fluid section", |
| | ) |
| | obj.setPropertyStatus("ManningArea", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyLength", |
| | "ManningRadius", |
| | "LiquidManning", |
| | "set hydraulic radius of manning fluid section", |
| | ) |
| | obj.setPropertyStatus("ManningRadius", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyFloat", |
| | "ManningCoefficient", |
| | "LiquidManning", |
| | "set coefficient of manning fluid section", |
| | ) |
| | obj.setPropertyStatus("ManningCoefficient", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyArea", |
| | "EnlargeArea1", |
| | "LiquidEnlargement", |
| | "set initial area of the enlargement fluid section", |
| | ) |
| | obj.setPropertyStatus("EnlargeArea1", "LockDynamic") |
| | obj.addProperty( |
| | "App::PropertyArea", |
| | "EnlargeArea2", |
| | "LiquidEnlargement", |
| | "set enlarged area of enlargement fluid section", |
| | ) |
| | obj.setPropertyStatus("EnlargeArea2", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyArea", |
| | "ContractArea1", |
| | "LiquidContraction", |
| | "set initial area of the contraction fluid section", |
| | ) |
| | obj.setPropertyStatus("ContractArea1", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyArea", |
| | "ContractArea2", |
| | "LiquidContraction", |
| | "set contracted area of contraction fluid section", |
| | ) |
| | obj.setPropertyStatus("ContractArea2", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyFloat", |
| | "InletPressure", |
| | "LiquidInlet", |
| | "set inlet pressure for fluid section", |
| | ) |
| | obj.setPropertyStatus("InletPressure", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyFloat", |
| | "OutletPressure", |
| | "LiquidOutlet", |
| | "set outlet pressure for fluid section", |
| | ) |
| | obj.setPropertyStatus("OutletPressure", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyFloat", |
| | "InletFlowRate", |
| | "LiquidInlet", |
| | "set inlet mass flow rate for fluid section", |
| | ) |
| | obj.setPropertyStatus("InletFlowRate", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyFloat", |
| | "OutletFlowRate", |
| | "LiquidOutlet", |
| | "set outlet mass flow rate for fluid section", |
| | ) |
| | obj.setPropertyStatus("OutletFlowRate", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyBool", |
| | "InletPressureActive", |
| | "LiquidInlet", |
| | "activates or deactivates inlet pressure for fluid section", |
| | ) |
| | obj.setPropertyStatus("InletPressureActive", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyBool", |
| | "OutletPressureActive", |
| | "LiquidOutlet", |
| | "activates or deactivates outlet pressure for fluid section", |
| | ) |
| | obj.setPropertyStatus("OutletPressureActive", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyBool", |
| | "InletFlowRateActive", |
| | "LiquidInlet", |
| | "activates or deactivates inlet flow rate for fluid section", |
| | ) |
| | obj.setPropertyStatus("InletFlowRateActive", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyBool", |
| | "OutletFlowRateActive", |
| | "LiquidOutlet", |
| | "activates or deactivates outlet flow rate for fluid section", |
| | ) |
| | obj.setPropertyStatus("OutletFlowRateActive", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyArea", |
| | "EntrancePipeArea", |
| | "LiquidEntrance", |
| | "set the pipe area of the entrance fluid section", |
| | ) |
| | obj.setPropertyStatus("EntrancePipeArea", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyArea", |
| | "EntranceArea", |
| | "LiquidEntrance", |
| | "set the entrance area of the entrance fluid section", |
| | ) |
| | obj.setPropertyStatus("EntranceArea", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyArea", |
| | "DiaphragmPipeArea", |
| | "LiquidDiaphragm", |
| | "set the pipe area of the diaphragm fluid section", |
| | ) |
| | obj.setPropertyStatus("DiaphragmPipeArea", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyArea", |
| | "DiaphragmArea", |
| | "LiquidDiaphragm", |
| | "set the diaphragm area of the diaphragm fluid section", |
| | ) |
| | obj.setPropertyStatus("DiaphragmArea", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyArea", |
| | "BendPipeArea", |
| | "LiquidBend", |
| | "set pipe area of the bend fluid section", |
| | ) |
| | obj.setPropertyStatus("BendPipeArea", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyFloat", |
| | "BendRadiusDiameter", |
| | "LiquidBend", |
| | "set ratio of bend radius over pipe diameter of the bend fluid section", |
| | ) |
| | obj.setPropertyStatus("BendRadiusDiameter", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyFloat", |
| | "BendAngle", |
| | "LiquidBend", |
| | "set bend angle of the bend fluid section", |
| | ) |
| | obj.setPropertyStatus("BendAngle", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyFloat", |
| | "BendLossCoefficient", |
| | "LiquidBend", |
| | "set loss coefficient of the bend fluid section", |
| | ) |
| | obj.setPropertyStatus("BendLossCoefficient", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyArea", |
| | "GateValvePipeArea", |
| | "LiquidGateValve", |
| | "set pipe area of the gate valve fluid section", |
| | ) |
| | obj.setPropertyStatus("GateValvePipeArea", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyFloat", |
| | "GateValveClosingCoeff", |
| | "LiquidGateValve", |
| | "set closing coefficient of the gate valve fluid section", |
| | ) |
| | obj.setPropertyStatus("GateValveClosingCoeff", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyFloatList", |
| | "PumpFlowRate", |
| | "LiquidPump", |
| | "set the pump characteristic flow rate of the pump fluid section", |
| | ) |
| | obj.setPropertyStatus("PumpFlowRate", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyFloatList", |
| | "PumpHeadLoss", |
| | "LiquidPump", |
| | "set the pump characteristic head loss of the pump fluid section", |
| | ) |
| | obj.setPropertyStatus("PumpHeadLoss", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyArea", |
| | "ColebrookeArea", |
| | "LiquidColebrooke", |
| | "set pipe area of the colebrooke fluid section", |
| | ) |
| | obj.setPropertyStatus("ColebrookeArea", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyLength", |
| | "ColebrookeRadius", |
| | "LiquidColebrooke", |
| | "set hydraulic radius of the colebrooke fluid section", |
| | ) |
| | obj.setPropertyStatus("ColebrookeRadius", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyLength", |
| | "ColebrookeGrainDiameter", |
| | "LiquidColebrooke", |
| | "set grain diameter of the colebrooke fluid section", |
| | ) |
| | obj.setPropertyStatus("ColebrookeGrainDiameter", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyFloat", |
| | "ColebrookeFormFactor", |
| | "LiquidColebrooke", |
| | "set coefficient of the colebrooke fluid section", |
| | ) |
| | obj.setPropertyStatus("ColebrookeFormFactor", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyEnumeration", "GasSectionType", "GasSection", "select gas section type" |
| | ) |
| | obj.setPropertyStatus("GasSectionType", "LockDynamic") |
| |
|
| | obj.addProperty( |
| | "App::PropertyEnumeration", |
| | "ChannelSectionType", |
| | "ChannelSection", |
| | "select channel section type", |
| | ) |
| | obj.setPropertyStatus("ChannelSectionType", "LockDynamic") |
| |
|
| | |
| | obj.SectionType = ElementFluid1D.known_fluid_types |
| | obj.SectionType = "Liquid" |
| | obj.LiquidSectionType = ElementFluid1D.known_liquid_types |
| | obj.LiquidSectionType = "PIPE INLET" |
| | obj.GasSectionType = ElementFluid1D.known_gas_types |
| | obj.GasSectionType = "NONE" |
| | obj.ChannelSectionType = ElementFluid1D.known_channel_types |
| | obj.ChannelSectionType = "NONE" |
| | obj.ManningArea = 10.0 |
| | obj.ManningRadius = 1.0 |
| | obj.ManningCoefficient = 0.0015 |
| | obj.EnlargeArea1 = 10.0 |
| | obj.EnlargeArea2 = 20.0 |
| | obj.ContractArea1 = 20.0 |
| | obj.ContractArea2 = 10.0 |
| | obj.EntrancePipeArea = 20.0 |
| | obj.EntranceArea = 20.0 |
| | obj.DiaphragmPipeArea = 20.0 |
| | obj.DiaphragmArea = 20.0 |
| | obj.BendPipeArea = 20.0 |
| | obj.BendRadiusDiameter = 1.0 |
| | obj.BendAngle = 0.0 |
| | obj.BendLossCoefficient = 0.0 |
| | obj.GateValvePipeArea = 20.0 |
| | obj.GateValveClosingCoeff = 0.125 |
| | obj.PumpFlowRate = [0, 1.04e-04, 2.08e-4, 3.13e-4, 4.17e-4] |
| | obj.PumpHeadLoss = [30, 29.17, 26.67, 23.33, 18.33] |
| | obj.ColebrookeArea = 20.0 |
| | obj.ColebrookeRadius = 1.0 |
| | obj.ColebrookeGrainDiameter = 0.0025 |
| | obj.ColebrookeFormFactor = 1.0 |
| | obj.InletPressure = 1.0 |
| | obj.OutletPressure = 1.0 |
| | obj.InletFlowRate = 1.0 |
| | obj.OutletFlowRate = 1.0 |
| | obj.InletPressureActive = True |
| | obj.OutletPressureActive = True |
| | obj.InletFlowRateActive = False |
| | obj.OutletFlowRateActive = False |
| |
|