DiffusionEquationClass Module



Contents


Derived Types

type, public :: DiffusionEq_

Components

TypeVisibility AttributesNameInitial
type(FEMDomain_), public, pointer:: FEMDomain
real(kind=real64), public, allocatable:: UnknownValue(:,:)
real(kind=real64), public, allocatable:: UnknownVec(:)
real(kind=real64), public, allocatable:: UnknownValueInit(:,:)
real(kind=real64), public, allocatable:: UnknownValueRate(:,:)
real(kind=real64), public, allocatable:: DiffusionMat(:,:,:)
real(kind=real64), public, allocatable:: Divergence(:,:)
real(kind=real64), public, allocatable:: Flowvector(:,:)
real(kind=real64), public, allocatable:: FluxVector3D(:,:)
real(kind=real64), public, allocatable:: Permiability(:)
real(kind=real64), public :: dt
integer(kind=int32), public :: step
logical, public :: explicit =.false.

Type-Bound Procedures

procedure, public :: Setup => SetupDiffusionEq
procedure, public :: Solve => SolveDiffusionEq
procedure, public :: Update => UpdateDiffusionEq
procedure, public :: GetMat => GetDiffusionMat
procedure, public :: GetRHS => GetFlowvector
procedure, public :: GetInitVal => GetUnknownValue
procedure, public :: Display => DisplayDiffusionEq
procedure, public :: import => importDiffusionEq
procedure, public :: export => exportDiffusionEq
procedure, public :: deploy => deployDiffusionEq
procedure, public :: save => saveDiffusionEq
procedure, public :: open => openDiffusionEq
procedure, public :: remove => removeDiffusionEq
procedure, public :: updateByRK4 => updateByRK4DiffusionEq

Subroutines

public subroutine updateByRK4DiffusionEq(obj)

Arguments

Type IntentOptional AttributesName
class(DiffusionEq_), intent(inout) :: obj

public subroutine deployDiffusionEq(obj, FEMDomain)

Arguments

Type IntentOptional AttributesName
class(DiffusionEq_), intent(inout) :: obj
type(FEMDomain_), intent(in), target:: FEMDomain

public subroutine removeDiffusionEq(obj)

Arguments

Type IntentOptional AttributesName
class(DiffusionEq_), intent(inout) :: obj

public subroutine linkDiffusionEq(obj, FEMDomain)

Arguments

Type IntentOptional AttributesName
class(DiffusionEq_), intent(inout) :: obj
type(FEMDomain_), intent(in), target:: FEMDomain

public subroutine openDiffusionEq(obj, path, name)

Arguments

Type IntentOptional AttributesName
class(DiffusionEq_), intent(inout) :: obj
character(len=*), intent(in) :: path
character(len=*), intent(in), optional :: name

public subroutine saveDiffusionEq(obj, path, name)

Arguments

Type IntentOptional AttributesName
class(DiffusionEq_), intent(inout) :: obj
character(len=*), intent(in) :: path
character(len=*), intent(in), optional :: name

public subroutine importDiffusionEq(obj, Permiability)

Arguments

Type IntentOptional AttributesName
class(DiffusionEq_), intent(inout) :: obj
real(kind=real64), intent(in), optional :: Permiability(:)

public subroutine exportDiffusionEq(obj, path, restart)

Arguments

Type IntentOptional AttributesName
class(DiffusionEq_), intent(inout) :: obj
character(len=*), intent(in), optional :: path
logical, intent(in), optional :: restart

public subroutine ImportFEMDomainDiff(obj, OptionalFileFormat, OptionalProjectName)

print , "Project : ",ProjectName print , "is Exported as : ",FileFormat," format" print *, "File Name is : ",FileName

Read more…

Arguments

Type IntentOptional AttributesName
class(FEMDomain_), intent(inout) :: obj
character(len=4), intent(in), optional :: OptionalFileFormat
character(len=70), intent(in), optional :: OptionalProjectName

public subroutine SolveDiffusionEq(obj, Solvertype, restart)

Arguments

Type IntentOptional AttributesName
class(DiffusionEq_), intent(inout) :: obj
character(len=*), intent(in), optional :: Solvertype
logical, intent(in), optional :: restart

public subroutine UpdateDiffusionEq(obj, explicit)

Arguments

Type IntentOptional AttributesName
class(DiffusionEq_), intent(inout) :: obj
logical, intent(in), optional :: explicit

public subroutine SetupDiffusionEq(obj, explicit)

Arguments

Type IntentOptional AttributesName
class(DiffusionEq_), intent(inout) :: obj
logical, intent(in), optional :: explicit

public subroutine GetDiffusionMat(obj)

Arguments

Type IntentOptional AttributesName
class(DiffusionEq_), intent(inout) :: obj

public subroutine GetFlowvector(obj)

Arguments

Type IntentOptional AttributesName
class(DiffusionEq_), intent(inout) :: obj

public subroutine GetUnknownValue(obj)

Arguments

Type IntentOptional AttributesName
class(DiffusionEq_), intent(inout) :: obj

public subroutine GetDivergence(obj)

Arguments

Type IntentOptional AttributesName
class(DiffusionEq_), intent(inout) :: obj

public subroutine UpdateUnknownValue(obj)

Arguments

Type IntentOptional AttributesName
class(DiffusionEq_), intent(inout) :: obj

call showArraySize(obj%UnknownValueRate)

public subroutine GetElemDiffusionMatrix(obj, diff_coeff, DiffMat)

Arguments

Type IntentOptional AttributesName
class(ShapeFunction_), intent(inout) :: obj
real(kind=real64), intent(in) :: diff_coeff
real(kind=real64), intent(inout), allocatable:: DiffMat(:,:)

public subroutine getElemFluxVec(obj, diff_coeff, Flux, Cvec)

Arguments

Type IntentOptional AttributesName
class(ShapeFunction_), intent(inout) :: obj
real(kind=real64), intent(in) :: diff_coeff
real(kind=real64), intent(inout), allocatable:: Flux(:)
real(kind=real64), intent(in) :: Cvec(:)

public subroutine GetElemMassMatrix(obj, MassMat)

Arguments

Type IntentOptional AttributesName
class(ShapeFunction_), intent(inout) :: obj
real(kind=real64), intent(inout), allocatable:: MassMat(:,:)

public subroutine DisplayDiffusionEq(obj, OptionalProjectName, DisplayMode, OptionalStep, Name)

Arguments

Type IntentOptional AttributesName
class(DiffusionEq_), intent(inout) :: obj
character(len=*), intent(in), optional :: OptionalProjectName
character(len=*), intent(in), optional :: DisplayMode
integer(kind=int32), intent(in), optional :: OptionalStep
character(len=*), intent(in), optional :: Name