Stem_ Derived Type

type, public :: Stem_


Components

Type Visibility Attributes Name Initial
type(FEMDomain_), public :: FEMDomain
integer(kind=int32), public :: cross_section_shape = 1
real(kind=real64), public :: Thickness
real(kind=real64), public :: length
real(kind=real64), public :: width
real(kind=real64), public :: MaxThickness
real(kind=real64), public :: Maxlength
real(kind=real64), public :: Maxwidth
real(kind=real64), public :: center_bottom(3)
real(kind=real64), public :: center_top(3)
real(kind=real64), public :: radius_bottom(3)
real(kind=real64), public :: radius_top(3)
real(kind=real64), public :: outer_normal_bottom(3)
real(kind=real64), public :: outer_normal_top(3)
real(kind=real64), public :: rot_x = 0.0d0
real(kind=real64), public :: rot_y = 0.0d0
real(kind=real64), public :: rot_z = 0.0d0
real(kind=real64), public :: disp_x = 0.0d0
real(kind=real64), public :: disp_y = 0.0d0
real(kind=real64), public :: disp_z = 0.0d0
integer(kind=int32), public :: EdgeNodeID(4)
integer(kind=int32), public :: EdgeElemID(4)
real(kind=real64), public :: maxdiameter
real(kind=real64), public :: mindiameter
real(kind=real64), public :: minlength
integer(kind=int32), public, allocatable :: I_planeNodeID(:)
integer(kind=int32), public, allocatable :: I_planeElementID(:)
integer(kind=int32), public, allocatable :: II_planeNodeID(:)
integer(kind=int32), public, allocatable :: II_planeElementID(:)
integer(kind=int32), public :: A_PointNodeID
integer(kind=int32), public :: B_PointNodeID
integer(kind=int32), public :: C_PointNodeID
integer(kind=int32), public :: D_PointNodeID
integer(kind=int32), public :: A_PointElementID
integer(kind=int32), public :: B_PointElementID
integer(kind=int32), public :: xnum = 10
integer(kind=int32), public :: ynum = 10
integer(kind=int32), public :: znum = 10
integer(kind=int32), public :: StemID = -1
integer(kind=int32), public :: InterNodeID = -1
logical, public :: already_grown = .false.
real(kind=real64), public, allocatable :: DryDensity(:)
real(kind=real64), public, allocatable :: WaterContent(:)
real(kind=real64), public, allocatable :: YoungModulus(:)
real(kind=real64), public, allocatable :: PoissonRatio(:)
real(kind=real64), public, allocatable :: CrossSectionalYoungModulus(:)
real(kind=real64), public, allocatable :: Density(:)
real(kind=real64), public, allocatable :: CarbonDiffusionCoefficient(:)
real(kind=real64), public, allocatable :: Stress(:,:,:)
real(kind=real64), public, allocatable :: Displacement(:,:)
real(kind=real64), public, allocatable :: BoundaryTractionForce(:,:)
real(kind=real64), public, allocatable :: BoundaryDisplacement(:,:)
integer(kind=int32), public :: Division
real(kind=real64), public :: my_time = 0.0d0
real(kind=real64), public :: initial_width = 0.0010d0
real(kind=real64), public :: initial_length = 0.0010d0
real(kind=real64), public :: final_width = 0.0040d0
real(kind=real64), public :: final_length = 0.040d0
real(kind=real64), public :: width_growth_ratio = 1.0d0/4.0d0
real(kind=real64), public :: length_growth_ratio = 1.0d0/4.0d0
logical, public :: material_is_set
type(Stem_), public, pointer :: pStem
real(kind=real64), public :: R_d = 1.0d0
real(kind=real64), public :: default_CarbonDiffusionCoefficient = 0.0010d0

Type-Bound Procedures

procedure, public :: Init => initStem

  • public subroutine initStem(obj, config, regacy, Thickness, length, width, MaxThickness, Maxlength, MaxWidth, rotx, roty, rotz, location, x_num, y_num, z_num)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(inout) :: obj
    character(len=*), intent(in), optional :: config
    logical, intent(in), optional :: regacy
    real(kind=real64), intent(in), optional :: Thickness
    real(kind=real64), intent(in), optional :: length
    real(kind=real64), intent(in), optional :: width
    real(kind=real64), intent(in), optional :: MaxThickness
    real(kind=real64), intent(in), optional :: Maxlength
    real(kind=real64), intent(in), optional :: MaxWidth
    real(kind=real64), intent(in), optional :: rotx
    real(kind=real64), intent(in), optional :: roty
    real(kind=real64), intent(in), optional :: rotz
    real(kind=real64), intent(in), optional :: location(3)
    integer(kind=int32), intent(in), optional :: x_num
    integer(kind=int32), intent(in), optional :: y_num
    integer(kind=int32), intent(in), optional :: z_num

procedure, public :: rotate => rotateStem

  • public recursive subroutine rotateStem(obj, x, y, z, reset)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(inout) :: obj
    real(kind=real64), intent(in), optional :: x
    real(kind=real64), intent(in), optional :: y
    real(kind=real64), intent(in), optional :: z
    logical, intent(in), optional :: reset

procedure, public, pass :: change_length_or_width_stem

  • public recursive subroutine change_length_or_width_stem(obj, length, length_rate, Width, width_rate, dt)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(inout) :: obj
    real(kind=real64), intent(in), optional :: length
    real(kind=real64), intent(in), optional :: length_rate
    real(kind=real64), intent(in), optional :: Width
    real(kind=real64), intent(in), optional :: width_rate
    real(kind=real64), intent(in), optional :: dt

procedure, public, pass :: grow_by_pressure_stem

  • public subroutine grow_by_pressure_stem(this, pressure)

    compute cell-averaged mean stress trace(sigma)

    Read more…

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(inout) :: this
    real(kind=real64), intent(in) :: pressure

generic, public :: grow => grow_by_pressure_stem

  • public subroutine grow_by_pressure_stem(this, pressure)

    compute cell-averaged mean stress trace(sigma)

    Read more…

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(inout) :: this
    real(kind=real64), intent(in) :: pressure

generic, public :: change_length_or_width => change_length_or_width_stem

  • public recursive subroutine change_length_or_width_stem(obj, length, length_rate, Width, width_rate, dt)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(inout) :: obj
    real(kind=real64), intent(in), optional :: length
    real(kind=real64), intent(in), optional :: length_rate
    real(kind=real64), intent(in), optional :: Width
    real(kind=real64), intent(in), optional :: width_rate
    real(kind=real64), intent(in), optional :: dt

procedure, public :: resize => resizeStem

  • public subroutine resizeStem(obj, x, y, z)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(inout), optional :: obj
    real(kind=real64), intent(in), optional :: x
    real(kind=real64), intent(in), optional :: y
    real(kind=real64), intent(in), optional :: z

procedure, public :: move => moveStem

  • public recursive subroutine moveStem(obj, x, y, z, reset)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(inout) :: obj
    real(kind=real64), intent(in), optional :: x
    real(kind=real64), intent(in), optional :: y
    real(kind=real64), intent(in), optional :: z
    logical, intent(in), optional :: reset

procedure, public :: connect => connectStem

  • public subroutine connectStem(obj, direct, stem)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(inout) :: obj
    character(len=2), intent(in) :: direct
    class(Stem_), intent(inout) :: stem

procedure, public :: empty => emptyStem

  • public function emptyStem(obj) result(Stem_is_empty)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(in) :: obj

    Return Value logical

procedure, public :: getCoordinate => getCoordinateStem

  • public function getCoordinateStem(obj, nodetype) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(in) :: obj
    character(len=*), intent(in) :: nodetype

    Return Value real(kind=real64), allocatable, (:)

procedure, public :: getLength => getLengthStem

  • public function getLengthStem(obj) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(in) :: obj

    Return Value real(kind=real64)

procedure, public :: getAngles => getAngles_StemClass

  • public function getAngles_StemClass(this) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(in) :: this

    Return Value real(kind=real64), (1:3)

procedure, public :: getWidth => getWidthStem

  • public function getWidthStem(obj) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(in) :: obj

    Return Value real(kind=real64)

procedure, public :: FullyExpanded => FullyExpandedStem

  • public function FullyExpandedStem(obj, threshold) result(ret_expanded)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(inout), optional :: obj
    real(kind=real64), intent(in) :: threshold

    Return Value logical

procedure, public :: gmsh => gmshStem

  • public subroutine gmshStem(obj, name)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(inout) :: obj
    character(len=*), intent(in) :: name

procedure, public :: msh => mshStem

  • public subroutine mshStem(obj, name)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(inout) :: obj
    character(len=*), intent(in) :: name

procedure, public :: vtk => vtkStem

  • public subroutine vtkStem(obj, name, field_name)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(inout) :: obj
    character(len=*), intent(in) :: name
    character(len=*), intent(in), optional :: field_name

procedure, public :: stl => stlStem

  • public subroutine stlStem(obj, name)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(inout) :: obj
    character(len=*), intent(in) :: name

procedure, public :: ply => plyStem

  • public subroutine plyStem(obj, name)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(inout) :: obj
    character(len=*), intent(in) :: name

procedure, public :: export => exportStem

  • public subroutine exportStem(obj, FileName, StemID)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(in) :: obj
    character(len=*), intent(in) :: FileName
    integer(kind=int32), intent(inout), optional :: StemID

procedure, public :: getVolume => getVolumeStem

  • public function getVolumeStem(obj) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(in) :: obj

    Return Value real(kind=real64)

procedure, public :: getBiomass => getBiomassStem

  • public function getBiomassStem(obj) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(in) :: obj

    Return Value real(kind=real64)

procedure, public :: set_material => set_material_Stem

  • public subroutine set_material_Stem(this, YoungModulus, PoissonRatio, side_stiffness_ratio)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(inout) :: this
    real(kind=real64), intent(in) :: YoungModulus
    real(kind=real64), intent(in) :: PoissonRatio
    real(kind=real64), intent(in) :: side_stiffness_ratio

procedure, public :: sync => syncStem

  • public subroutine syncStem(obj, from, mpid)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(inout) :: obj
    integer(kind=int32), intent(in) :: from
    type(MPI_), intent(inout) :: mpid

procedure, public :: nn => nnStem

  • public function nnStem(this) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(in) :: this

    Return Value integer(kind=int32)

procedure, public :: ne => neStem

  • public function neStem(this) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(in) :: this

    Return Value integer(kind=int32)

procedure, public :: remove => removeStem

  • public subroutine removeStem(this)

    Arguments

    Type IntentOptional Attributes Name
    class(Stem_), intent(inout) :: this