Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/elmerice/Tests/FrictionHeatMasked/DummySolver.f90
3206 views
1
2
RECURSIVE SUBROUTINE DummySolver( Model,Solver,Timestep,TransientSimulation )
3
USE DefUtils
4
5
IMPLICIT NONE
6
7
8
!------------------------------------------------------------------------------
9
! External variables
10
!------------------------------------------------------------------------------
11
TYPE(Model_t) :: Model
12
TYPE(Solver_t), TARGET :: Solver
13
LOGICAL :: TransientSimulation
14
REAL(KIND=dp) :: Timestep
15
!------------------------------------------------------------------------------
16
! Local variables
17
!------------------------------------------------------------------------------
18
TYPE(ValueList_t), Pointer :: BC
19
TYPE(Variable_t), POINTER :: Var
20
TYPE(Element_t),POINTER :: Element
21
INTEGER, POINTER :: VarPerm(:)
22
INTEGER :: VarDOFs, i, j, k, N, t
23
REAL(KIND=dp), POINTER :: VarValues(:)
24
LOGICAL :: GotIt
25
26
PRINT *,"DummySolver"
27
PRINT *,"***********************************"
28
29
Var => Solver % Variable
30
IF (ASSOCIATED(Var)) THEN
31
VarPerm => Var % Perm
32
VarDOFs = Var % DOFs
33
VarValues => Var % Values
34
VarValues = 0.0_dp
35
ELSE
36
CALL FATAL('DummySolver','No Variable associated')
37
END IF
38
k=0
39
! DO i = 1,Model % NumberOfNodes
40
! DO j=1,VarDOFs
41
! k = k + 1
42
! VarValues(VarDOFs*(VarPerm(i) - 1)+j) = k
43
! END DO
44
! END DO
45
DO t=1, Solver % Mesh % NumberOfBoundaryElements
46
! get element information
47
Element => GetBoundaryElement(t)
48
IF ( .NOT.ActiveBoundaryElement() ) CYCLE
49
BC => GetBC()
50
n = GetElementNOFNodes()
51
IF(ANY(VarPerm(Element % NodeIndexes) == 0)) CYCLE
52
VarValues(VarPerm(Element % NodeIndexes)) = ListGetReal(BC,TRIM(Solver % Variable % Name),n,Element % NodeIndexes,GotIt)
53
END DO
54
55
END SUBROUTINE DummySolver
56
57