m_MEF90_DefMechSplitDeviatoric Module



Derived Types

type, public, extends(MEF90DefMechSplit) ::  MEF90DefMechSplitDeviatoric

Components

Type Visibility Attributes Name Initial
integer(kind=C_INT32_T), public :: comm
real(kind=C_DOUBLE), public :: gamma = 1.0e-1
logical(kind=C_BOOL), public :: isHybrid = PETSC_FALSE
character(kind=c_char, len=MEF90MXSTRLEN), public :: name = "NULL"
character(kind=c_char, len=MEF90MXSTRLEN), public :: prefix
integer, public :: quadratureOrder = 0
class(mef90Mat), public, allocatable :: strain
character(len=MEF90MXSTRLEN), public :: type = ''

Type-Bound Procedures

procedure, public, pass(self) :: D2EED => D2EEDDeviatoric
procedure, public, pass(self) :: DEED => DEEDDeviatoric
procedure, public, pass(self) :: EED => EEDDeviatoric
procedure, public, pass(self) :: setFromOptions => setFromOptionsDeviatoric
procedure, public, pass(self) :: setup => setupDeviatoric
procedure, public, pass(self) :: view => MEF90Object_view
procedure, public, pass(self) :: view_internal => viewDeviatoric

Subroutines

private subroutine D2EEDDeviatoric(self, HookesLaw, phi, psi, D2EEDPlus, D2EEDMinus, ierr)

Author
Blaise Bourdin (2020, bourdin@lsu.edu)

D2EEDDeviatoric: Compute the second derivative of the positive and negative part of the elastic energy density (positive and negative stress)

Arguments

Type IntentOptional Attributes Name
class(MEF90DefMechSplitDeviatoric), intent(in) :: self
class(MEF90HookesLaw), intent(in) :: HookesLaw
class(mef90Mat), intent(in) :: phi
class(mef90Mat), intent(in) :: psi
real(kind=C_DOUBLE), intent(out) :: D2EEDPlus
real(kind=C_DOUBLE), intent(out) :: D2EEDMinus
integer(kind=C_INT32_T), intent(inout) :: ierr

private subroutine DEEDDeviatoric(self, HookesLaw, phi, DEEDPlus, DEEDMinus, ierr)

Author
Blaise Bourdin (2020, bourdin@lsu.edu) Blaise Bourdin (2026, bourdin@mcmaster.ca)

DEEDDeviatoric: Compute the directional derivative of the positive and negative part of the elastic energy density in the direction phi at the point defined by the strain tensor

Arguments

Type IntentOptional Attributes Name
class(MEF90DefMechSplitDeviatoric), intent(in) :: self
class(MEF90HookesLaw), intent(in) :: HookesLaw
class(mef90Mat), intent(in) :: phi
real(kind=C_DOUBLE), intent(out) :: DEEDPlus
real(kind=C_DOUBLE), intent(out) :: DEEDMinus
integer(kind=C_INT32_T), intent(inout) :: ierr

private subroutine EEDDeviatoric(self, HookesLaw, phi, EEDPlus, EEDMinus, ierr)

Author
Blaise Bourdin (2020, bourdin@lsu.edu) Blaise Bourdin (2026, bourdin@mcmaster.ca)

EEDDeviatoric: Compute the positive and negative part of the elastic energy density associated with a strain tensor EEDMinus = SmoothPositiveSquare(-trace(e)) AI.I/2/N^2 EEDPlus = Ae.e/2 - EEDMinus with N = 3 for 3D and N = 2 for 2D, where e is the strain tensor, A is the Hookes law tensor

Arguments

Type IntentOptional Attributes Name
class(MEF90DefMechSplitDeviatoric), intent(in) :: self
class(MEF90HookesLaw), intent(in) :: HookesLaw
class(mef90Mat), intent(in) :: phi
real(kind=C_DOUBLE), intent(out) :: EEDPlus
real(kind=C_DOUBLE), intent(out) :: EEDMinus
integer(kind=C_INT32_T), intent(inout) :: ierr

private subroutine setFromOptionsDeviatoric(self, ierr)

Author
Blaise Bourdin (2020, bourdin@lsu.edu) Blaise Bourdin (2026, bourdin@mcmaster.ca)

setFromOptionsDeviatoric: the default constructor for a MEF90DefMechSplitDeviatoric

Arguments

Type IntentOptional Attributes Name
class(MEF90DefMechSplitDeviatoric), intent(inout) :: self
integer(kind=C_INT32_T), intent(inout) :: ierr

private subroutine setupDeviatoric(self, Strain, ierr)

Author
Blaise Bourdin (2020, bourdin@lsu.edu) Blaise Bourdin (2026, bourdin@mcmaster.ca)

setupDeviatoric: the setup routine for a MEF90DefMechSplitDeviatoric, which does nothing since there is no split

Arguments

Type IntentOptional Attributes Name
class(MEF90DefMechSplitDeviatoric), intent(inout) :: self
class(mef90Mat), intent(in) :: Strain
integer(kind=C_INT32_T), intent(inout) :: ierr

private subroutine viewDeviatoric(self, viewer, ierr)

Author
Blaise Bourdin (2026, bourdin@mcmaster.ca)

viewDeviatoric: view a MEF90DefMechSplitDeviatoric

Arguments

Type IntentOptional Attributes Name
class(MEF90DefMechSplitDeviatoric), intent(in) :: self
type(tPetscViewer), intent(in) :: viewer
integer(kind=C_INT32_T), intent(inout) :: ierr