PML3DElement
PML3DElement
PML3DElement(ndof: int, material: Material, PML_Thickness: float, meshType: str, meshTypeParameters: Union[List[float], str], gamma: float = 0.5, beta: float = 0.25, eta: float = 1.0 / 12.0, ksi: float = 1.0 / 48.0, m: float = 2.0, R: float = 1e-08, Cp: Optional[float] = None, alpha0: Optional[float] = None, beta0: Optional[float] = None, **kwargs)
Bases: Element
Three-dimensional perfectly matched layer continuum element.
This eight-node element augments the standard brick with additional PML degrees of freedom, requiring 9 DOFs per node. It is used to absorb outgoing waves at domain boundaries in 3D wave-propagation analyses.
Tcl form
element PML <tag> <n1> ... <n8> <matTag> <thick> "<meshType>" <params...> "-Newmark" <gamma> <beta> <eta> <ksi> [-alphabeta alpha0 beta0 | -m m -R R [-Cp Cp]]
Warning
The assigned material must be a 3D
ElasticIsotropicMaterial.
Other nDMaterial types are rejected at construction time.
Note
meshTypemust beboxorgeneral(case-insensitive).meshTypeParametersmust provide six numeric values describing the local PML mesh orientation and extent.- Either
alpha0andbeta0must both be supplied, or neither.
Attributes:
| Name | Type | Description |
|---|---|---|
PML_Thickness |
Physical thickness of the PML layer. |
|
meshType |
PML mesh type passed to OpenSees ( |
|
meshTypeParameters |
Six numeric mesh-orientation parameters. |
|
gamma |
Newmark gamma parameter. |
|
beta |
Newmark beta parameter. |
|
eta |
Newmark eta parameter. |
|
ksi |
Newmark ksi parameter. |
|
m |
PML attenuation parameter used when |
|
R |
PML reflection parameter used when |
|
Cp |
Optional P-wave speed override for the PML formulation. |
|
alpha0 |
Optional PML alpha parameter paired with |
|
beta0 |
Optional PML beta parameter paired with |
Example
from femora.core.model import Model
model = Model()
mat = model.material.nd.elastic_isotropic(
user_name="PMLMat",
E=2.0e7,
nu=0.25,
rho=2200.0,
)
ele = model.element.brick.pml3d(
ndof=9,
material=mat,
PML_Thickness=1.0,
meshType="box",
meshTypeParameters=[1.0, 0.0, 0.0, 0.0, 1.0, 0.0],
)
print(ele.tag)
Create a PML3DElement with validated PML and Newmark parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ndof
|
int
|
Number of DOFs per node. Must be 9 for this element. |
required |
material
|
Material
|
Managed isotropic elastic 3D |
required |
PML_Thickness
|
float
|
Thickness of the PML layer. |
required |
meshType
|
str
|
|
required |
meshTypeParameters
|
Union[List[float], str]
|
Six numeric values or a comma-separated string describing the PML mesh orientation. |
required |
gamma
|
float
|
Newmark gamma parameter. |
0.5
|
beta
|
float
|
Newmark beta parameter. |
0.25
|
eta
|
float
|
Newmark eta parameter. |
1.0 / 12.0
|
ksi
|
float
|
Newmark ksi parameter. |
1.0 / 48.0
|
m
|
float
|
PML attenuation parameter when |
2.0
|
R
|
float
|
PML reflection parameter when |
1e-08
|
Cp
|
Optional[float]
|
Optional P-wave speed override. |
None
|
alpha0
|
Optional[float]
|
Optional PML alpha parameter; must be paired with |
None
|
beta0
|
Optional[float]
|
Optional PML beta parameter; must be paired with |
None
|
**kwargs
|
Additional element parameters stored on the base element. |
{}
|
Raises:
| Type | Description |
|---|---|
ValueError
|
If the material is incompatible, if |