DemDomainClass Module



Variables

Type Visibility Attributes Name Initial
integer(kind=int32), public :: DEM_ACTIVE_PARTICLE = 0
integer(kind=int32), public :: DEM_DUMMY_PARTICLE = 1

Interfaces

public interface addRow

  • public subroutine addRowInt32Mat(mat)

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=int32), intent(inout), allocatable :: mat(:,:)
  • public subroutine addRowreal64Mat(mat)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(inout), allocatable :: mat(:,:)

public interface toDEMDomain

public interface assignment(=)

  • public subroutine FEMDomaintoDEMDomain_from_FEMDomain(ret, femdomain)

    $OMP parallel do private(center,j,x,r) reduction(+:radius,num_dup)

    $OMP end parallel do

    Arguments

    Type IntentOptional Attributes Name
    type(DEMDomain_), intent(out) :: ret
    type(FEMDomain_), intent(in) :: femdomain

Derived Types

type, public ::  DEM_Particle_List_

Components

Type Visibility Attributes Name Initial
integer(kind=int32), public :: num_particle = 0
integer(kind=int32), public, allocatable :: particle(:)

type, public ::  DEM_3D_NeighborList_

Components

Type Visibility Attributes Name Initial
type(DEM_Particle_List_), public, allocatable :: grid(:,:,:)

type, public ::  DEMDomain_

Components

Type Visibility Attributes Name Initial
integer(kind=int32), public :: timestep
real(kind=real64), public, allocatable :: xyz(:,:)
real(kind=real64), public, allocatable :: r(:)
real(kind=real64), public, allocatable :: m(:)
real(kind=real64), public, allocatable :: u(:,:)
real(kind=real64), public, allocatable :: v(:,:)
real(kind=real64), public, allocatable :: a(:,:)
real(kind=real64), public, allocatable :: f(:,:)
real(kind=real64), public, allocatable :: g(:,:)
real(kind=real64), public, allocatable :: contactForce(:,:)
integer(kind=int32), public, allocatable :: status(:)
real(kind=real64), public, allocatable :: wall(:,:,:)
type(DEM_3D_NeighborList_), public :: NeighborList
real(kind=real64), public :: contact_stiffness
real(kind=real64), public :: k_N = 1.0d0
real(kind=real64), public :: k_T = 0.50d0
real(kind=real64), public :: contact_damping
real(kind=real64), public :: grid_scale_factor = 5.0d0

Type-Bound Procedures

procedure, public :: init => initDEMDomainClass
procedure, public :: closepack => closepackDEMDomainClass
procedure, public :: closepack2D => closepack2DDEMDomainClass
procedure, public :: np => getNumberOfPointDEMDomain
procedure, public :: nd => getNumberOfDimDEMDomain
procedure, public :: setWall => setWallDEMDomain
procedure, public :: getStiffnessMatrix => getStiffnessMatrixDEMDomain
procedure, public, pass :: addDEMDomain
procedure, public, pass :: addDEMDomain_to_DEMDomain
generic, public :: add => addDEMDomain, addDEMDomain_to_DEMDomain
procedure, public :: updateneighborList => updateNeighborListDEMDomain
procedure, public :: updateForce => updateForceDEMDomain
procedure, public :: updateDisplacement => updateDisplacementDEMDomain
procedure, public :: move => moveDEMDomain
procedure, public :: StiffnessMatrix => StiffnessMatrixDEMDomain
procedure, public :: distance => distanceDEMDomain
procedure, public :: vtk => vtkDEMDomain
procedure, public :: gnuplot2D => gnuplot2DDEMDomain

Functions

public elemental function getNumberOfPointDEMDomain(this) result(ret)

Arguments

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

Return Value integer(kind=int32)

public elemental function getNumberOfDimDEMDomain(this) result(ret)

Arguments

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

Return Value integer(kind=int32)

public function toDEMDomain_from_FEMDomain(femdomain) result(ret)

Arguments

Type IntentOptional Attributes Name
type(FEMDomain_), intent(in) :: femdomain

Return Value type(DEMDomain_)

public function StiffnessMatrixDEMDomain(this, springCoefficient) result(ret)

Arguments

Type IntentOptional Attributes Name
class(DEMDomain_), intent(in) :: this
real(kind=real64), intent(in) :: springCoefficient(:)

Return Value type(CRS_)

public function distanceDEMDomain(this, idx1, idx2) result(ret)

Arguments

Type IntentOptional Attributes Name
class(DEMDomain_), intent(in) :: this
integer(kind=int32), intent(in) :: idx1
integer(kind=int32), intent(in) :: idx2

Return Value real(kind=real64)

public function getStiffnessMatrixDEMDomain(this, u) result(ret)

Arguments

Type IntentOptional Attributes Name
class(DEMDomain_), intent(in) :: this
real(kind=real64), intent(in), optional :: u(:)

Return Value type(CRS_)


Subroutines

public subroutine initDEMDomainClass(this, x_axis, y_axis, z_axis, radius)

Arguments

Type IntentOptional Attributes Name
class(DEMDomain_), intent(inout) :: this
real(kind=real64), intent(in) :: x_axis(:)
real(kind=real64), intent(in) :: y_axis(:)
real(kind=real64), intent(in) :: z_axis(:)
real(kind=real64), intent(in) :: radius(:)

public subroutine addDEMDomain(this, position, r, m, status)

Arguments

Type IntentOptional Attributes Name
class(DEMDomain_), intent(inout) :: this
real(kind=real64), intent(in) :: position(:)
real(kind=real64), intent(in) :: r
real(kind=real64), intent(in) :: m
integer(kind=int32), intent(in), optional :: status

public subroutine vtkDEMDomain(this, name, displacement)

Arguments

Type IntentOptional Attributes Name
class(DEMDomain_), intent(in) :: this
character(len=*), intent(in) :: name
real(kind=real64), intent(in), optional :: displacement(:)

public subroutine updateDisplacementDEMDomain(this, dt, active_range)

Arguments

Type IntentOptional Attributes Name
class(DEMDomain_), intent(inout) :: this
real(kind=real64), intent(in) :: dt
type(Range_), intent(in) :: active_range

public subroutine updateForceDEMDomain(this, dt)

do pointIdx=1,this%np() this%NeighborList%add(row=pointIdx,col=,value=) enddo

Arguments

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

public subroutine setWallDEMDomain(this, range)

Arguments

Type IntentOptional Attributes Name
class(DEMDomain_), intent(inout) :: this
type(Range_), intent(in) :: range

public subroutine addRowInt32Mat(mat)

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(inout), allocatable :: mat(:,:)

public subroutine addRowreal64Mat(mat)

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(inout), allocatable :: mat(:,:)

public subroutine FEMDomaintoDEMDomain_from_FEMDomain(ret, femdomain)

$OMP parallel do private(center,j,x,r) reduction(+:radius,num_dup)

Read more…

Arguments

Type IntentOptional Attributes Name
type(DEMDomain_), intent(out) :: ret
type(FEMDomain_), intent(in) :: femdomain

public subroutine addDEMDomain_to_DEMDomain(this, DEMDomain)

Arguments

Type IntentOptional Attributes Name
class(DEMDomain_), intent(inout) :: this
type(DEMDomain_), intent(in) :: DEMDomain

public subroutine updateNeighborListDEMDomain(this)

Arguments

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

public subroutine closepackDEMDomainClass(this, radius, length)

Arguments

Type IntentOptional Attributes Name
class(DEMDomain_), intent(inout) :: this
real(kind=real64), intent(in) :: radius
real(kind=real64), intent(in) :: length(3)

public subroutine closepack2DDEMDomainClass(this, radius, length)

Arguments

Type IntentOptional Attributes Name
class(DEMDomain_), intent(inout) :: this
real(kind=real64), intent(in) :: radius
real(kind=real64), intent(in) :: length(2)

public subroutine gnuplot2DDEMDomain(this, name)

Arguments

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

public subroutine moveDEMDomain(this, displacement)

Arguments

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