m_MEF90_DefMechSplitHD Module



Derived Types

type, public, extends(MEF90DefMechSplit) ::  MEF90DefMechSplitHD

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 => D2EEDHD
procedure, public, pass(self) :: DEED => DEEDHD
procedure, public, pass(self) :: EED => EEDHD
procedure, public, pass(self) :: setFromOptions => setFromOptionsHD
procedure, public, pass(self) :: setup => setupHD
procedure, public, pass(self) :: view => MEF90Object_view
procedure, public, pass(self) :: view_internal => viewHD

Subroutines

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

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

D2EEDHD: 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(MEF90DefMechSplitHD), 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 DEEDHD(self, HookesLaw, phi, DEEDPlus, DEEDMinus, ierr)

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

DEEDHD: 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(MEF90DefMechSplitHD), 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 EEDHD(self, HookesLaw, phi, EEDPlus, EEDMinus, ierr)

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

EEDHD: 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(MEF90DefMechSplitHD), 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 setFromOptionsHD(self, ierr)

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

setFromOptionsHD: the default constructor for a MEF90DefMechSplitHD

Arguments

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

private subroutine setupHD(self, Strain, ierr)

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

setupHD: the setup routine for a MEF90DefMechSplitHD, which does nothing since there is no split

Arguments

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

private subroutine viewHD(self, viewer, ierr)

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

viewHD: view a MEF90DefMechSplitHD

Arguments

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