TSFEMClass Module



Derived Types

type, public ::  TSFEM_

Components

Type Visibility Attributes Name Initial
type(WaveKernel_), public :: WK
type(FEMDomainp_), public :: femdomain
type(MPI_), public, pointer :: mpid => null()
integer(kind=int32), public, allocatable :: fix_idx(:)
real(kind=real64), public, allocatable :: f_n(:)
real(kind=real64), public, allocatable :: u(:)
real(kind=real64), public, allocatable :: v(:)
real(kind=real64), public, allocatable :: u_n(:)
real(kind=real64), public, allocatable :: v_n(:)
real(kind=real64), public, allocatable :: u_2(:)
real(kind=real64), public, allocatable :: v_2(:)
real(kind=real64), public, allocatable :: u_1(:)
real(kind=real64), public, allocatable :: v_1(:)
real(kind=real64), public, allocatable :: u_old(:)
real(kind=real64), public, allocatable :: v_old(:)
real(kind=real64), public, allocatable :: YoungModulus(:)
real(kind=real64), public, allocatable :: PoissonRatio(:)
real(kind=real64), public, allocatable :: Density(:)
real(kind=real64), public :: relative_cutoff_frequency = 1.0d0
real(kind=real64), public :: dt = 1.0d0/100.0d0
real(kind=real64), public :: t = 0.0d0
integer(kind=int32), public :: timestep = 0
integer(kind=int32), public :: start_step = 1
integer(kind=int32), public :: interval = 0
integer(kind=int32), public :: itrmax = 50
integer(kind=int32), public :: DOF
real(kind=real64), public :: tol = dble(1.0e-25)
logical, public :: initialized = .false.

Type-Bound Procedures

procedure, public :: init => initTSFEM
procedure, public :: DirichletBoundary => DirichletBoundaryTSFEM
procedure, public, pass :: NeumannBoundaryTSFEM
procedure, public, pass :: NeumannBoundary_multiple_ForceTSFEM
generic, public :: NeumannBoundary => NeumannBoundary_multiple_ForceTSFEM, NeumannBoundaryTSFEM
procedure, public :: time => timeTSFEM
procedure, public :: save => saveTSFEM
procedure, public :: movie => movieTSFEM
procedure, public :: AbsorbingBoundary => AbsorbingBoundaryTSFEM

Subroutines

public subroutine initTSFEM(this, femdomain, Density, YoungModulus, PoissonRatio, DOF, mpid)

Arguments

Type IntentOptional Attributes Name
class(TSFEM_), intent(inout) :: this
type(FEMDomain_), intent(inout), target :: femdomain
real(kind=real64), intent(in) :: Density
real(kind=real64), intent(in) :: YoungModulus
real(kind=real64), intent(in), optional :: PoissonRatio
integer(kind=int32), intent(in) :: DOF
type(MPI_), intent(in), optional, target :: mpid

public recursive subroutine DirichletBoundaryTSFEM(this, NodeList, direction)

Arguments

Type IntentOptional Attributes Name
class(TSFEM_), intent(inout) :: this
integer(kind=int32), intent(in) :: NodeList(:)
character(len=*), intent(in) :: direction

public recursive subroutine NeumannBoundaryTSFEM(this, NodeList, Force, direction, clear)

Arguments

Type IntentOptional Attributes Name
class(TSFEM_), intent(inout) :: this
integer(kind=int32), intent(in) :: NodeList(:)
real(kind=real64), intent(in) :: Force
character(len=*), intent(in) :: direction
logical, intent(in), optional :: clear

public recursive subroutine NeumannBoundary_multiple_ForceTSFEM(this, NodeList, Force, direction, clear)

Arguments

Type IntentOptional Attributes Name
class(TSFEM_), intent(inout) :: this
integer(kind=int32), intent(in) :: NodeList(:)
real(kind=real64), intent(in) :: Force(:)
character(len=*), intent(in) :: direction
logical, intent(in), optional :: clear

public subroutine AbsorbingBoundaryTSFEM(this, NodeList, direction)

Arguments

Type IntentOptional Attributes Name
class(TSFEM_), intent(inout) :: this
integer(kind=int32), intent(in) :: NodeList(:)
character(len=*), intent(in) :: direction

public subroutine timeTSFEM(this, dt, t, timestep)

Arguments

Type IntentOptional Attributes Name
class(TSFEM_), intent(inout) :: this
real(kind=real64), intent(in) :: dt
real(kind=real64), intent(in) :: t
integer(kind=int32), intent(in) :: timestep

public subroutine TSFEM(this)

Arguments

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

public subroutine saveTSFEM(this, name)

Arguments

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

public subroutine movieTSFEM(this, name)

Arguments

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