Path: blob/devel/elmerice/Tests/Grounded/PROG/bedrock.f90
3206 views
SUBROUTINE bedrock( Model,Solver,dt,TransientSimulation )12!*************************************************************************3!4! creates a synthetic bedrock variable5!6!*************************************************************************78USE DefUtils9IMPLICIT NONE1011!-----------------------------------------------------------------------------12TYPE(Solver_t) :: Solver13TYPE(Model_t) :: Model1415REAL(KIND=dp) :: dt16LOGICAL :: TransientSimulation17!------------------------------------------------------------------------------18! Local variables19!------------------------------------------------------------------------------20TYPE(Element_t),POINTER :: Element21TYPE(Variable_t), POINTER :: PointerToVariable22TYPE(Nodes_t), SAVE :: Nodes23TYPE(ValueList_t), POINTER :: SolverParams2425INTEGER :: ii, tt, nn, jj, DIM26INTEGER, POINTER :: Permutation(:)2728REAL(KIND=dp), POINTER :: VariableValues(:)29REAL(KIND=dp) :: x, y, z3031REAL(KIND=dp) :: fbed323334!-----------------------------------------------------------------------------3536PointerToVariable => Solver % Variable37Permutation => PointerToVariable % Perm38VariableValues => PointerToVariable % Values3940DIM = CoordinateSystemDimension()4142SolverParams => GetSolverParams()4344! the bedrock is never changed, so it is filled in the firsttime45DO tt = 1, Solver % NumberOfActiveElements46Element => GetActiveElement(tt)47nn = GetElementNOFNodes()4849CALL GetElementNodes( Nodes )50DO ii = 1, nn51IF ( Permutation(Element % NodeIndexes(ii)) == 0 ) CYCLE5253x = Model % Nodes % x(Element % NodeIndexes(ii))5455IF (DIM==3) THEN56y = Model % Nodes % y(Element % NodeIndexes(ii))57VariableValues(Permutation(Element % NodeIndexes(ii))) = fbed(x,y)58ELSE IF (DIM==2) THEN59VariableValues(Permutation(Element % NodeIndexes(ii))) = fbed(x,0.0_dp)60END IF6162END DO6364END DO6566END SUBROUTINE bedrock676869