PanicleClass Module



Interfaces

public interface operator(//)

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

    Arguments

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

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


Derived Types

type, public ::  panicle_config_

Components

Type Visibility Attributes Name Initial
integer(kind=int32), public :: num_seed_column = 30
real(kind=real64), public :: panicle_seed_interval = 1.0d0/1000.0d0
real(kind=real64), public :: panicle_seed_diameter = 5.0d0/1000.0d0
real(kind=real64), public :: panicle_seed_length = 10.0d0/1000.0d0
real(kind=real64), public :: panicle_panicle_diameter = 1.0d0/1000.0d0

type, public ::  Panicle_

Components

Type Visibility Attributes Name Initial
type(FEMDomain_), public :: FEMDomain
real(kind=real64), public :: Length
real(kind=real64), public :: Width
real(kind=real64), public :: Angle
type(Stem_), public, pointer :: pStem
integer(kind=int32), public :: division(1:3) = [5, 5, 5]
integer(kind=int32), public :: rice_seed_division(1:3) = [3, 3, 3]
integer(kind=int32), public :: wheat_seed_division(1:3) = [2, 2, 2]
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
real(kind=real64), public :: default_rice_seed_interval = 3.0d0/1000.0d0
real(kind=real64), public :: default_rice_seed_branch_length = 3.0d0/1000.0d0
real(kind=real64), public :: default_rice_seed_length = 6.0d0/1000.0d0
real(kind=real64), public :: default_rice_seed_width = 4.0d0/1000.0d0
real(kind=real64), public :: default_rice_seed_thickness = 2.0d0/1000.0d0
real(kind=real64), public :: default_rice_panicle_curvature = 0.20d0
real(kind=real64), public :: disp_x
real(kind=real64), public :: disp_y
real(kind=real64), public :: disp_z
real(kind=real64), public, allocatable :: YoungModulus(:)
real(kind=real64), public, allocatable :: PoissonRatio(:)
real(kind=real64), public, allocatable :: Density(:)
real(kind=real64), public, allocatable :: Stress(:,:,:)
real(kind=real64), public, allocatable :: Displacement(:,:)

Type-Bound Procedures

procedure, public :: Init => initPanicle
procedure, public :: move => movePanicle
procedure, public :: rotate => rotatePanicle
procedure, public :: getCoordinate => getCoordinatePanicle
procedure, public :: connect => connectPanicle
procedure, public :: vtk => vtkPanicle
procedure, public :: stl => stlPanicle
procedure, public :: ply => plyPanicle
procedure, public :: remove => removePanicle

Functions

public function to_panicle_config(num_seed_column, panicle_seed_interval, panicle_seed_diameter, panicle_seed_length, panicle_panicle_diameter) result(this)

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: num_seed_column
real(kind=real64), intent(in) :: panicle_seed_interval
real(kind=real64), intent(in) :: panicle_seed_diameter
real(kind=real64), intent(in) :: panicle_seed_length
real(kind=real64), intent(in) :: panicle_panicle_diameter

Return Value type(panicle_config_)

public function getCoordinatePanicle(this, nodetype) result(ret)

Arguments

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

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

public function to_wheat_panicle_mesh(num_seed_column, panicle_seed_interval, panicle_seed_diameter, panicle_seed_length, panicle_panicle_diameter, seed_angle, culm_length, culm_diameter, culm_division, heights_vs_diameters) result(output_d)

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: num_seed_column
real(kind=real64), intent(in) :: panicle_seed_interval
real(kind=real64), intent(in) :: panicle_seed_diameter
real(kind=real64), intent(in) :: panicle_seed_length
real(kind=real64), intent(in) :: panicle_panicle_diameter
real(kind=real64), intent(in), optional :: seed_angle
real(kind=real64), intent(in), optional :: culm_length
real(kind=real64), intent(in), optional :: culm_diameter
integer(kind=int32), intent(in), optional :: culm_division
real(kind=real64), intent(in), optional :: heights_vs_diameters(:,:)

Return Value type(FEMDomain_)

public function to_culm_diameter(heights_vs_diameters, height) result(ret)

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: heights_vs_diameters(:,:)
real(kind=real64), intent(in) :: height

Return Value real(kind=real64)

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

Arguments

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

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


Subroutines

public recursive subroutine initPanicle(this, Length, width, Node, shape_factor, debug, x_num, y_num, z_num, rice, rice_seed_interval, rice_seed_branch_length, rice_seed_length, rice_seed_width, rice_seed_thickness, rice_panicle_curvature, rice_seed_division, wheat, panicle_config, Arabidopsis)

Arguments

Type IntentOptional Attributes Name
class(Panicle_), intent(inout) :: this
real(kind=real64), intent(in) :: Length
real(kind=real64), intent(in) :: width
integer(kind=int32), intent(in), optional :: Node
real(kind=real64), intent(in), optional :: shape_factor
logical, intent(in), optional :: debug
integer(kind=int32), intent(in), optional :: x_num
integer(kind=int32), intent(in), optional :: y_num
integer(kind=int32), intent(in), optional :: z_num
logical, intent(in), optional :: rice
real(kind=real64), intent(in), optional :: rice_seed_interval
real(kind=real64), intent(in), optional :: rice_seed_branch_length
real(kind=real64), intent(in), optional :: rice_seed_length
real(kind=real64), intent(in), optional :: rice_seed_width
real(kind=real64), intent(in), optional :: rice_seed_thickness
real(kind=real64), intent(in), optional :: rice_panicle_curvature
integer(kind=int32), intent(in), optional :: rice_seed_division(1:3)
logical, intent(in), optional :: wheat
type(panicle_config_), intent(in), optional :: panicle_config
logical, intent(in), optional :: Arabidopsis

public subroutine vtkPanicle(this, name)

Arguments

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

public recursive subroutine movePanicle(this, x, y, z, reset)

Arguments

Type IntentOptional Attributes Name
class(Panicle_), intent(inout) :: this
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 connectPanicle(obj, direct, stem)

Arguments

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

public recursive subroutine rotatePanicle(this, x, y, z)

Arguments

Type IntentOptional Attributes Name
class(Panicle_), 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 stlPanicle(obj, name)

Arguments

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

public subroutine plyPanicle(obj, name)

Arguments

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

public subroutine removePanicle(this)

Arguments

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