PML3D
A Perfectly Matched Layer (PML) element for absorbing waves at domain boundaries in 3D analysis.
Parameters:
Parameter |
Description |
Type |
---|---|---|
PML_Thickness |
Thickness of the PML layer |
float |
meshType |
Type of mesh for the PML layer (1:”General”, 2:”Box”) |
string |
meshTypeParameters |
Parameters for the mesh type (comma separated) |
string |
gamma |
Newmark integration parameter (default=1./2.) |
float |
beta |
Newmark integration parameter (default=1./4.) |
float |
eta |
Newmark integration parameter (default=1./12.) |
float |
ksi |
Newmark integration parameter (default=1./48.) |
float |
m |
Newmark integration parameter (default=2.0) |
float |
R |
Newmark integration parameter (default=1e-8) |
float |
Cp |
Newmark integration parameter (optional) |
float |
alpha0 |
PML parameter (optional) |
float |
beta0 |
PML parameter (optional) |
float |
Material Compatibility: - Compatible with 3D (nDMaterial) type materials that are ElasticIsotropic
Degrees of Freedom: - 9 DOFs per node
Example
# Direct creation
from femora.components.Element.elementsOpenSees import PML3DElement
from femora.components.Material.materialsOpenSees import ElasticIsotropicMaterial
# Create a material first
material = ElasticIsotropicMaterial(user_name="Soil", E=5e7, nu=0.25, rho=1800)
# Create the element
pml_element = PML3DElement(
ndof=9,
material=material,
PML_Thickness=2.0,
meshType="Box",
meshTypeParameters="0.0, 0.0, 0.0, 10.0, 10.0, 10.0",
gamma=0.5,
beta=0.25,
eta=1/12,
ksi=1/48,
m=2.0,
R=1e-8
)
# Via femora
import femora as fm
# Create material
soil = fm.material.create_material(
material_category="nDMaterial",
material_type="ElasticIsotropic",
user_name="Soil",
E=5e7,
nu=0.25,
rho=1800
)
# Create element
pml = fm.element.create_element(
element_type="PML3D",
ndof=9,
material="Soil",
PML_Thickness=2.0,
meshType="Box",
meshTypeParameters="0.0, 0.0, 0.0, 10.0, 10.0, 10.0",
gamma=0.5,
beta=0.25,
eta=1/12,
ksi=1/48,
m=2.0,
R=1e-8
)