DiffusionEquationClass Module



Derived Types

type, public ::  DiffusionEq_

Components

Type Visibility Attributes Name Initial
type(FEMDomain_), public, pointer :: FEMDomain
type(FEMDomainp_), public, allocatable :: FEMDomains
type(FEMSolver_), public :: solver
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 :: CRS_RHS_n(:)
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, pass :: SolveDiffusionEq
generic, public :: solve => SolveDiffusionEq
procedure, public :: getDiffusionField => Solve_oneline_DiffusionEq
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
procedure, public :: check_stability_condition => check_stability_conditionDiffusionEq

Functions

public function Solve_oneline_DiffusionEq(this, FEMDomains, DiffusionCoeff, Reaction, penalty, FixBoundary, FixValue, C_n, dt, RHS, Matrix, algorithm, AL_lambda, AL_tol, AL_alpha) result(C_field)

Arguments

Type IntentOptional Attributes Name
class(DiffusionEq_), intent(inout) :: this
type(FEMDomain_), intent(inout) :: FEMDomains(:)
real(kind=real64), intent(in) :: DiffusionCoeff(:)
real(kind=real64), intent(in) :: Reaction(:)
real(kind=real64), intent(in) :: penalty
integer(kind=int32), intent(in) :: FixBoundary(:)
real(kind=real64), intent(in) :: FixValue(:)
real(kind=real64), intent(in) :: C_n(:)
real(kind=real64), intent(in) :: dt
real(kind=real64), intent(inout), optional, allocatable :: RHS(:)
type(CRS_), intent(inout), optional :: Matrix
character(len=*), intent(in), optional :: algorithm
real(kind=real64), intent(in), optional :: AL_lambda
real(kind=real64), intent(in), optional :: AL_tol
real(kind=real64), intent(in), optional :: AL_alpha

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


Subroutines

public subroutine updateByRK4DiffusionEq(obj)

Arguments

Type IntentOptional Attributes Name
class(DiffusionEq_), intent(inout) :: obj

public subroutine deployDiffusionEq(obj, FEMDomain)

Arguments

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

public subroutine removeDiffusionEq(obj)

Arguments

Type IntentOptional Attributes Name
class(DiffusionEq_), intent(inout) :: obj

public subroutine linkDiffusionEq(obj, FEMDomain)

Arguments

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

public subroutine openDiffusionEq(obj, path, name)

Arguments

Type IntentOptional Attributes Name
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 Attributes Name
class(DiffusionEq_), intent(inout) :: obj
character(len=*), intent(in) :: path
character(len=*), intent(in), optional :: name

public subroutine importDiffusionEq(obj, Permiability)

Arguments

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

public subroutine exportDiffusionEq(obj, path, restart)

Arguments

Type IntentOptional Attributes Name
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 Attributes Name
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 Attributes Name
class(DiffusionEq_), intent(inout) :: obj
character(len=*), intent(in), optional :: Solvertype
logical, intent(in), optional :: restart

public subroutine UpdateDiffusionEq(obj, explicit)

Arguments

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

public subroutine SetupDiffusionEq(obj, explicit)

Arguments

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

public subroutine GetDiffusionMat(obj)

Arguments

Type IntentOptional Attributes Name
class(DiffusionEq_), intent(inout) :: obj

public subroutine GetFlowvector(obj)

Arguments

Type IntentOptional Attributes Name
class(DiffusionEq_), intent(inout) :: obj

public subroutine GetUnknownValue(obj)

Arguments

Type IntentOptional Attributes Name
class(DiffusionEq_), intent(inout) :: obj

public subroutine GetDivergence(obj)

Arguments

Type IntentOptional Attributes Name
class(DiffusionEq_), intent(inout) :: obj

public subroutine UpdateUnknownValue(obj)

Arguments

Type IntentOptional Attributes Name
class(DiffusionEq_), intent(inout) :: obj

call showArraySize(obj%UnknownValueRate)

public subroutine GetElemDiffusionMatrix(obj, diff_coeff, DiffMat)

Arguments

Type IntentOptional Attributes Name
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 Attributes Name
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 Attributes Name
class(ShapeFunction_), intent(inout) :: obj
real(kind=real64), intent(inout), allocatable :: MassMat(:,:)

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

Arguments

Type IntentOptional Attributes Name
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

public subroutine check_stability_conditionDiffusionEq(this, dt, dx, coefficient, passed)

Arguments

Type IntentOptional Attributes Name
class(DiffusionEq_), intent(in) :: this
real(kind=real64), intent(in) :: dt
real(kind=real64), intent(in) :: dx
real(kind=real64), intent(in) :: coefficient
logical :: passed