MEF90DefMechSplitDeviatoric Derived Type

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

  • 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

procedure, public, pass(self) :: DEED => DEEDDeviatoric

  • 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

procedure, public, pass(self) :: EED => EEDDeviatoric

  • 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

procedure, public, pass(self) :: setFromOptions => setFromOptionsDeviatoric

  • 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

procedure, public, pass(self) :: setup => setupDeviatoric

  • 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

procedure, public, pass(self) :: view => MEF90Object_view

  • private subroutine MEF90Object_view(self, viewer, ierr)

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

    MEF90Object_view: Views a MEF90Object and flagged it as viewed so that it is not viewed multiple times when -verbose is set to a high value

    Arguments

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

procedure, public, pass(self) :: view_internal => viewDeviatoric

  • 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