SetMovingMeshParam
Set MovingMesh parameter.
Interface
- ܀ Interface
- ️܀ See example
- ↢
INTERFACE
MODULE SUBROUTINE setMovingMeshParam( &
& param, &
& engine, &
& coordinateSystem, &
& nsd, &
& nnt, &
& dt, &
& startTime, &
& endTime, &
& currentTime, &
& currentTimeStep, &
& totalTimeStep, &
& gravity, &
& domainFile, &
& materialInterfaces, &
& maxIter, &
& tMaterials, &
& tDirichletBC, &
& tNeumannBC, &
& baseInterpolationForSpace, &
& baseContinuityForSpace, &
& quadratureTypeForSpace, &
& postProcessOpt)
!!
TYPE(ParameterList_), INTENT(INOUT) :: param
!! param stores the parameters
CHARACTER(*), OPTIONAL, INTENT(IN) :: engine
!! name of engine
INTEGER(I4B), OPTIONAL, INTENT(IN) :: coordinateSystem
!! Coordinate system
REAL(DFP), OPTIONAL, INTENT(IN) :: gravity(3)
!! Acceleration due to gravity, default is zero
!! If gravity is zero then we use piezometric pressure
!! If gravity is nonzero then we use thermodynamic pressure
!! If true then we consider the subscale pressure in stabilization
CHARACTER(*), OPTIONAL, INTENT(IN) :: domainFile
!! Mesh/domain file for velocity and pressure
!! Use when pressure and velocity have common domain
INTEGER(I4B), OPTIONAL, INTENT(IN) :: materialInterfaces(:)
!! Mesh id for material interfaces
INTEGER(I4B), OPTIONAL, INTENT(IN) :: nsd
!! Number of spatial dimension
INTEGER(I4B), OPTIONAL, INTENT(IN) :: nnt
!! Number of nodes in time, default 1, has not effect, so ignore
REAL(DFP), OPTIONAL, INTENT(IN) :: dt
!! Initial time step size, useful incase of nonlinear stokes flow
REAL(DFP), OPTIONAL, INTENT(IN) :: startTime
!! Starting time t0 of simulation, default=0.0
REAL(DFP), OPTIONAL, INTENT(IN) :: endTime
!! Final time of simulation, default is 0.0_DFP
REAL(DFP), OPTIONAL, INTENT(IN) :: currentTime
INTEGER(I4B), OPTIONAL, INTENT(IN) :: currentTimeStep
INTEGER(I4B), OPTIONAL, INTENT(IN) :: totalTimeStep
INTEGER(I4B), OPTIONAL, INTENT(IN) :: maxIter
!! maximum iteration for Newton-method
INTEGER(I4B), OPTIONAL, INTENT(IN) :: tMaterials
!! Total number of fluid materials; default=1
INTEGER(I4B), OPTIONAL, INTENT(IN) :: tDirichletBC
!! Total number of Dirichlet domain for displacement, default=0
INTEGER(I4B), OPTIONAL, INTENT(IN) :: tNeumannBC
!! Total number of Neumann domain for displacement
CHARACTER(*), OPTIONAL, INTENT(IN) :: baseInterpolationForSpace
!! Type of interpolation function used for basis function
CHARACTER(*), OPTIONAL, INTENT(IN) :: baseContinuityForSpace
!! Type of continuity of basis function for pressure
CHARACTER(*), OPTIONAL, INTENT(IN) :: quadratureTypeForSpace
!! Type of quadrature for pressure field
!! Type of interpolation function used for velocity
INTEGER(I4B), OPTIONAL, INTENT(IN) :: postProcessOpt
!!
END SUBROUTINE setMovingMeshParam
END INTERFACE
This example shows how to set the parameters for steady stokes flow kernel
PROGRAM main
USE easifemBase
USE easifemClasses
USE easifemMaterials
USE easifemKernels
USE MovingMesh_Class
IMPLICIT NONE
TYPE( MovingMesh_ ) :: obj
TYPE( HDF5File_ ) :: domainFile
TYPE( Domain_ ) :: dom
TYPE( ParameterList_ ) :: param
CHARACTER( * ), PARAMETER :: engine="NATIVE_SERIAL"
INTEGER( I4B ), PARAMETER :: CoordinateSystem = KERNEL_CARTESIAN
INTEGER( I4B ), PARAMETER :: nsd = 2
INTEGER( I4B ), PARAMETER :: nnt = 1
REAL( DFP ), PARAMETER :: dt = 0.0_DFP
REAL( DFP ), PARAMETER :: startTime = 0.0_DFP
REAL( DFP ), PARAMETER :: endTime = 0.0_DFP
REAL( DFP ), PARAMETER :: currentTime = 0.0_DFP
INTEGER( I4B ), PARAMETER :: currentTimeStep = 1
INTEGER( I4B ), PARAMETER :: totalTimeStep = 1
REAL( DFP ), PARAMETER :: gravity(3)=[0.0, -9.8, 0.0]
CHARACTER( * ), PARAMETER :: domainFileName="./mesh.h5"
INTEGER( I4B ), PARAMETER :: materialInterfaces(3) = [1,2,3]
INTEGER( I4B ), PARAMETER :: maxIter = 100
INTEGER( I4B ), PARAMETER :: tMaterials= 1
INTEGER( I4B ), PARAMETER :: tDirichletBC = 2
INTEGER( I4B ), PARAMETER :: tNeumannBC = 1
CHARACTER(*), PARAMETER :: baseInterpolationForSpace="LagrangeInterpolation"
CHARACTER(*), PARAMETER :: baseContinuityForSpace="H1"
CHARACTER(*), PARAMETER :: quadratureTypeForSpace="GaussLegendre"
INTEGER( I4B ), PARAMETER :: postProcessOpt = 1
Set parameters for kernel.
CALL FPL_INIT(); CALL param%Initiate()
Set parameters for the kernel.
CALL SetMovingMeshParam( &
& param=param, &
& engine=engine, &
& coordinateSystem=coordinateSystem, &
& nsd=nsd, &
& nnt=nnt, &
& dt=dt, &
& startTime=startTime, &
& endTime=endTime, &
& currentTime=currentTime, &
& currentTimeStep=currentTimeStep, &
& totalTimeStep=totalTimeStep, &
& gravity=gravity, &
& domainFile=domainFileName, &
& materialInterfaces=materialInterfaces, &
& maxIter=maxIter, &
& tMaterials=tMaterials, &
& tDirichletBC=tDirichletBC, &
& tNeumannBC=tNeumannBC, &
& baseInterpolationForSpace=baseInterpolationForSpace, &
& baseContinuityForSpace=baseContinuityForSpace, &
& quadratureTypeForSpace=quadratureTypeForSpace, &
& postProcessOpt=postProcessOpt)
Let us print the parameter list.
CALL param%Print()
Let us check the essential parameter.
CALL param%Deallocate(); CALL FPL_FINALIZE()
END PROGRAM main