RiceClass Module



Interfaces

public interface operator(+)

  • public function add_rice_to_rice(rice1, rice2) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    type(Rice_), intent(in) :: rice1
    type(Rice_), intent(in) :: rice2

    Return Value type(Rice_)

public interface assignment(=)


Derived Types

type, public ::  Rice_internode_info_

Components

Type Visibility Attributes Name Initial
real(kind=real64), public, allocatable :: FinalInterNodeLength(:)
real(kind=real64), public, allocatable :: FinalPetioleLength(:)
real(kind=real64), public, allocatable :: FinalLeafLength(:)
real(kind=real64), public, allocatable :: FinalLeafWidth(:)

type, public ::  Rice_NodeID_Branch_

Components

Type Visibility Attributes Name Initial
integer(kind=int32), public, allocatable :: ID(:)

type, public ::  Rice_

Components

Type Visibility Attributes Name Initial
integer(kind=int32), public :: version
integer(kind=int32), public :: num_shoot = 0
type(Rice_), public, allocatable :: rice_shoots(:)
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_PANICLE = 4
real(kind=real64), public :: mainstem_length
real(kind=real64), public :: mainstem_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 = 0
integer(kind=int32), public :: num_stem = 0
integer(kind=int32), public :: num_panicle = 0
integer(kind=int32), public :: num_root = 0
type(Leaf_), public, allocatable :: Leaf(:)
type(Stem_), public, allocatable :: Stem(:)
type(Panicle_), public, allocatable :: Panicle(:)
type(Root_), public, allocatable :: Root(:)
integer(kind=int32), public, allocatable :: leaf2stem(:,:)
integer(kind=int32), public, allocatable :: stem2stem(:,:)
integer(kind=int32), public, allocatable :: panicle2stem(:,:)
integer(kind=int32), public, allocatable :: root2stem(:,:)
integer(kind=int32), public, allocatable :: root2root(:,:)
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(Rice_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 :: panicle_division(1:3) = [2, 2, 300]

Type-Bound Procedures

procedure, public :: init => createRice
procedure, public :: create => createRice
procedure, public :: createShoot => createRiceShoot
procedure, public :: msh => mshRice
procedure, public :: vtk => vtkRice
procedure, public :: stl => stlRice
procedure, public :: json => jsonRice
procedure, public :: update => updateRice
procedure, public :: remove => removeRice
procedure, public :: rotate => rotateRice
procedure, public :: move => moveRice
procedure, public :: getElementList => getElementListRice
procedure, public :: ns => nsRice
procedure, public :: ne => neRice
procedure, public :: nn => nnRice
procedure, public :: checkMemoryRequirement => checkMemoryRequirementRice
procedure, public :: numleaf => numleafRice
procedure, public :: numstem => numStemRice
procedure, public :: numroot => numRootRice
procedure, public :: numPanicle => numPanicleRice
procedure, public :: getFEMDomainPointers => getFEMDomainPointersRice
procedure, public :: checkYoungModulus => checkYoungModulusRice
procedure, public :: checkPoissonRatio => checkPoissonRatioRice
procedure, public :: checkDensity => checkDensityRice
procedure, public :: getYoungModulus => getYoungModulusRice
procedure, public :: getPoissonRatio => getPoissonRatioRice
procedure, public :: getDensity => getDensityRice
procedure, public :: getYoungModulusField => getYoungModulusFieldRice
procedure, public :: getPoissonRatioField => getPoissonRatioFieldRice
procedure, public :: getDensityField => getDensityFieldRice
procedure, public :: getStressField => getStressFieldRice
procedure, public :: setYoungModulus => setYoungModulusRice
procedure, public :: setPoissonRatio => setPoissonRatioRice
procedure, public :: setDensity => setDensityRice
procedure, public :: getEigenMode => getEigenModeRice
procedure, public :: getDisplacement => getDisplacementRice
procedure, public :: deform => deformRice
procedure, public :: export_eig => export_eigRice

Functions

public function nsRice(this) result(ret)

Arguments

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

Return Value integer(kind=int32)

public pure function nnRice(this) result(ret)

Arguments

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

Return Value integer(kind=int32)

public function neRice(this) result(ret)

Arguments

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

Return Value integer(kind=int32)

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

Arguments

Type IntentOptional Attributes Name
class(Rice_), 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, (:,:)

public function numleafRice(this) result(ret)

Arguments

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

Return Value integer(kind=int32)

public function numStemRice(this) result(ret)

Arguments

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

Return Value integer(kind=int32)

public function numRootRice(this) result(ret)

Arguments

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

Return Value integer(kind=int32)

public function numPanicleRice(this) result(ret)

Arguments

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

Return Value integer(kind=int32)

public function getFEMDomainPointersRice(this) result(FEMDomainPointers)

Arguments

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

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

public function checkYoungModulusRice(this) result(all_young_modulus_is_set)

Arguments

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

Return Value logical

public function checkPoissonRatioRice(this) result(all_young_modulus_is_set)

Arguments

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

Return Value logical

public function checkDensityRice(this) result(all_young_modulus_is_set)

Arguments

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

Return Value logical

public function getYoungModulusFieldRice(this) result(YoungModulus)

Arguments

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

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

public function getPoissonRatioFieldRice(this) result(PoissonRatio)

Arguments

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

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

public function getDensityFieldRice(this) result(Density)

Arguments

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

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

public function getYoungModulusRice(this, DomainID, ElementID) result(YoungModulus)

Arguments

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

Return Value real(kind=real64)

public function getPoissonRatioRice(this, DomainID, ElementID) result(PoissonRatio)

Arguments

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

Return Value real(kind=real64)

public function getDensityRice(this, DomainID, ElementID) result(Density)

Arguments

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

Return Value real(kind=real64)

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

Arguments

Type IntentOptional Attributes Name
class(Rice_), 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, (:,:)

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

Arguments

Type IntentOptional Attributes Name
class(Rice_), 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, (:)

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

Arguments

Type IntentOptional Attributes Name
class(Rice_), 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, (:)

public function add_rice_to_rice(rice1, rice2) result(ret)

Arguments

Type IntentOptional Attributes Name
type(Rice_), intent(in) :: rice1
type(Rice_), intent(in) :: rice2

Return Value type(Rice_)


Subroutines

public recursive subroutine createRice(this, config, debug, output_detail_config)

Arguments

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

public recursive subroutine createRiceShoot(this, config, ShootIdx, debug)

Arguments

Type IntentOptional Attributes Name
class(Rice_), intent(inout) :: this
character(len=*), intent(in) :: config
integer(kind=int32), intent(in) :: ShootIdx
logical, intent(in), optional :: debug

public subroutine mshRice(this, name, num_threads)

Arguments

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

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

Arguments

Type IntentOptional Attributes Name
class(Rice_), 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

public subroutine jsonRice(this, name)

Arguments

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

public subroutine stlRice(this, name, num_threads, single_file)

Arguments

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

public subroutine moveRice(this, x, y, z)

Arguments

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

public subroutine rotateRice(this, x, y, z)

Arguments

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

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

Arguments

Type IntentOptional Attributes Name
class(Rice_), 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

public subroutine removeRice(this, root)

Arguments

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

public subroutine checkMemoryRequirementRice(this)

Arguments

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

public recursive subroutine setYoungModulusRice(this, YoungModulus, stem, root, leaf, panicle, ElementList)

Arguments

Type IntentOptional Attributes Name
class(Rice_), 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 :: panicle
integer(kind=int32), intent(in), optional :: ElementList(:,:)

public recursive subroutine setPoissonRatioRice(this, PoissonRatio, stem, root, leaf, panicle)

Arguments

Type IntentOptional Attributes Name
class(Rice_), 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 :: panicle

public recursive subroutine setDensityRice(this, Density, stem, root, leaf, panicle)

Arguments

Type IntentOptional Attributes Name
class(Rice_), 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 :: panicle

public subroutine deformRice(this, displacement)

Arguments

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

public subroutine export_eigRice(this, Name, Frequency, ModeVectors, stress_type)

Arguments

Type IntentOptional Attributes Name
class(Rice_), 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

public subroutine substitute_rice_into_rice(ret, rice1)

Arguments

Type IntentOptional Attributes Name
type(Rice_), intent(out) :: ret
type(Rice_), intent(in) :: rice1