IFM Classes
ifm.Budget
- class ifm.Budget
ifm.BudgetResultEx
- class ifm.BudgetResultEx
ifm.FemMesh
- class ifm.FemMesh
The FemMesh class provides methods for the type “mesh”. The mesh type can be derived from an existing model or a mesh created from a cross-section.
See also
ifm.FeflowDoc.getFemMesh,ifm.FeflowDoc.createMeshFromSurfaceLine,ifm.FeflowDoc.createMeshFromPlane- getCoor(node)
Retrieve the coordinates of node
- Parameters:
node (int) – Node ID
- Returns:
X, Y, Z coordinates Physical unit is [m]
- Return type:
float (x3)
- getDualNodes()
get list of Dual node IDs
- Returns:
list of Dual node IDs
- Return type:
list[int]
- getExtent()
get extent of the new mesh
- Returns:
xmin,xmax,ymin,ymax,zmin,zmax Physical unit is [m]
- Return type:
double (x6)
- getLayerOffset(layer)
get the first element ID of a specific layer
- Parameters:
layer (int) – layer no. (0-based)
- Returns:
element ID of first element in layer
- Return type:
int
- getNodeFromDual(node)
get Base node ID from Dual node ID
- Parameters:
node (int) – Dual node ID (Dual node ID’s are appended to node IDs, therefore they usually occupy the end of the lsit of nodes)
- Returns:
Base node ID
- Return type:
int
- getNodes(element)
get node numbers of an element in new mesh
- Parameters:
element (int) – Element ID
- Returns:
list of adjacent nodes
- Return type:
list
- getNumberOfDimensions()
get Number of dimensions of the mesh (2D or 3D)
- Returns:
dimensions
- Return type:
int
- getNumberOfDualNodes()
get number of Dual nodes in present model
- Returns:
number of Dual nodes
- Return type:
int
- getNumberOfElementNodes(element)
get number of adjacent nodes per element
- Parameters:
element (int) – Element ID
- Returns:
number of nodes
- Return type:
int
- getNumberOfElementNodes2D(element)
get number of adjacent nodes per element in 2D
- Parameters:
element (int) – Element ID
- Returns:
number of nodes
- Return type:
int
- getNumberOfElements()
get number of elements in the whole mesh
- Returns:
number of elements
- Return type:
int
- getNumberOfElementsPerLayer()
retrieve number of elements per layer in layered models
- Returns:
number of elements
- Return type:
int
- getNumberOfLayers()
retrieve number of layers in layered models
- Returns:
number of layers
- Return type:
int
- getNumberOfNodes()
retrieve number of nodes in the whole mesh
- Returns:
number of nodes
- Return type:
int
- getNumberOfNodesPerElement(element)
get the number of adjacent nodes of a specific element
- Parameters:
element (int) – Element ID
- Returns:
number of adjacent nodes
- Return type:
int
- getNumberOfNodesPerElement2D(element)
get the number of adjacent nodes of a specific element
- Parameters:
element (int) – Element ID
- Returns:
number of adjacent nodes in 2D
- Return type:
int
- getNumberOfNodesPerSlice()
number of nodes per slice
- Returns:
number of nodes per slice
- Return type:
int
- getNumberOfSlices()
number of slices
- Returns:
number of slices
- Return type:
int
- getOrigin()
get origin of local coordinate system in global coordinates
- Returns:
x, y, z coordinates of the local origin
- Return type:
float (x3)
- getSliceOffset(slice)
get the first node ID of a specific slice
- Parameters:
slice (int) – slice no. (0-based)
- Returns:
node ID of first element in slice
- Return type:
int
- hasHexahedra()
returns True if the mesh contains hexahedra
- Return type:
bool
- hasMixedElementTypes(xxx)
- Parameters:
parameters) ((list of) – (explanation of parameter)
- Returns:
(explanation of returns)
- Return type:
(list of returns)
- hasTetrahedra()
returns True if the mesh contains tetrahedra
- Return type:
bool
- isContinuous(xxx)
- Parameters:
parameters) ((list of) – (explanation of parameter)
- Returns:
(explanation of returns)
- Return type:
(list of returns)
- isParabolic(xxx)
- Parameters:
parameters) ((list of) – (explanation of parameter)
- Returns:
(explanation of returns)
- Return type:
(list of returns)
- isPrismatic()
returns True if the mesh consists only of prisms (only layered meshes)
- Return type:
bool
ifm.Fractures
- class ifm.Fractures
The FractureDoc class provides access to fracture-related functionality of a FEFLOW model. It allows managing fracture groups, assigning fracture elements, and setting or querying fracture parameters.
Editing operations on fractures must be bracketed by beginEdit() and endEdit().
- beginEdit()
Begin an edit session for fracture data.
This function must be called before creating, modifying, or deleting fracture groups or fracture elements.
See also
- createFractureGroup(name, indices, selection_type, law[, node_type])
Create a new fracture group.
- Parameters:
name (str) – Name of the fracture group. Must be unique.
indices (list of int) – List of Edges/Faces indices used to define the group.
selection_type (int) – Selection type used to interpret indices. One of: {ifm.Enum.SEL_FACES, ifm.Enum.SEL_EDGES}
law (int) – Fracture flow law. One of: {ifm.Enum.DARCY_LAW, ifm.Enum.HP_LAW, ifm.Enum.MANNING_LAW}
node_type (int, optional) – Fracture node type. One of: {ifm.Enum.FRAC_COMMON_NODE_TYPE, ifm.Enum.FRAC_DUAL_NODE_TYPE}
- Returns:
ID of the newly created fracture group, or -1 if creation failed.
- Return type:
int
- deleteFractureGroups(indices)
Delete fracture groups by ID.
- Parameters:
indices (list of int) – List of fracture group IDs to be deleted.
See also
- endEdit()
End an edit session for fracture data.
This function finalizes all changes performed since beginEdit() was called.
See also
- findFractureGroup(name)
Find the ID of a fracture group by its name.
- Parameters:
name (str) – Name of the fracture group.
- Returns:
ID of the fracture group, or -1 if not found.
- Return type:
int
See also
- getFractureElements([group | name])
Retrieve fracture elements belonging to a fracture group.
- Parameters:
group (int, optional) – Fracture group ID.
name (str, optional) – Fracture group name.
- Returns:
List of fracture element indices belonging to the group.
- Return type:
list of int
- getFractureLaw(group)
Retrieve the flow law assigned to a fracture group.
- Parameters:
group (int) – Fracture group ID.
- Returns:
Fracture flow law. One of: {ifm.Enum.DARCY_LAW, ifm.Enum.HP_LAW, ifm.Enum.MANNING_LAW}
- Return type:
int
See also
setFracLaw,createFractureGroup
- getNodeType(group)
Retrieve the node type used by a fracture group.
- Parameters:
group (int) – Fracture group ID.
- Returns:
Fracture node type. One of: {ifm.Enum.FRAC_COMMON_NODE_TYPE, ifm.Enum.FRAC_DUAL_NODE_TYPE}
- Return type:
int
See also
- getNumberOfFractureGroups()
Retrieve the number of existing fracture groups.
- Returns:
Number of fracture groups.
- Return type:
int
- getParamValues(param[, id | name])
Retrieve parameter values for fracture elements or groups.
- Parameters:
param (IfmParameter) – Parameter identification.
id (int, optional) – Fracture group ID.
name (str, optional) – Fracture group name.
- Returns:
Parameter values.
- Return type:
list of float
See also
- modifyFractureGroup(group_id, indices, selection_type, operation)
Modify the content of an existing fracture group.
- Parameters:
group_id (int) – ID of the fracture group.
indices (list of int) – Indices to be processed.
selection_type (int) – Selection type used to interpret indices.
operation (int) – Modification operation. One of: {ifm.Enum.SOP_SET, ifm.Enum.UNION, ifm.Enum.INTERSECT, ifm.Enum.SUBTRACT}
See also
- setParamValues(param, id | name, values[, indices])
Set parameter values for fracture elements or fracture groups.
- Parameters:
param (IfmParameter) – Parameter identification.
id (int, optional) – Fracture group ID.
name (str, optional) – Fracture group name.
values (list of float) – Parameter values to be assigned.
indices (list of int, optional) – Optional list of fracture element indices.
See also
ifm.LookupTable
- class ifm.LookupTable
The LookupTable class provides access to the LookupTable of a FEFLOW model (fem or dac file). It can be obtained by calling the ifm.FeflowDoc.getLookupTable method.
See also
Examples
>>> lookup = doc.getLookupTable()
- addMaterial(material_name)
Adds a material (=row) to the Lookup Table.
- Parameters:
material_name (str) – the name of the material
- Returns:
The material_id of the material created.
- Return type:
int
Examples
>>> lookup.addMaterial("Sand") >>> lookup.addMaterial("Clay") >>> lookup.addMaterial("Bedrock")
- findMaterial(material_name)
Returns the material_id of the material with the given name.
- Parameters:
material_name (str) – the name of the material
- Returns:
the material ID, or -1 if material was not found.
- Return type:
int
Examples
>>> mat_id = lookup.findMaterial("Sand") >>> print(mat_id) >>> 1
- getMaterialName(material_id)
Returns the name of the material given by the material_id.
- Parameters:
material_id (int) – The material id
- Returns:
The name of the material
- Return type:
str
- getMaterials()
Returns a dictionary with all material names and material ids.
- Returns:
dictionary { str : int } with name : id pairs
- Return type:
dict
Examples
>>> print(lookup.getMaterials()) >>> {'Sand': 1, 'Clay': 2, 'Bedrock': 3}
- getProperties(material_id)
Returns a dictionary with all properties defined for the material with the given ID. The key of each entry is the parameter ID (ifm.Enum.P_*) and the value of the parameter.
- Parameters:
material_id (int) – The material id
- Returns:
dictionary { int : float } with parameter_id : parameter_value pairs, where the parameter_id corresponds to the constants of ifm.Enum.P_*.
- Return type:
dict
Examples
>>> print(lookup.getProperties(lookup.findMaterial("Clay"))) >>> {100: 1e-06}
- getPropertyValue(material_id, parameter)
Returns the value of a parameter given by the material_id and the parameter ID (ifm.Enum.P_*).
- Parameters:
material_id (int) – The material id
parameter (int) – The parameter identifier (as defined in ifm.Enum.P_*)
- Returns:
the parameter value.
- Return type:
float
Examples
>>> value = lookup.getPropertyValue(lookup.findMaterial("Clay"), ifm.Enum.P_COND) >>> print(value) >>> 1e-06
- hasProperty(material_id, parameter)
Checks if the value of a parameter given by the material_id and the parameter ID (ifm.Enum.P_*) exists in the table.
- Parameters:
material_id (int) – The material id
parameter (int) – The parameter identifier (as defined in ifm.Enum.P_*)
- Returns:
True if value exists, False otherwise.
- Return type:
bool
- moveMaterial(material_id, new_position)
Moves a material to a new position in the lookup table.
- Parameters:
material_id (int) – The material id
new_position (int) – The new position of the material in the table. Indexing starts with zero.
- removeMaterial(material_id)
Removes a material (=row of the lookup table).
- Parameters:
material_id (int) – The material id
Examples
>>> lookup.removeMaterial(1)
>>> lookup.removeMaterial(lookup.findMaterial("Sand"))
- removeProperty(material_id, parameter)
Removes a property of a material from the table.
- Parameters:
material_id (int) – The material id
parameter (int) – The parameter identifier (as defined in ifm.Enum.P_*)
Examples
>>> lookup.removeProperty(lookup.findMaterial("Clay"), ifm.Enum.P_COND)
- setMaterialId(material_id, new_material_id)
Sets a new material_id for a specified material.
- Parameters:
material_id (int) – The material id
new_material_id (int) – The material id
Examples
>>> lookup.setMaterialId(lookup.findMaterial("Sand"), 10)
- setPropertyValue(material_id, parameter, values)
Sets or overwrites a new property value for a given material and parameter.
- Parameters:
material_id (int) – The material id
parameter (int) – The parameter identifier (as defined in ifm.Enum.P_*)
value (float) – The value to be set.
Examples
>>> lookup.setPropertyValue(lookup.findMaterial("Clay"), ifm.Enum.P_COND, 1e-6)
ifm.MLWInfo
- class ifm.MLWInfo
- getBottomElevation()
Get Bottom elevation of multi-layer well [].
- Returns:
bottom elevation in [m]
- Return type:
float
- getBottomNode()
Biggest node index with z[n] > topElevation
- Returns:
index of bottom node
- Return type:
int
- getId()
get index of multi-layer well
- Returns:
index of multi-layer well
- Return type:
int
- getName()
Name attribute of multi-layer well
- Returns:
name of multi-layer well
- Return type:
str
- getRadius()
Radius of multi-layer well [m]
- Returns:
radius of multi-layer well
- Return type:
float
- getTopElevation()
Top elevation of multi-layer well [m]
- Returns:
top elevation of multi-layer well
- Return type:
float
- getTopNode()
Smallest node index with z[n] < topElevation
- Returns:
top node of multi-layer well
- Return type:
int
ifm.NodalBudget
- class ifm.NodalBudget
- getBorderIn()
Border budget component (1st + 2nd + 3rd kind BCs)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getBorderOut()
Border budget component (1st + 2nd + 3rd kind BCs)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getBulkIn()
Distributed source/sink budget component
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getBulkOut()
Distributed source/sink budget component
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getCauchyIn()
BC Cauchy budget component (3rd kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getCauchyOut()
BC Cauchy budget component (3rd kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getConvIn()
Convective part
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getConvOut()
Convective part
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getDirichletIn()
BC Dirichlet budget component (1st kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getDirichletOut()
BC Dirichlet budget component (1st kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getNetIn()
Net imbalance: border + wells + bulk + stor
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getNetOut()
Net imbalance: border + wells + bulk + stor
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getNeumannIn()
BC Neumann budget component (2nd kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getNeumannOut()
BC Neumann budget component (2nd kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getNodalValues()
Nodal budget values
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getStorIn()
Storage change (Storativity/Compressibility/Capacity budget component)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getStorOut()
Storage change (Storativity/Compressibility/Capacity budget component)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getWellIn()
Well budget component (4th kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getWellOut()
Well budget component (4th kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
ifm.Parameter
- class ifm.Parameter
Class representing a FEFLOW Parameter.
The class does not provide functionality but can be used as a parameter type for a number of IFM API functions.
See also
Examples
>>> par = doc.getParameter(ifm.Enum.P_CONC, "Potassium") # get the concentration of the species Potassium. >>> values = doc.getParamValues(par) # use the object as argument
ifm.ParticleTracer
- class ifm.ParticleTracer
Class providing access to FEFLOW’s particle Tracing functionality.
See also
- generatePathLine(x, y[, z])
Generate pathline from seed point using current settings.
- Parameters:
x (float) – x-coordinate of the seed point.
y (float) – y-coordinate of the seed point.
z (float) – z-coordinate of the seed point. 3D problems only.
- Returns:
The trajectory of the particle as a list of (x, y, [z], Tau) tuples. z is returned for 3D problems only. Travel time Tau is relative to current time step for streamlines / random walks (tracking mode = ifm.Enum.PT_MODE_STEADY) and relative to start time set by ParticleTracer.setInitialTime() for pathlines / random walk peridos (tracking mode = ifm.Enum.PT_MODE_UNSTEADY) Returns None if track is empty.
- Return type:
list or None
- getAAxis_pitchParameter()
Get Axisymmetry axis pitch angle as a parameter (for random-walk tracking)
- Returns:
Axisymmetry axis pitch angle
- Return type:
- getAAxis_pitchValue()
Get Axisymmetry axis pitch angle (homogeneous, for random-walk tracking)
- Returns:
Axisymmetry axis pitch angle
- Return type:
float
- getAAxis_yawParameter()
Get Axisymmetry axis yaw angle as a parameter (for random-walk tracking)
- Returns:
Axisymmetry axis yaw angle
- Return type:
- getAAxis_yawValue()
Get Axisymmetry axis yaw angle (homogeneous, for random-walk tracking)
- Returns:
Axisymmetry axis yaw angle
- Return type:
float
- getAquiferThickness()
Get Aquifer thickness (homogeneous)
- Returns:
Aquifer thickness
- Return type:
float
- getCompressionEnabled()
Get Compression of pathline points enabled
- Returns:
Compression Setting
- Return type:
bool
- getDiffCoeffParameter()
Get Molecular-diffusion coefficient as a parameter (for random-walk tracking)
- Returns:
Molecular-diffusion coefficient
- Return type:
- getDiffCoeffValue()
Get Molecular-diffusion coefficient (homogeneous, for random-walk tracking)
- Returns:
Molecular-diffusion coefficient
- Return type:
float
- getFinalTime()
Get Pathline final time [d].
- Returns:
final time
- Return type:
float
- getInitialTime()
Get Pathline start time [d].
- Returns:
start time
- Return type:
float
- getLongDispParameter()
Get Longitudinal dispersivity as a parameter (for random-walk tracking)
- Returns:
Longitudinal dispersivity
- Return type:
- getLongDispValue()
Get Longitudinal dispersivity (homogeneous, for random-walk tracking)
- Returns:
Longitudinal dispersivity
- Return type:
float
- getLongDisp_mParameter()
Get Longitudinal dispersivity (minimum) as a parameter (for random-walk tracking)
- Returns:
Longitudinal dispersivity (minimum)
- Return type:
- getLongDisp_mValue()
Get Longitudinal dispersivity (minimum, homogeneous, for random-walk tracking)
- Returns:
Longitudinal dispersivity (minimum)
- Return type:
float
- getPorosityParameter()
Get Porosity as a parameter (porosity, storativity, refdist)
- Returns:
Porosity
- Return type:
- getPorosityValue()
Get Porosity (homogeneous)
- Returns:
Porosity
- Return type:
float
- getRandomWalkMethod()
Get random walk method.
- Returns:
random walk method
- Return type:
{ifm.Enum.PT_RW_BACKWARDITO, ifm.Enum.PT_RW_FORWARDITO, ifm.Enum.PT_RW_RK3ITO, ifm.Enum.PT_RW_STRATONOVICH}
- getRkAccuracy()
Get Runge-Kutta integration accuracy
- Returns:
Runge-Kutta integration accuracy
- Return type:
float
- getRkMaxElementSwitches()
Get Runge-Kutta max. number of element switches
- Returns:
Runge-Kutta max. number of element switches
- Return type:
int
- getRkMaxStepsPerElement()
Get Runge-Kutta max. steps per element
- Returns:
Runge-Kutta max. steps per element
- Return type:
int
- getRkMinStepSizeFactor()
Get Runge-Kutta min. step size factor
- Returns:
Runge-Kutta min. step size factor
- Return type:
float
- getRkMinStepTime()
Get Runge-Kutta min. step time
- Returns:
Runge-Kutta min. step time
- Return type:
float
- getScaleDepDispDref()
Get ScaleDepDispDref
- getScaleDepDispTref()
Get ScaleDepDispTref
- getSorptionParameter()
Get Henry-sorption parameter
- getTrackingDirection()
Get pathline tracking direction
- Returns:
pathline tracking direction
- Return type:
{Enum.PT_DIR_FORWARD, Enum.PT_DIR_BACKWARD}
- getTrackingMode()
Get pathline tracking mode
- Returns:
pathline tracking mode
- Return type:
{Enum.PT_MODE_STEADY, Enum.PT_MODE_UNSTEADY}
- getTrackingType()
Get pathline tracking type
- Returns:
pathline tracking type
- Return type:
{Enum.PT_TYPE_ADVECTIVE, Enum.PT_TYPE_RW}
- getTransvDispParameter()
Get Transverse dispersivity as a parameter (for random-walk tracking)
- Returns:
Transverse dispersivity
- Return type:
- getTransvDispValue()
Get Transverse dispersivity (homogeneous, for random-walk tracking)
- Returns:
Transverse dispersivity
- Return type:
float
- getTransvDisp_mParameter()
Get Transverse dispersivity (minimum) as a parameter (for random-walk tracking)
- Returns:
Transverse dispersivity (minimum)
- Return type:
- getTransvDisp_mValue()
Get Transverse dispersivity (minimum, homogeneous, for random-walk tracking)
- Returns:
Transverse dispersivity (minimum)
- Return type:
float
- setAAxis_pitchParameter(pitch)
Set Axisymmetry axis pitch angle as a parameter (for random-walk tracking)
- Parameters:
pitch (ifm.Parameter) – Axisymmetry axis pitch angle
- setAAxis_pitchValue()
Set Axisymmetry axis pitch angle (homogeneous, for random-walk tracking)
- Parameters:
pitch (float) – Axisymmetry axis pitch angle
- setAAxis_yawParameter(angle)
Set Axisymmetry axis yaw angle as a parameter (for random-walk tracking)
- Parameters:
angle (ifm.Parameter) – Axisymmetry axis yaw angle
- setAAxis_yawValue(angle)
Set Axisymmetry axis yaw angle (homogeneous, for random-walk tracking)
- Parameters:
angle (float) – Axisymmetry axis yaw angle
- setAquiferThickness(thickness)
Set Aquifer thickness (homogeneous)
- Parameters:
thickness (float) – Aquifer thickness
- setCompressionEnabled(enable)
Set Compression of pathline points enabled
- Parameters:
enable (bool) – Compression
- setDefaults()
Reset to default settings
- setDiffCoeffParameter(coefficient)
Set Molecular-diffusion coefficient as a parameter (for random-walk tracking)
- Parameters:
coefficient (ifm.Parameter) – Molecular-diffusion coefficient
- setDiffCoeffValue()
setDiffCoeffValuecoefficient(coefficient)
Set Molecular-diffusion coefficient (homogeneous, for random-walk tracking)
- Parameters:
coefficient (float) – Molecular-diffusion coefficient
- setFinalTime(time)
Set the Pathline final time (absolute simulation time in days).
Required for unsteady calculations only (pathlines / random walk periods).
For forward tracking, choose value greater than initial time. For backward tracking, choose value smaller than initial time.
- Parameters:
time (float) – final Pathline time
- setInitialTime(time)
Set the Pathline start time (absolute simulation time in days).
For forward tracking, choose value smaller than final time. For backward tracking, choose value greater than initial time.
- Parameters:
time (float) – initial Pathline time
- setLongDispParameter(dispersivity)
Set Longitudinal dispersivity as a parameter (for random-walk tracking)
- Parameters:
dispersivity (ifm.Parameter) – Longitudinal dispersivity
- setLongDispValue(dispersivity)
Set Longitudinal dispersivity (homogeneous, for random-walk tracking)
- Parameters:
dispersivity (float) – Longitudinal dispersivity
- setLongDisp_mParameter(dispersivity)
Set Longitudinal dispersivity (minimum) as a parameter (for random-walk tracking)
- Parameters:
dispersivity (ifm.Parameter) – Longitudinal dispersivity (minimum)
- setLongDisp_mValue(dispersivity)
Set Longitudinal dispersivity (minimum, homogeneous, for random-walk tracking)
- Parameters:
dispersivity (float) – Longitudinal dispersivity (minimum)
- setPorosityParameter(porosity)
Set Porosity as a parameter (porosity,storativity,refdist)
- Parameters:
porosity (ifm.Parameter) – Porosity
- setPorosityValue(porosity)
Set Porosity (homogeneous)
- Parameters:
porosity (float) – Porosity
- setRandomWalkMethod(rwmethod)
Set random walk method.
- Parameters:
rwmethod ({ifm.Enum.PT_RW_BACKWARDITO, ifm.Enum.PT_RW_STRATONOVICH, ifm.Enum.PT_RW_RK3ITO, PT_RW_FORWARDITO}) – Random walk computation method.
- setRkAccuracy(accuracy)
Set Runge-Kutta integration accuracy
- Parameters:
accuracy (float) – Runge-Kutta integration accuracy
- setRkMaxElementSwitches(n_switches)
Set Runge-Kutta max. number of element switches
- Parameters:
n_switches (int) – Runge-Kutta max. number of element switches
- setRkMaxStepsPerElement(n_steps)
Set Runge-Kutta max. steps per element
- Parameters:
n_steps (int) – Runge-Kutta max. steps per element
- setRkMinStepSizeFactor(factor)
Set Runge-Kutta min. step size factor
- Parameters:
factor (float) – Runge-Kutta min. step size factor
- setRkMinStepTime(time)
Set Runge-Kutta min. step time
- Parameters:
time (float) – Runge-Kutta min. step time
- setScaleDepDispDref()
Set ScaleDepDispDref
- setScaleDepDispTref()
Set ScaleDepDispTref
- setSorptionParameter()
Set Henry-sorption parameter
- setTrackingDirection(tracking_direction)
Set pathline tracking direction
- Parameters:
tracking_direction ({Enum.PT_DIR_FORWARD, Enum.PT_DIR_BACKWARD}) – The tracking direction to be set.
- setTrackingMode(tracking_mode)
Set pathline tracking mode (steady = streamlines, unsteady = pathlines)
- Parameters:
tracking_mode ({Enum.PT_MODE_STEADY, Enum.PT_MODE_UNSTEADY}) – Tracking mode to be set. Enum.PT_MODE_STEADY enables calculation on a steady flow field at currently loaded time step, resulting in streamlines/random walks. Enum.PT_MODE_UNSTEADY enables calculation on the transient flow field, resulting in pathlines/random walks perids.
- setTrackingType(tracking_type)
Set pathline tracking type (advective = classic streamline/pathline computation; rw = Random Walk method)
- Parameters:
tracking_type ({Enum.PT_TYPE_ADVECTIVE, Enum.PT_TYPE_RW}) – Tracking type to be set. Enum.PT_TYPE_ADVECTIVE sets classic streamline/pathline computation on purely advective flow field, Enum.PT_TYPE_RW set the Random Walk method considering dispersive and diffusive effects.
- setTransvDispParameter(disp)
Set Transverse dispersivity as a parameter (for random-walk tracking)
- Parameters:
disp (ifm.Parameter) – Transverse dispersivity
- setTransvDispValue(disp)
Set Transverse dispersivity (homogeneous, for random-walk tracking)
- Parameters:
disp (float) – Transverse dispersivity
- setTransvDisp_mParameter(disp)
Set Transverse dispersivity (minimum) as a parameter (for random-walk tracking)
- Parameters:
disp (ifm.Parameter) – Transverse dispersivity (minimum)
- setTransvDisp_mValue(disp)
Set Transverse dispersivity (minimum, homogeneous, for random-walk tracking)
- Parameters:
disp (float) – Transverse dispersivity (minimum)
ifm.ProblemDefinition
- class ifm.ProblemDefinition
Class providing access to FEFLOW Problem Definition.
See also
- configureFreeSurface()
void pdf.configureFreeSurface(int phreatic[, int stat[nslices]])
Method of Problem Definition objects.
- Parameters:
phreatic (int) – {ifm.Enum.PHR_CONFINED, ifm.Enum.PHR_UNCONFINED}
stat[] (int) – {ifm.Enum.SLC_PLANE, ifm.Enum.SLC_FIXED, ifm.Enum.SLC_UNSPECIFIED, ifm.Enum.SLC_MOVABLE, ifm.Enum.SLC_PHREATIC}
Examples
>>> pdf = doc.getProblemDefinition() >>> pdf.setProblemClass(Enum.TYPE_SATURATED, Enum.PCLS_MASS_TRANSPORT, Enum.TCLS_ST_UNST) >>> pdf.configureFreeSurface(Enum.PHR_UNCONFINED, [Enum.SLC_PHREATIC, Enum.SLC_UNSPECIFIED, Enum.SLC_UNSPECIFIED, Enum.SLC_FIXED])
- getChemicalSpeciesCount()
int getChemicalSpeciesCount()
Method of Problem Definition objects that returns the number of species of the Mass transport problem class
- Returns:
int Ns
- Return type:
Number of species
- getHysteresisFlag()
Method of Problem Definition objects.
- getIterativeScheme()
Method of Problem Definition objects.
- getProblemClass()
Method of Problem Definition objects.
- Return type:
int problemClass
- getProblemType()
Method of Problem Definition objects that returns if the model is using “Standard (saturated)” (0) or “Richards’ equation” (1).
- Returns:
{ifm.Enum.TYPE_SATURATED, ifm.Enum.TYPE_UNSATURATED}
- Return type:
int type
- getProjection()
int pdf.getProjection()
Method of Problem Definition objects.
- Return type:
int projection
- getRichardsEqForm()
int pdf.getRichardsEqForm()
Method of Problem Definition objects.
- getTimeClass()
Method of Problem Definition objects.
- getTotalSpeciesCount()
int pdf.getTotalSpeciesCount()
Method of Problem Definition objects that returns the total number of species of the problem class (Age + Mass transport).
- Returns:
int Ns
- Return type:
Total number of species
- getUpwinding()
Method of Problem Definition objects.
- setProblemClass(int pcls[, int tcls[, int type]])
Method of Problem Definition objects to change problem class, time class and type of the model (steady, unsteady; saturated, unsaturated…)
- Parameters:
pcls (int) – {ifm.Enum.PCLS_FLOW, ifm.Enum.PCLS_HEAT_TRANSPORT, ifm.Enum.PCLS_MASS_TRANSPORT, ifm.Enum.PCLS_THERMOHALINE}
tcls (int) – {ifm.Enum.TCLS_STEADY, ifm.Enum.TCLS_ST_UNST, ifm.Enum.TCLS_UNSTEADY}. ifm.Enum.TCLS_STEADY sets flow and transport both as steady state, ifm.Enum.TCLS_UNSTEADY both as transient, while ifm.Enum.TCLS_ST_UNST sets flow steady state and transport transient.
type (int) – {ifm.Enum.TYPE_SATURATED, ifm.Enum.TYPE_UNSATURATED}
Examples
>>> pdf = doc.getProblemDefinition() >>> pdf.setProblemClass(Enum.PCLS_THERMOHALINE, Enum.TCLS_STEADY, Enum.TYPE_SATURATED )
- setProjection2D(int proj)
Set Projection for current Problem Definition instance.
- Parameters:
proj (int) – {ifm.Enum.PROJ_AXISYM_2D, ifm.Enum.PROJ_CONFINED_2D, ifm.Enum.PROJ_PHREATIC_2D, ifm.Enum.PROJ_VERTICAL_2D}
ifm.SubdomainBudget
- class ifm.SubdomainBudget
- getBorderIn()
Border budget component (1st + 2nd + 3rd kind BCs)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getBorderOut()
Border budget component (1st + 2nd + 3rd kind BCs)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getBulkIn()
Distributed source/sink budget component
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getBulkOut()
Distributed source/sink budget component
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getCauchyIn()
BC Cauchy budget component (3rd kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getCauchyOut()
BC Cauchy budget component (3rd kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getConvIn()
Convective part
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getConvOut()
Convective part
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getDirichletIn()
BC Dirichlet budget component (1st kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getDirichletOut()
BC Dirichlet budget component (1st kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getInternalDFIn()
Discrete-feature contribution to transfer through internal subdomain boundary (including BCs on internal subdomain boundary)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getInternalDFOut()
Discrete-feature contribution to transfer through internal subdomain boundary (including BCs on internal subdomain boundary)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getInternalPMIn()
Porous-media contribution to transfer through internal subdomain boundary (including BCs on internal subdomain boundary)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getInternalPMOut()
Porous-media contribution to transfer through internal subdomain boundary (including BCs on internal subdomain boundary)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getNetIn()
Net imbalance: border + wells + bulk + stor
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getNetOut()
Net imbalance: border + wells + bulk + stor
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getNeumannIn()
BC Neumann budget component (2nd kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getNeumannOut()
BC Neumann budget component (2nd kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getStorIn()
Storage change (Storativity/Compressibility/Capacity budget component)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getStorOut()
Storage change (Storativity/Compressibility/Capacity budget component)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getWellIn()
Well budget component (4th kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getWellOut()
Well budget component (4th kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
ifm.SubdomainTransferBudget
- class ifm.SubdomainTransferBudget
Class containing the result of a sub-domain transfer budget calculation. Create this object by calling ifm.FeflowDoc.budgetComputeSubdomainTransfer.
- getBorderIn()
Border budget component (1st + 2nd + 3rd kind BCs)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getBorderOut()
Border budget component (1st + 2nd + 3rd kind BCs)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getCauchyIn()
BC Cauchy budget component (3rd kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getCauchyOut()
BC Cauchy budget component (3rd kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getConvIn()
Convective part
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getConvOut()
Convective part
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getDirichletIn()
BC Dirichlet budget component (1st kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getDirichletOut()
BC Dirichlet budget component (1st kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getInternalDFIn()
Discrete-feature contribution to transfer through internal subdomain boundary (including BCs on internal subdomain boundary)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getInternalDFOut()
Discrete-feature contribution to transfer through internal subdomain boundary (including BCs on internal subdomain boundary)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getInternalPMIn()
Porous-media contribution to transfer through internal subdomain boundary (including BCs on internal subdomain boundary)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getInternalPMOut()
Porous-media contribution to transfer through internal subdomain boundary (including BCs on internal subdomain boundary)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getNeumannIn()
BC Neumann budget component (2nd kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getNeumannOut()
BC Neumann budget component (2nd kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getNodalValues()
Returns a vector of nodal fluxes of the masking domain if the compute_nodal_budget was set to True when this instance was created by calling ifm.FeflowDoc.budgetComputeSubdomainTransfer (otherwise, an empty list is returned).
The vector has length of the masking domain vector (parameter nodes).
- Returns:
flow rate, mass flux or heat flux
- Return type:
[float]
Examples
>>> md = [5,6,7,15,16,17] # node indices of masking domain >>> doi = [1,2,3,11,12,13] # element indices of domain of interes >>> budget = ifm.budgetComputeSubdomainTransfer(0, doi, md, True) >>> nodal_flux = zip(md, budget.getNodalValues()) >>> print(budget)
- getTransferIn()
Net subdomain transfer: border + wells + internal_pm + internal_df
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getTransferOut()
Net subdomain transfer: border + wells + internal_pm + internal_df
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getWellIn()
Well budget component (4th kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
- getWellOut()
Well budget component (4th kind)
- Returns:
flow rate, mass flux or heat flux
- Return type:
float
ifm.SuperMesh
- class ifm.SuperMesh
Class providing access to FEFLOW’s Supermesh.
See also
- addElement(int type, double(ndm) points[][, IfmSuperElement parent])
Add element to Supermesh instance.
- Parameters:
type (int) – {ifm.Enum.SMH_SHAPE_COMPOSED, ifm.Enum.SMH_SHAPE_LINE, ifm.Enum.SMH_SHAPE_POINT, ifm.Enum.SMH_SHAPE_POLYGON}
points[] (double(ndm)) – list of x-y tuples (2D)
parent (IfmSuperElement) – optional parameter representing the parent Supermesh instance (see example below)
- Returns:
model (Supermesh) to which elements are added
- Return type:
IfmSuperElement parent
Examples
>>> model=smh.addElement(Enum.SMH_SHAPE_COMPOSED) >>> model.setPropertyValue(Enum.SMH_PROP_ELEM_NAME, 'Model') >>> model.addElement(Enum.SMH_SHAPE_POLYGON, [ >>> ( -1367.663, 5148.085), >>> ( 1043.806, 2229.747), >>> ( 2260.424, 2679.999), >>> ( 4037.446, 4728.510), >>> ( 3092.925, 5465.932), >>> ( 1568.908, 6655.788) >>> ]) >>> smh.addElement(Enum.SMH_SHAPE_POLYGON, [ >>> ( 7387.993, 7202.014), >>> ( 5987.235, 8924.258), >>> ( 1568.908, 6655.788), >>> ( 3092.925, 5465.932), >>> ( 6055.706, 6663.499), >>> ( 7387.993, 7202.014) >>> ], model) >>> e=smh.addElement(Enum.SMH_SHAPE_LINE, [ >>> ( 3012.709, 1783.521), >>> ( 6084.442, 2817.569) >>> ]) >>> e.setPropertyValue(Enum.SMH_PROP_ELEM_NAME, 'DFE') >>> e=smh.addElement(Enum.SMH_SHAPE_POINT, [ >>> ( 4381.303, 6953.764) >>> ]) >>> e.setPropertyValue(Enum.SMH_PROP_ELEM_NAME, 'Obs') >>> e=smh.addElement(Enum.SMH_SHAPE_POINT, [ >>> (( 5000.0, 5000.0) >>> (]) >>> (e.setPropertyValue(Enum.SMH_PROP_ELEM_NAME, 'Well')
- addSlice(int type, object args[, [Slice|int] template])
Add Slice to the Supermesh instance. Note that elevation can be defined as constant, as distance from top/bottom Slice or from Map. Only “.dat”, “.shp” maps can be used at the moment.
- Parameters:
type (int) – {ifm.Enum.SMH_ELEV_CONSTANT, ifm.Enum.SMH_ELEV_DISTBOTTOM, ifm.Enum.SMH_ELEV_DISTTOP, ifm.Enum.SMH_ELEV_MAP}
Examples
>>> smh=doc.getSuperMesh() >>> interpol=smh.getInterpolation(ifm.Enum.SMH_REGIO_KRIGING) >>> smh.addSlice(ifm.Enum.SMH_ELEV_CONSTANT, 10.) >>> smh.addSlice(ifm.Enum.SMH_ELEV_DISTTOP, 1.) >>> smh.addSlice(ifm.Enum.SMH_ELEV_MAP, ('elev.shp', interpol, 'Z'))
- generateMesh()
FemMesh smh.generateMesh([MeshGenerator gen])
Method of Supermesh object to generate mesh.
- Parameters:
(optional) (MeshGenerator gen) –
- Return type:
FemMesh object
Examples
>>> gen = smh.getMeshGenerator(Enum.SMH_GEN_TRIANGLE) >>> >>> # Option 1: >>> smh.generateMesh(gen) >>> >>> # Option 2: >>> root=smh.getRootElement() >>> root.setPropertyValue(Enum.SMH_PROP_ELEM_MESHGEN, gen) >>> root.setPropertyValue(Enum.SMH_PROP_ELEM_PROPOSED, 5000) >>> smh.generateMesh()
- getCoor(int node)
Method of supermesh objects to get coordinates of a Supermesh node.
- Parameters:
node (int) –
- Returns:
(x, y)
- Return type:
Coordinates of the node
- getElement()
Method of supermesh objects to obtain a Supermesh Element.
Examples
>>> model = smh.getElement(0) # obtain first composed element >>> model.getChildElement(0).setPropertyValue(Enum.SMH_PROP_ELEM_MATERIAL, 'coarse sand') >>> model.getChildElement(1).setPropertyValue('Material', 'fine sand')
- getElements()
SuperElement[] elem.getElements([SuperElement parent])
Method of supermesh objects.
- Parameters:
(optional) (SuperElement parent) –
- Returns:
SuperElement[]
- Return type:
Array of SuperElements
- getExtent()
Method of supermesh objects to get the extent of the supermesh.
- Return type:
((xmin,ymin),(xmax,ymax))
- getInterpolation(string method)
Method of supermesh objects which returns an IFM “Interpolation” object.
- Parameters:
method (string) – Name of the interpolation method to be returned.
- Return type:
IFM Interpolation Object
Examples
>>> interp = smh.getInterpolation(str(ifm.Enum.SMH_REGIO_KRIGING)) >>> print(interp)
>>> Output: >>> [ IFM Interpolation Object ] >>> Name: Kriging >>> Neighbors: 10 >>> Logarithmic: FALSE >>> Type: Simple
- getInterpolations()
Method of supermesh objects that returns a list of available interpolation methods.
- Return type:
List of IFM Interpolation Objects
Examples
>>> print(smh.getInterpolations())
>>> Output: >>> [ >>> [ IFM Interpolation Object ] >>> Name: Inverse Distance >>> Neighbors: 4 >>> Exponent: 2 >>> Logarithmic: FALSE >>> , >>> [ IFM Interpolation Object ] >>> Name: Akima >>> Interpolation Type: Cubic >>> Neighbors: 5 >>> Over-/Under Shooting: 50 >>> Logarithmic: FALSE >>> , >>> [ IFM Interpolation Object ] >>> Name: Kriging >>> Neighbors: 10 >>> Logarithmic: FALSE >>> Type: Simple >>> ]
- getMeshGenerator(int id)
Method of supermesh objects that returns a Mesh generator object.
- Parameters:
id (int) – {ifm.Enum.SMH_GEN_TRIANGLE, ifm.Enum.SMH_GEN_ADVANCING_FRONT, ifm.Enum.SMH_GEN_GRIDBUILDER}
- Return type:
Mesh generator object
Examples
>>> gen=smh.getMeshGenerator(Enum.SMH_GEN_TRIANGLE) >>> gen.setPropertyValue("Refine Lines", True) >>> gen.setPropertyValue("Line Gradation", 7) >>> gen.setPropertyValue("Line Target Size", 40.0) >>> gen.setPropertyValue("Refine Points", True) >>> gen.setPropertyValue("Point Gradation", 9) >>> gen.setPropertyValue("Point Target Size", 25.0) >>> gen.setPropertyValue("Minimum Angle", '30 [DEG]')
- getMeshGenerators()
MeshGenerator[] smh.getMeshGenerators()
Method of supermesh objects.
- Returns:
MeshGenerator[]
- Return type:
Array of MeshGenerator objects
- getNumberOfElements()
int smh.getNumberOfElements()
Method of supermesh objects.
- Returns:
int Ne
- Return type:
Number of Supermesh Elements (Polygons + Lines + Points)
- getNumberOfLayers()
int smh.getNumberOfLayers()
Method of supermesh objects.
- Returns:
int Nl
- Return type:
Number of Layers of the supermesh
- getNumberOfNodes()
int smh.getNumberOfNodes()
Method of supermesh objects.
- Returns:
int Nn
- Return type:
Number of Nodes of the supermesh
- getNumberOfSlices()
Method of supermesh objects.
- Returns:
int Ns
- Return type:
Number of Slices of the supermesh
- getOrigin()
Method of supermesh objects.
- Returns:
(xorg,yorg)
- Return type:
Origin coordinates
- getRootElement()
Method of supermesh objects that returns the Supermesh Root Element, including all the other elements
Examples
>>> root = smh.getRootElement() >>> root.setPropertyValue(Enum.SMH_PROP_ELEM_PROPOSED, 5000) >>> root.setPropertyValue(Enum.SMH_PROP_ELEM_MATERIAL, 'coarse sand')
- getSlice()
Slice smh.getSlice(int idx)
Method of supermesh objects.
- Parameters:
idx (int) –
- Return type:
Slice object
- getSlices()
Slice[] smh.getSlices()
Method of supermesh objects.
- Returns:
Slice[]
- Return type:
Array of Slice objects
- insertSlice(int where, int type, object args[, Slice template]))
Method of supermesh instance.
- Parameters:
where (int) – Position where to insert the Slice. By default: positions go from 0 (top Slice) to nSlices-1 (bottom Slice)
Examples
>>> smh.addSlice(ifm.Enum.SMH_ELEV_CONSTANT, 20.0) >>> smh.addSlice(ifm.Enum.SMH_ELEV_CONSTANT, 10.0) >>> smh.insertSlice(1, ifm.Enum.SMH_ELEV_DISTBOTTOM, 3, 0) >>> print(smh.getSlices())
>>> Output: >>> [ IFM SmhSlice Object ] >>> slice: 0 >>> type: constant elevation: Z=20 [m] >>> movable: 1 >>> , >>> [ IFM SmhSlice Object ] >>> slice: 1 >>> type: constant distance to bottom slice: DIST=3 [m] >>> movable: 1 >>> , >>> [ IFM SmhSlice Object ] >>> slice: 2 >>> type: constant elevation: Z=10 [m] >>> movable: 1 >>> ]
- removeSlice(int slice)
Method of supermesh objects.
- Parameters:
slice (int) –
- setOrigin(xorg, yorg)
Method of supermesh objects.
- Parameters:
xorg (double) –
yorg (double) –
ifm.SuperMesh3D
- class ifm.SuperMesh3D
The SuperMesh3D class documents the generation and processing functions of 3D Supermesh in FEFLOW. It provides access to mesh generators, processing tools, and the supermesh processing workflow.
- addBlock(block[, properties])
Add a block object to the current supermesh.
- Parameters:
block (object) – Block object to be added.
properties (object, optional) – Optional properties/configuration for the block.
- Returns:
The created supermesh object (block).
- Return type:
Smh3dObject
- addHorizonPoints(points[, properties])
Add horizon points to the current supermesh.
- Parameters:
points (object) – Horizon points object or coordinate collection.
properties (object, optional) – Optional properties/configuration.
- Returns:
The created horizon points object.
- Return type:
Smh3dObject
- addMultiPoints(points[, properties])
Add multiple point objects to the current supermesh.
- Parameters:
points (object) – Multipoint object or coordinate collection.
properties (object, optional) – Optional properties/configuration.
- Returns:
The created multipoints object.
- Return type:
Smh3dObject
- addPolyLine(polyline[, properties])
Add a polyline to the current supermesh.
- Parameters:
polyline (object) – Polyline geometry to be added.
properties (object, optional) – Optional properties/configuration.
- Returns:
The created polyline object.
- Return type:
Smh3dObject
- addRegionMarkers(markers[, properties])
Add region markers to the current supermesh.
- Parameters:
markers (object) – Region marker definitions or geometry.
properties (object, optional) – Optional properties/configuration.
- Returns:
The created region markers object.
- Return type:
Smh3dObject
- addSurface(surface[, properties])
Add a surface to the current supermesh.
- Parameters:
surface (object) – Surface geometry to be added.
properties (object, optional) – Optional properties/configuration.
- Returns:
The created surface object.
- Return type:
Smh3dObject
- beginEdit()
Begin an edit session on the current supermesh.
- Return type:
None
- clearAll()
Clear all objects from the current supermesh.
- Return type:
None
- deleteObjects(objectIds)
Delete objects from the current supermesh.
- Parameters:
objectIds (list[int] or list[Smh3dObject]) – Identifiers or object references to be deleted.
- Returns:
Number of objects deleted.
- Return type:
int
- endEdit()
End the current edit session and finalize changes.
- Return type:
None
- generateMesh(meshGen [, properties] [, selection])
Generate a mesh from the current supermesh using a given mesh generator.
- Parameters:
meshGen (MeshGen) – Mesh generator instance.
properties (object, optional) – Optional properties/configuration for mesh generation.
selection (list[Smh3dObject], optional) – Optional selection of objects to restrict generation.
- Return type:
None
See also
getMeshGenerator,getMeshGenerators
- getCoor(nodeId)
Get the coordinate of a single node.
- Parameters:
nodeId (int) – Node identifier.
- Returns:
(x, y, z) coordinate of the node.
- Return type:
tuple[float, float, float]
- getCoors(nodeIds)
Get coordinates of multiple nodes.
- Parameters:
nodeIds (list[int]) – Node identifiers.
- Returns:
List of (x, y, z) coordinates.
- Return type:
list[tuple[float, float, float]]
- getExtent()
Get the spatial extent (bounding box) of the current supermesh.
- Returns:
(minX, minY, minZ, maxX, maxY, maxZ)
- Return type:
tuple[float, float, float, float, float, float]
- getGeoCoordinateSystem()
Retrieve the current geographic coordinate system (CRS) of the supermesh.
- Returns:
Coordinate reference system or descriptor.
- Return type:
object
- getMeshGenerator(id[, femType = SMH_FEMTYPE_UNSTRUCTURED])
Retrieve a mesh generator instance by its ID.
- Parameters:
id (int) – Identifier of the mesh generator. One of: {ifm.Enum.SMH_GEN_GEODE, ifm.Enum.SMH_GEN_TETGEN}
femType (int, optional) – FEM type for the mesh generator. One of: {ifm.Enum.SMH_FEMTYPE_UNSTRUCTURED, ifm.Enum.SMH_FEMTYPE_LAYERED}
- Returns:
The mesh generator instance corresponding to the given ID. SMH_FEMTYPE_LAYERED is only available for Geode mesh generator.
- Return type:
MeshGen
See also
- getNumberOfLineAddins()
Get the number of line add-ins in the current supermesh.
- Returns:
Count of line add-ins.
- Return type:
int
- getNumberOfNodes()
Get the number of nodes in the current supermesh.
- Returns:
Node count.
- Return type:
int
- getNumberOfPointAddins()
Get the number of point add-ins in the current supermesh.
- Returns:
Count of point add-ins.
- Return type:
int
- getNumberOfSurfaces()
Get the number of surfaces in the current supermesh.
- Returns:
Surface count.
- Return type:
int
- getNumberOfTriangles()
Get the number of triangles in the current supermesh.
- Returns:
Triangle count.
- Return type:
int
- getOrigin()
Get the origin of the current supermesh.
- Returns:
(x0, y0, z0) origin coordinate.
- Return type:
tuple[float, float, float]
- getProcessingTool(id)
Retrieve a processing tool by its ID.
- Parameters:
id (int) – Identifier of the processing tool: ifm.Enum.SMH_TOOL_GEODE
- Returns:
The processing tool corresponding to the given ID.
- Return type:
ProcTool
See also
- getTriangle(triId)
Get a triangle by its identifier.
- Parameters:
triId (int) – Triangle identifier.
- Returns:
Node indices forming the triangle.
- Return type:
tuple[int, int, int]
- getTriangleInfo(triId)
Get detailed information for a triangle.
- Parameters:
triId (int) – Triangle identifier.
- Returns:
Triangle coordinates in form ((x1,y1,z1),(x2,y2,z2),(x3,y3,z3)).
- Return type:
double(3)(3)
- processSupermesh(procTool, geodeOp [, properties] [, selection])
Process the current supermesh using a selected processing tool and geometric operation.
- Parameters:
procTool (ProcessingTool) – Processing tool instance to be applied, obtained with function “getProcessingTool”.
geodeOp (int) – Geometric/processing operation to be executed by the tool. One of: {ifm.Enum.SMH_GEODEOP_COMPUTE_INTERSECTIONS, ifm.Enum.SMH_GEODEOP_GENERATE_IMPLICIT_SURFACES, ifm.Enum.SMH_GEODEOP_INDIVIDUALIZE, ifm.Enum.SMH_GEODEOP_REMOVE_OUTSIDE, ifm.Enum.SMH_GEODEOP_REMOVE_SMALL, ifm.Enum.SMH_GEODEOP_REPAIR_SURFACES, ifm.Enum.SMH_GEODEOP_RESET_IMPLICIT_RESULTS, ifm.Enum.SMH_GEODEOP_RESET_TOPOLOGY, ifm.Enum.SMH_GEODEOP_RETRIANGULATE_SURFACES}
properties (object, optional) – Optional properties or configuration object for the operation.
selection (list of Smh3dObject, optional) – Optional selection of SMH3D objects to restrict processing.
- Return type:
None
See also
Examples
>>> smh.processSupermesh(tool, c.SMH_GEODEOP_RETRIANGULATE_SURFACES, { >>> 'Preserve original vertices' : False, >>> 'Sharp angle' : '165.5 [DEG]', >>> 'Global edge size' : '5 [m]', >>> })
- setGeoCoordinateSystem(crs)
Set the geographic coordinate system (CRS) for the current supermesh.
- Parameters:
crs (object) – Coordinate reference system or descriptor. One of: {ifm.Enum.CS_AUTHSTR, ifm.Enum.CS_CRSWKT, ifm.Enum.CS_JSON, ifm.Enum.CS_PRJFILE,ifm.Enum.CS_PROJ,ifm.Enum.CS_WGEO}
cs_name (string) – Name of coordinate system
- Return type:
None
Examples
>>> smh..setGeoCoordinateSystem(c.CS_WGEO, 'TRANS3D.21103')
- setOrigin(origin)
Set the origin of the current supermesh.
- Parameters:
origin (tuple[float, float, float]) – (x0, y0, z0) origin coordinate.
- Return type:
None
ifm.WellManager
- class ifm.WellManager
Class providing access to FEFLOW’s Well Manager.
See also
- applyOperations(True)
Apply changes to the current Well Manager instance. If this function is not called, changes are discarded.
- Parameters:
True (bool) –
Examples
>>> if not (wm.applyOperations(True)): >>> msg = well.getError() >>> print(msg)
- clearWells()
Delete all the wells of the current Well Manager istance.
- createWell(well_type)
Create a well of a given well-type.
- Parameters:
well_type ({ifm.Enum.WM_WELL_BC, ifm.Enum.WM_WELL_BHE, ifm.Enum.WM_WELL_MLW}) – Once the object is created, its properties (e.g., X, Y, Well Type, …) can be changed with the function “well.putPropertyValue(…)”.
- Returns:
Well object of a given well-type
- Return type:
well
Examples
>>> wm = doc.createWellManager() >>> wm.putSnapDistance(150) >>> well = wm.createWell(ifm.Enum.WM_WELL_BHE) >>> well.putPropertyValue("X", 34857.) >>> well.putPropertyValue("Y", 58422.) >>> if not (wm.applyOperations(True)): >>> msg = well.getError() >>> print(msg)
- createWells(well_type, position)
Create wells at a given position.
- Parameters:
well_type ({ifm.Enum.WM_WELL_BC, ifm.Enum.WM_WELL_BHE, ifm.Enum.WM_WELL_MLW}) – Once the object is created, its properties (e.g., X, Y, Well Type, …) can be changed with the function “putPropertyValue(…)”. For WM_WELL_BHE and WM_WELL_MLW: if the edges are disconnected, separate wells will be created
position ({list(int), list(3-float-tuple)}) – list(int) represents the list of nodes (for WM_WELL_BC) or edges (for WM_WELL_BHE and WM_WELL_MLW) indexes (0-based). list(3-float-tuple) represents a polyline described as 3-float-tuples (global x/y/zcoordinates) where wells are created.
- Returns:
List of wells (Ifm Objects)
- Return type:
wells (list)
Examples
>>> # Option 1: Create MLW from Edges selection >>> edges = doc.getSelectionItems(ifm.Enum.SEL_EDGES, "MLWs") >>> wm = doc.createWellManager() >>> well = wm.createWells(Enum.WM_WELL_MLW, edges) >>> well[0].putPropertyValue("Well Type", ifm.Enum.WMT_FLOW | ifm.Enum.WMT_HEAT_SOURCE_SINK | ifm.Enum.WMT_MASS_SOURCE_SINK) >>> well[0].putPropertyValue("Name", "MLW from Edges") >>> well[0].putPropertyValue("Rate (Flow)", 532.0) >>> well[0].putPropertyValue("Mass BC Value", 50.0) >>> well[0].putPropertyValue("Heat BC Value", 87.0) >>> if not (wm.applyOperations(True)): >>> msg = well.getError() >>> print(msg) >>> >>> >>> # Option 2: Create MLW from Polyline >>> wm = doc.createWellManager() >>> newMLW = wm.createWells(ifm.Enum.WM_WELL_MLW, [ >>> (float(117) + doc.getOriginX(), float(93) + doc.getOriginY(), float(0) + doc.getOriginZ()), >>> (float(6) + doc.getOriginX(), float(-1) + doc.getOriginY(), float(0) + doc.getOriginZ()) >>> ]) >>> wm.applyOperations(True)
- deleteWell()
Method of well objects. Deletes the current well from the well manager.
- exportXml()
Export Well Manager as Xml string.
- Returns:
Str – Well Manager in Xml format as string
- Return type:
String
Examples
>>> str = wm.exportXml() >>> file = "Well_Manager.xml" >>> f = open(file, "w") >>> f.write(str) >>> f.close()
- getOverwriteConflicts()
Method of Well Manager. Returns True if the Well Manager is allowed to overwrite boundary conditions in conflict with Well position, False otherwise.
- Returns:
True if BC can be overwritten, False otherwise.
- Return type:
bool
- getProperties()
Method of well objects. Returns a list of all properties (and their values) defined for the current well. This list is a sub-set of all available properties of the Well Manager object.
- Returns:
Property list – Dictionary of all available properties: Key = id, Value = Property value. To obtain the names of the properties, use the wm.getPropertyList() function.
- Return type:
dict(id, value)
- getPropertyList()
Returns a list of all available well-properties in the Well Manager. The list is problem-class dependent.
- Returns:
Property list – Dictionary of all available properties: Key = id, Value = Property name.
- Return type:
dict(id, name)
Examples
>>> wm = doc.createWellManager() >>> propertyList = wm.getPropertyList() >>> print(propertyList) >>> {0: 'Id', 2: 'Name', 3: 'X', 4: 'Y', 5: 'Z [Top]', 6: 'Z [Bottom]', 7: 'Well Type', 8: 'Rate (Flow)', 9: 'Radius'...}
- getPropertyValue(property)
Method of well objects. Returns the value of a property of the well.
- Parameters:
property ({int, str}) – Name or id of the property for which the value will be returned.
- Returns:
Value of the property of the well. The type of the returned value depends on the property: {int, float, string, ifm.IfmEnumProperty, ifm.IfmUnitValue}.
- Return type:
Value
Examples
>>> wm = doc.createWellManager() >>> wells = wm.getWells() >>> rate = wells[0].getPropertyValue('Rate (Flow)') >>> print("Rate (Flow): ", str(rate))
- getSnapDistance()
Get Snap distance value for the Well Manager, i.e., Nearest Node Distance in Global Settings for Well Manager
- Returns:
dist – Snap distance
- Return type:
float
- getType()
Method of well objects. Returns the type of an existing well.
- Returns:
Type – Type of the well containing base-type: {ifm.Enum.WM_WELL_BC, ifm.Enum.WM_WELL_BHE, ifm.Enum.WM_WELL_MLW} including including additional sub-types if set (ifm.Enum.WMT_MASS_TRANSPORT, …)
- Return type:
Int
- getWarning()
Method of well objects. Returns warnings for the current well after operations were applied.
- Returns:
Message – Warning for the current well, empty if no warnings.
- Return type:
Str
- getWells()
Get wells defined in the Well Manager
- Returns:
List of wells (Ifm Objects)
- Return type:
wells (list)
Examples
>>> wm = doc.createWellManager() >>> wells = wm.getWells() >>> wells[0].deleteWell() >>> wm.applyOperations(True)
- importXml(Str)
Import Well Manager from a string containing Xml format of Well Manager
- Parameters:
Str (String) – Well Manager in Xml format as string
- putOverwriteConflicts(bool)
Method of Well Manager to set if the Well Manager is allowed to overwrite boundary conditions in conflict with Well position, or not.
- Parameters:
bool – True to set that BC can be overwritten, False otherwise.
- putSnapDistance(dist)
Set Snap distance value for the Well Manager, i.e., Nearest Node Distance in Global Settings for Well Manager
- Parameters:
dist (float) – Snap distance to be set