Maize_ Derived Type

type, public :: Maize_


Components

Type Visibility Attributes Name Initial
integer(kind=int32), public :: TYPE_STEM = 1
integer(kind=int32), public :: TYPE_LEAF = 2
integer(kind=int32), public :: TYPE_ROOT = 3
integer(kind=int32), public :: TYPE_EAR = 4
integer(kind=int32), public :: TYPE_PANICLE = 5
type(Mesh_), public :: struct
integer(kind=int32), public, allocatable :: leaf2stem(:,:)
integer(kind=int32), public, allocatable :: stem2stem(:,:)
integer(kind=int32), public, allocatable :: ear2stem(:,:)
integer(kind=int32), public, allocatable :: panicle2stem(:,:)
integer(kind=int32), public, allocatable :: root2stem(:,:)
integer(kind=int32), public, allocatable :: root2root(:,:)
real(kind=real64), public :: mainstem_length
real(kind=real64), public :: mainstem_width
real(kind=real64), public :: mainstem_bottom_width
real(kind=real64), public :: mainstem_top_width
integer(kind=int32), public :: mainstem_node
real(kind=real64), public :: mainroot_length
real(kind=real64), public :: mainroot_width
integer(kind=int32), public :: mainroot_node
integer(kind=int32), public :: num_branch_root
integer(kind=int32), public :: num_branch_root_node
real(kind=real64), public :: ms_angle_ave = 0.0d0
real(kind=real64), public :: ms_angle_sig = 0.0d0
integer(kind=int32), public, allocatable :: Leaf_From(:)
real(kind=real64), public, allocatable :: leaf_curvature(:)
real(kind=real64), public, allocatable :: leaf_thickness_ave(:)
real(kind=real64), public, allocatable :: leaf_thickness_sig(:)
real(kind=real64), public, allocatable :: leaf_angle_ave_x(:)
real(kind=real64), public, allocatable :: leaf_angle_sig_x(:)
real(kind=real64), public, allocatable :: leaf_angle_ave_z(:)
real(kind=real64), public, allocatable :: leaf_angle_sig_z(:)
real(kind=real64), public, allocatable :: leaf_length_ave(:)
real(kind=real64), public, allocatable :: leaf_length_sig(:)
real(kind=real64), public, allocatable :: leaf_width_ave(:)
real(kind=real64), public, allocatable :: leaf_width_sig(:)
integer(kind=int32), public :: num_leaf
integer(kind=int32), public :: num_stem
integer(kind=int32), public :: num_ear = 1
integer(kind=int32), public :: num_panicle = 1
integer(kind=int32), public :: num_root
type(FEMDomain_), public, allocatable :: leaf_list(:)
type(FEMDomain_), public, allocatable :: stem_list(:)
type(FEMDomain_), public, allocatable :: root_list(:)
character(len=:), public, allocatable :: LeafSurfaceData
type(Leaf_), public, allocatable :: Leaf(:)
type(Stem_), public, allocatable :: Stem(:)
type(Ear_), public, allocatable :: Ear(:)
type(Panicle_), public, allocatable :: Panicle(:)
type(Root_), public, allocatable :: Root(:)
integer(kind=int32), public, allocatable :: NodeID_MainStem(:)
type(Maize_NodeID_Branch_), public, allocatable :: NodeID_Branch(:)
logical, public :: inLoop = .false.
real(kind=real64), public :: hours = 0.0d0
real(kind=real64), public :: FullyExpanded_stem_threshold = 0.10d0
integer(kind=int32), public :: MaxBranchNum = 20
type(Maize_internode_info_), public, allocatable :: InterNodeInfo(:)
real(kind=real64), public :: default_Leaf_growth_ratio = 1.0d0/3.0d0
real(kind=real64), public :: default_Stem_growth_ratio = 1.0d0/3.0d0
integer(kind=int32), public, allocatable :: MainStem_num_branch(:)
real(kind=real64), public :: apical_dominance_distance = 1.0d0
type(ContactMechanics_), public :: contact
real(kind=real64), public :: Gravity_acceralation = 9.810d0
real(kind=real64), public :: PenaltyParameter = 100000.0d0
logical, public :: GaussPointProjection = .false.
integer(kind=int32), public :: stem_division(1:3) = [10, 10, 10]
integer(kind=int32), public :: leaf_division(1:3) = [10, 10, 10]
integer(kind=int32), public :: ear_division(1:3) = [10, 10, 10]
integer(kind=int32), public :: panicle_division(1:3) = [10, 10, 10]

Type-Bound Procedures

procedure, public :: init => createMaize

  • public subroutine createMaize(this, config, debug)

    Arguments

    Type IntentOptional Attributes Name
    class(Maize_), intent(inout) :: this
    character(len=*), intent(in) :: config
    logical, intent(in), optional :: debug

procedure, public :: create => createMaize

  • public subroutine createMaize(this, config, debug)

    Arguments

    Type IntentOptional Attributes Name
    class(Maize_), intent(inout) :: this
    character(len=*), intent(in) :: config
    logical, intent(in), optional :: debug

procedure, public :: msh => mshMaize

  • public subroutine mshMaize(this, name, num_threads)

    Arguments

    Type IntentOptional Attributes Name
    class(Maize_), intent(inout) :: this
    character(len=*), intent(in) :: name
    integer(kind=int32), intent(in), optional :: num_threads

procedure, public :: vtk => vtkMaize

  • public subroutine vtkMaize(this, name, num_threads, single_file, scalar_field, vector_field, tensor_field, field_name)

    Arguments

    Type IntentOptional Attributes Name
    class(Maize_), intent(inout) :: this
    character(len=*), intent(in) :: name
    integer(kind=int32), intent(in), optional :: num_threads
    logical, intent(in), optional :: single_file
    real(kind=real64), intent(in), optional :: scalar_field(:)
    real(kind=real64), intent(in), optional :: vector_field(:,:)
    real(kind=real64), intent(in), optional :: tensor_field(:,:,:)
    character(len=*), intent(in), optional :: field_name

procedure, public :: stl => stlMaize

  • public subroutine stlMaize(this, name, num_threads, single_file)

    Arguments

    Type IntentOptional Attributes Name
    class(Maize_), intent(inout) :: this
    character(len=*), intent(in) :: name
    integer(kind=int32), intent(in), optional :: num_threads
    logical, intent(in), optional :: single_file

procedure, public :: json => jsonMaize

  • public subroutine jsonMaize(this, name)

    Arguments

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

procedure, public :: update => updateMaize

  • public recursive subroutine updateMaize(this, stem_id, root_id, leaf_id, overset_margin, debug)

    Arguments

    Type IntentOptional Attributes Name
    class(Maize_), intent(inout) :: this
    integer(kind=int32), intent(in), optional :: stem_id
    integer(kind=int32), intent(in), optional :: root_id
    integer(kind=int32), intent(in), optional :: leaf_id
    real(kind=real64), intent(in), optional :: overset_margin
    logical, intent(in), optional :: debug

procedure, public :: remove => removeMaize

  • public subroutine removeMaize(this, root)

    Arguments

    Type IntentOptional Attributes Name
    class(Maize_), intent(inout) :: this
    logical, intent(in), optional :: root

procedure, public :: rotate => rotateMaize

  • public subroutine rotateMaize(this, x, y, z)

    Arguments

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

procedure, public :: move => moveMaize

  • public subroutine moveMaize(this, x, y, z)

    Arguments

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

procedure, public :: getElementList => getElementListMaize

  • public function getElementListMaize(this, x_min, x_max, y_min, y_max, z_min, z_max, debug) result(ElementList)

    Arguments

    Type IntentOptional Attributes Name
    class(Maize_), intent(inout) :: this
    real(kind=real64), intent(in), optional :: x_min
    real(kind=real64), intent(in), optional :: x_max
    real(kind=real64), intent(in), optional :: y_min
    real(kind=real64), intent(in), optional :: y_max
    real(kind=real64), intent(in), optional :: z_min
    real(kind=real64), intent(in), optional :: z_max
    logical, intent(in), optional :: debug

    Return Value integer(kind=int32), allocatable, (:,:)

procedure, public :: ns => nsMaize

  • public function nsMaize(this) result(ret)

    Arguments

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

    Return Value integer(kind=int32)

procedure, public :: ne => neMaize

  • public function neMaize(this) result(ret)

    Arguments

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

    Return Value integer(kind=int32)

procedure, public :: nn => nnMaize

  • public pure function nnMaize(this) result(ret)

    Arguments

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

    Return Value integer(kind=int32)

procedure, public :: nn_range => nn_rangeMaize

  • public function nn_rangeMaize(this, organ_type, ID) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    class(Maize_), intent(inout) :: this
    character(len=*), intent(in) :: organ_type
    integer(kind=int32), intent(in) :: ID

    Return Value integer(kind=int32), (1:2)

procedure, public :: checkMemoryRequirement => checkMemoryRequirementMaize

procedure, public :: numleaf => numleafMaize

  • public function numleafMaize(this) result(ret)

    Arguments

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

    Return Value integer(kind=int32)

procedure, public :: numstem => numStemMaize

  • public function numStemMaize(this) result(ret)

    Arguments

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

    Return Value integer(kind=int32)

procedure, public :: numroot => numRootMaize

  • public function numRootMaize(this) result(ret)

    Arguments

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

    Return Value integer(kind=int32)

procedure, public :: numEar => numEarMaize

  • public function numEarMaize(this) result(ret)

    Arguments

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

    Return Value integer(kind=int32)

procedure, public :: numPanicle => numPanicleMaize

  • public function numPanicleMaize(this) result(ret)

    Arguments

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

    Return Value integer(kind=int32)

procedure, public :: getFEMDomainPointers => getFEMDomainPointersMaize

  • public function getFEMDomainPointersMaize(this) result(FEMDomainPointers)

    Arguments

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

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

procedure, public :: checkYoungModulus => checkYoungModulusMaize

  • public function checkYoungModulusMaize(this) result(all_young_modulus_is_set)

    Arguments

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

    Return Value logical

procedure, public :: checkPoissonRatio => checkPoissonRatioMaize

  • public function checkPoissonRatioMaize(this) result(all_young_modulus_is_set)

    Arguments

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

    Return Value logical

procedure, public :: checkDensity => checkDensityMaize

  • public function checkDensityMaize(this) result(all_young_modulus_is_set)

    Arguments

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

    Return Value logical

procedure, public :: getYoungModulus => getYoungModulusMaize

  • public function getYoungModulusMaize(this, DomainID, ElementID) result(YoungModulus)

    Arguments

    Type IntentOptional Attributes Name
    class(Maize_), intent(in) :: this
    integer(kind=int32), intent(in), optional :: DomainID
    integer(kind=int32), intent(in), optional :: ElementID

    Return Value real(kind=real64)

procedure, public :: getPoissonRatio => getPoissonRatioMaize

  • public function getPoissonRatioMaize(this, DomainID, ElementID) result(PoissonRatio)

    Arguments

    Type IntentOptional Attributes Name
    class(Maize_), intent(in) :: this
    integer(kind=int32), intent(in) :: DomainID
    integer(kind=int32), intent(in) :: ElementID

    Return Value real(kind=real64)

procedure, public :: getDensity => getDensityMaize

  • public function getDensityMaize(this, DomainID, ElementID) result(Density)

    Arguments

    Type IntentOptional Attributes Name
    class(Maize_), intent(in) :: this
    integer(kind=int32), intent(in) :: DomainID
    integer(kind=int32), intent(in) :: ElementID

    Return Value real(kind=real64)

procedure, public :: getVertices => getVerticesMaize

  • public subroutine getVerticesMaize(this, Vertices, VertexIDs)

    Arguments

    Type IntentOptional Attributes Name
    class(Maize_), intent(inout) :: this
    real(kind=real64), intent(inout), allocatable :: Vertices(:)
    integer(kind=int32), intent(inout), allocatable :: VertexIDs(:)

procedure, public :: getYoungModulusField => getYoungModulusFieldMaize

  • public function getYoungModulusFieldMaize(this) result(YoungModulus)

    Arguments

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

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

procedure, public :: getPoissonRatioField => getPoissonRatioFieldMaize

  • public function getPoissonRatioFieldMaize(this) result(PoissonRatio)

    Arguments

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

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

procedure, public :: getDensityField => getDensityFieldMaize

  • public function getDensityFieldMaize(this) result(Density)

    Arguments

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

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

procedure, public :: getStressField => getStressFieldMaize

  • public function getStressFieldMaize(this, displacement, i, j, option) result(StressField)

    Arguments

    Type IntentOptional Attributes Name
    class(Maize_), intent(inout) :: this
    real(kind=real64), intent(in) :: displacement(:)
    integer(kind=int32), intent(in), optional :: i
    integer(kind=int32), intent(in), optional :: j
    character(len=*), intent(in), optional :: option

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

procedure, public :: setYoungModulus => setYoungModulusMaize

  • public recursive subroutine setYoungModulusMaize(this, YoungModulus, stem, root, leaf, ear, panicle, ElementList)

    Arguments

    Type IntentOptional Attributes Name
    class(Maize_), intent(inout) :: this
    real(kind=real64), intent(in) :: YoungModulus
    logical, intent(in), optional :: stem
    logical, intent(in), optional :: root
    logical, intent(in), optional :: leaf
    logical, intent(in), optional :: ear
    logical, intent(in), optional :: panicle
    integer(kind=int32), intent(in), optional :: ElementList(:,:)

procedure, public :: setPoissonRatio => setPoissonRatioMaize

  • public recursive subroutine setPoissonRatioMaize(this, PoissonRatio, stem, root, leaf, ear, panicle)

    Arguments

    Type IntentOptional Attributes Name
    class(Maize_), intent(inout) :: this
    real(kind=real64), intent(in) :: PoissonRatio
    logical, intent(in), optional :: stem
    logical, intent(in), optional :: root
    logical, intent(in), optional :: leaf
    logical, intent(in), optional :: ear
    logical, intent(in), optional :: panicle

procedure, public :: setDensity => setDensityMaize

  • public recursive subroutine setDensityMaize(this, Density, stem, root, leaf, ear, panicle)

    Arguments

    Type IntentOptional Attributes Name
    class(Maize_), intent(inout) :: this
    real(kind=real64), intent(in) :: Density
    logical, intent(in), optional :: stem
    logical, intent(in), optional :: root
    logical, intent(in), optional :: leaf
    logical, intent(in), optional :: ear
    logical, intent(in), optional :: panicle

procedure, public :: getEigenMode => getEigenModeMaize

  • public function getEigenModeMaize(this, ground_level, penalty, debug, Frequency, EbOM_Algorithm, num_mode) result(EigenVectors)

    Arguments

    Type IntentOptional Attributes Name
    class(Maize_), intent(inout), target :: this
    real(kind=real64), intent(in) :: ground_level
    real(kind=real64), intent(in), optional :: penalty
    logical, intent(in), optional :: debug
    real(kind=real64), intent(inout), allocatable :: Frequency(:)
    character(len=*), intent(in), optional :: EbOM_Algorithm
    integer(kind=int32), intent(in), optional :: num_mode

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

procedure, public :: getDisplacement => getDisplacementMaize

  • public function getDisplacementMaize(this, ground_level, penalty, debug, EbOM_Algorithm) result(displacement)

    Arguments

    Type IntentOptional Attributes Name
    class(Maize_), intent(inout), target :: this
    real(kind=real64), intent(in) :: ground_level
    real(kind=real64), intent(in), optional :: penalty
    logical, intent(in), optional :: debug
    character(len=*), intent(in), optional :: EbOM_Algorithm

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

procedure, public :: deform => deformMaize

  • public subroutine deformMaize(this, displacement)

    Arguments

    Type IntentOptional Attributes Name
    class(Maize_), intent(inout), target :: this
    real(kind=real64), intent(in), optional :: displacement(:)

procedure, public :: export_eig => export_eigMaize

  • public subroutine export_eigMaize(this, Name, Frequency, ModeVectors, stress_type)

    Arguments

    Type IntentOptional Attributes Name
    class(Maize_), intent(inout) :: this
    character(len=*), intent(in) :: Name
    real(kind=real64), intent(in) :: Frequency(:)
    real(kind=real64), intent(in) :: ModeVectors(:,:)
    character(len=*), intent(in), optional :: stress_type

procedure, public :: resizeLeaf => resizeLeafMaize

  • public subroutine resizeLeafMaize(this, LeafID, Length)

    Arguments

    Type IntentOptional Attributes Name
    class(Maize_), intent(inout) :: this
    integer(kind=int32), intent(in) :: LeafID
    real(kind=real64), intent(in) :: Length