StemClass Module



Variables

Type Visibility Attributes Name Initial
integer(kind=int32), public :: PF_STEM_SHAPE_RECTANGULAR = 1
integer(kind=int32), public :: PF_STEM_SHAPE_CYLINDER = 2
integer(kind=int32), public :: PF_STEM_SHAPE_HYPERBOLOID = 3

Interfaces

public interface operator(//)

  • public function append_stem_object_vector(arg1, arg2) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    type(Stem_), intent(in), allocatable :: arg1(:)
    type(Stem_), intent(in), allocatable :: arg2(:)

    Return Value type(Stem_), allocatable, (:)


Derived Types

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
procedure, public :: rotate => rotateStem
procedure, public, pass :: change_length_or_width_stem
procedure, public, pass :: grow_by_pressure_stem
generic, public :: grow => grow_by_pressure_stem
generic, public :: change_length_or_width => change_length_or_width_stem
procedure, public :: resize => resizeStem
procedure, public :: move => moveStem
procedure, public :: connect => connectStem
procedure, public :: empty => emptyStem
procedure, public :: getCoordinate => getCoordinateStem
procedure, public :: getLength => getLengthStem
procedure, public :: getAngles => getAngles_StemClass
procedure, public :: getWidth => getWidthStem
procedure, public :: FullyExpanded => FullyExpandedStem
procedure, public :: gmsh => gmshStem
procedure, public :: msh => mshStem
procedure, public :: vtk => vtkStem
procedure, public :: stl => stlStem
procedure, public :: ply => plyStem
procedure, public :: export => exportStem
procedure, public :: getVolume => getVolumeStem
procedure, public :: getBiomass => getBiomassStem
procedure, public :: set_material => set_material_Stem
procedure, public :: sync => syncStem
procedure, public :: nn => nnStem
procedure, public :: ne => neStem
procedure, public :: remove => removeStem

Functions

public function getAngles_StemClass(this) result(ret)

Arguments

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

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

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, (:)

public function getLengthStem(obj) result(ret)

Arguments

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

Return Value real(kind=real64)

public function getWidthStem(obj) result(ret)

Arguments

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

Return Value real(kind=real64)

public function getVolumeStem(obj) result(ret)

Arguments

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

Return Value real(kind=real64)

public function getBiomassStem(obj) result(ret)

Arguments

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

Return Value real(kind=real64)

public function emptyStem(obj) result(Stem_is_empty)

Arguments

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

Return Value logical

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

public function nnStem(this) result(ret)

Arguments

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

Return Value integer(kind=int32)

public function neStem(this) result(ret)

Arguments

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

Return Value integer(kind=int32)

public function append_stem_object_vector(arg1, arg2) result(ret)

Arguments

Type IntentOptional Attributes Name
type(Stem_), intent(in), allocatable :: arg1(:)
type(Stem_), intent(in), allocatable :: arg2(:)

Return Value type(Stem_), allocatable, (:)


Subroutines

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

public subroutine resize(obj, x, y, z)

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

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

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

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

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

public subroutine gmshStem(obj, name)

Arguments

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

public subroutine mshStem(obj, name)

Arguments

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

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

public subroutine stlStem(obj, name)

Arguments

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

public subroutine plyStem(obj, name)

Arguments

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

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

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

public subroutine rescaleStem(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

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

public subroutine syncStemVector(obj, from, mpid)

Arguments

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

public subroutine removeStem(this)

Arguments

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

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

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