Pressure

Applies a pressure on a given boundary in a given direction

Description

The boundary condition, Pressure applies a force to a mesh boundary in the magnitude specified by the user. A component of the normal vector to the mesh surface (0, 1, or 2 corresponding to the x^\hat{x}, y^\hat{y}, and z^\hat{z} vector components) is used to determine the direction in which to apply the traction. The boundary condition is typically applied to the displaced mesh.

The magnitude of the Pressure boundary condition can be specified as either a scalar (use the input parameter factor, which defaults to 1.0), a function parameter, or a Postprocessor name. If more than one of these are given, they are multiplied by one another.

commentnote:Can Be Created with the Pressure Action

A set of Pressure boundary conditions applied to multiple variables in multiple components can be defined with the PressureAction.

Jacobian

Cartesian

Let NN be the number of nodes on a finite element face. Also, let hih_i be the shape function at node ii. Then the vector ff, which has dimension 3N×13N\times1 for a 3D model, is defined as f=γFTn    dA f = \int \gamma F^T n\;\; dA where γ\gamma represents a scaling factor, nn is the normal vector, and F=[h1Ih2I...hNI] F = \begin{bmatrix} {h_1}I & {h_2}I & ... & {h_N}I \end{bmatrix} where II is the identity tensor.

To find the Jacobian, we take the variation of the term in the integral, δ(γFTn)=γ(δ(FT)n+FTδ(n)) \delta(\gamma F^T n) = \gamma(\delta(F^T)n + F^T\delta(n))

We define F,αF_{,\alpha} as F,α=[h1,αIh2,αI...hN,αI] F_{,\alpha} = \begin{bmatrix} {h_{1,\alpha}}I & {h_{2,\alpha}}I & ... & {h_{N,\alpha}}I \end{bmatrix} where α\alpha may be either ξ\xi or η\eta, the two parametric coordinates associated with the face of an element. F,αF_{,\alpha} has dimensions 3×3n3 \times 3n. This allows δF=[F,ξδξF,ηδη]\delta F = \begin{bmatrix} F_{,\xi}\delta\xi & F_{,\eta}\delta\eta \end{bmatrix} Since the values of the parametric coordinates are fixed according to the integration rule and do not vary, this term becomes zero. We are left with γFTδn\gamma F^T\delta n.

The normal vector nn is an outward unit vector at the integration points. We define b=q,ξ×q,ηb = q_{,\xi} \times q_{,\eta} where q,α=F,αpq_{,\alpha} = F_{,\alpha}p defined at the integration points with pT=[x1Tx2T...xnT]p^T = \begin{bmatrix} x^T_1 & x^T_2 & ... & x^T_n \end{bmatrix} xi=Xi+uix_i = X_i + u_i where XiX_i is the vector of coordinates for node ii and uiu_i is the vector of displacements for node ii.

δb=δq,ξ×q,η+q,ξ×δq,ηδq,ξ=F,ξδp+q,ξηδηδq,η=F,ηδp+q,ξηδξ\begin{aligned} \delta b = & \delta q_{,\xi} \times q_{,\eta} + q_{,\xi} \times \delta q_{,\eta} \\ \delta q_{,\xi} = & F_{,\xi}\delta p + q_{,\xi\eta}\delta \eta \\ \delta q_{,\eta} = & F_{,\eta}\delta p + q_{,\xi\eta}\delta \xi \end{aligned} If δξ=δη=0\delta\xi = \delta\eta = 0, δb=F,ξδp×q,η+q,ξ×F,ηδp=q,ξ×F,ηδpq,η×F,ξδp=(q,ξ×F,ηq,η×F,ξ)δp\begin{aligned} \delta b = & F_{,\xi}\delta p \times q_{,\eta} + q_{,\xi} \times F_{,\eta}\delta p \\ = & q_{,\xi} \times F_{,\eta}\delta p - q_{,\eta} \times F_{,\xi}\delta p \\ = & (q_{,\xi} \times F_{,\eta} - q_{,\eta} \times F_{,\xi}) \delta p \end{aligned}

We are left with δ(γFTn)=γbFT(q,ξ×F,ηq,η×F,ξ)δp \delta(\gamma F^T n) = \frac{\gamma}{||b||}F^T(q_{,\xi} \times F_{,\eta} - q_{,\eta} \times F_{,\xi}) \delta p

To take the cross product of a vector and a set of vectors in a matrix, we take the cross product of the vector with each vector in the matrix in turn. The jjth 3×33\times3 submatrix of F,αF_{,\alpha} is hj,αIh_{j,\alpha}I. This gives (q,ξ×F,ηq,η×F,ξ)j=[0q,ξ(3)hj,η+q,η(3)hj,ξq,ξ(2)hj,ηq,η(2)hj,ξq,ξ(3)hj,ηq,η(3)hj,ξ0q,ξ(1)hj,η+q,η(1)hj,ξq,ξ(2)hj,η+q,η(2)hj,ξq,ξ(1)hj,ηq,η(1)hj,ξ0] (q_{,\xi} \times F_{,\eta} - q_{,\eta} \times F_{,\xi})_j = \begin{bmatrix} 0 & -q_{,\xi(3)}h_{j,\eta}+q_{,\eta(3)}h_{j,\xi} & q_{,\xi(2)}h_{j,\eta}-q_{,\eta(2)}h_{j,\xi} \\ q_{,\xi(3)}h_{j,\eta}-q_{,\eta(3)}h_{j,\xi} & 0 & -q_{,\xi(1)}h_{j,\eta}+q_{,\eta(1)}h_{j,\xi} \\ -q_{,\xi(2)}h_{j,\eta}+q_{,\eta(2)}h_{j,\xi} & q_{,\xi(1)}h_{j,\eta}-q_{,\eta(1)}h_{j,\xi} & 0 \end{bmatrix} The integrand of the (i,j)(i,j) 3×33\times3 submatrix of the stiffness is γb(FT(q,ξ×F,ηq,η×F,ξ))ij=γbhi[0q,ξ(3)hj,η+q,η(3)hj,ξq,ξ(2)hj,ηq,η(2)hj,ξq,ξ(3)hj,ηq,η(3)hj,ξ0q,ξ(1)hj,η+q,η(1)hj,ξq,ξ(2)hj,η+q,η(2)hj,ξq,ξ(1)hj,ηq,η(1)hj,ξ0]\frac{\gamma}{||b||}(F^T(q_{,\xi} \times F_{,\eta} - q_{,\eta} \times F_{,\xi}))_{ij} = \frac{\gamma}{||b||}h_i \begin{bmatrix} 0 & -q_{,\xi(3)}h_{j,\eta}+q_{,\eta(3)}h_{j,\xi} & q_{,\xi(2)}h_{j,\eta}-q_{,\eta(2)}h_{j,\xi} \\ q_{,\xi(3)}h_{j,\eta}-q_{,\eta(3)}h_{j,\xi} & 0 & -q_{,\xi(1)}h_{j,\eta}+q_{,\eta(1)}h_{j,\xi} \\ -q_{,\xi(2)}h_{j,\eta}+q_{,\eta(2)}h_{j,\xi} & q_{,\xi(1)}h_{j,\eta}-q_{,\eta(1)}h_{j,\xi} & 0 \end{bmatrix}

Spherical symmetry

For a problem using spherical symmetry, the Jacobian is much simpler. Here we have f=γFTn    dA=γFTnr2sinϕ    dϕ  dθ=4πγFTnr2f = \int \gamma F^Tn \;\; dA = \int\int \gamma F^T n r^2 \sin \phi \;\; d\phi \; d\theta = 4\pi\gamma F^T n r^2 with r=X+ur = X + u. Here, nn is not a function of the displacements. The variation is 8πγFTnrδr8 \pi \gamma F^T n r\delta r

Axisymmetry

For 1D axisymmetry, we have f=γFTn    dA=γFTnr    dθ=2πγFTnrf = \int \gamma F^Tn \;\; dA = \int \gamma F^T nr \;\; d\theta = 2\pi \gamma F^T n r with r=X+ur = X + u and a unit height. Here, nn is not a function of the displacements. The variation is 2πγFTnδr2 \pi \gamma F^T n \delta r

For 2D axisymmetry, we have f=γFTn    dA=γFTnr    dθ  dz=2πγFTnr    dzf = \int \gamma F^Tn \;\; dA = \int \int \gamma F^T n r \;\; d\theta \; dz = \int 2\pi\gamma F^T n r \;\; dz with r=X+ur = X + u. However, both nn and rr depend on the displacements. Thus, we have δ(2πγFTnr)=2πγFT(rδn+nδr)\delta(2\pi\gamma F^T n r) = 2 \pi \gamma F^T (r \delta n + n \delta r)

Example Input File Syntax

[BCs]
  [outerPressure]
    type = Pressure
    boundary = right
    variable = disp_r
    factor = 2
  []
[]
(contrib/moose/modules/solid_mechanics/test/tests/1D_spherical/finiteStrain_1DSphere_hollow.i)

Input Parameters

  • boundaryThe list of boundary IDs from the mesh where the pressure will be applied

    C++ Type:std::vector<BoundaryName>

    Unit:(no unit assumed)

    Controllable:No

    Description:The list of boundary IDs from the mesh where the pressure will be applied

  • displacementsThe displacements appropriate for the simulation geometry and coordinate system

    C++ Type:std::vector<VariableName>

    Unit:(no unit assumed)

    Controllable:No

    Description:The displacements appropriate for the simulation geometry and coordinate system

Required Parameters

  • absolute_value_vector_tagsThe tags for the vectors this residual object should fill with the absolute value of the residual contribution

    C++ Type:std::vector<TagName>

    Unit:(no unit assumed)

    Controllable:No

    Description:The tags for the vectors this residual object should fill with the absolute value of the residual contribution

  • active__all__ If specified only the blocks named will be visited and made active

    Default:__all__

    C++ Type:std::vector<std::string>

    Unit:(no unit assumed)

    Controllable:No

    Description:If specified only the blocks named will be visited and made active

  • extra_vector_tagsThe extra tags for the vectors this Kernel should fill

    C++ Type:std::vector<TagName>

    Unit:(no unit assumed)

    Controllable:No

    Description:The extra tags for the vectors this Kernel should fill

  • factor1The factor to use in computing the pressure

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The factor to use in computing the pressure

  • functionThe function that describes the pressure

    C++ Type:FunctionName

    Unit:(no unit assumed)

    Controllable:No

    Description:The function that describes the pressure

  • hht_alpha0alpha parameter for mass dependent numerical damping induced by HHT time integration scheme

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:alpha parameter for mass dependent numerical damping induced by HHT time integration scheme

  • inactiveIf specified blocks matching these identifiers will be skipped.

    C++ Type:std::vector<std::string>

    Unit:(no unit assumed)

    Controllable:No

    Description:If specified blocks matching these identifiers will be skipped.

  • save_in_disp_xThe save_in variables for x displacement

    C++ Type:std::vector<AuxVariableName>

    Unit:(no unit assumed)

    Controllable:No

    Description:The save_in variables for x displacement

  • save_in_disp_yThe save_in variables for y displacement

    C++ Type:std::vector<AuxVariableName>

    Unit:(no unit assumed)

    Controllable:No

    Description:The save_in variables for y displacement

  • save_in_disp_zThe save_in variables for z displacement

    C++ Type:std::vector<AuxVariableName>

    Unit:(no unit assumed)

    Controllable:No

    Description:The save_in variables for z displacement

  • use_automatic_differentiationFalseFlag to use automatic differentiation (AD) objects when possible

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Flag to use automatic differentiation (AD) objects when possible

  • use_displaced_meshTrueWhether to use the displaced mesh.

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Whether to use the displaced mesh.

Optional Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Unit:(no unit assumed)

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

Advanced Parameters