-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDummySolver.F90
55 lines (48 loc) · 1.72 KB
/
DummySolver.F90
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
RECURSIVE SUBROUTINE DummySolver( Model,Solver,Timestep,TransientSimulation )
USE DefUtils
IMPLICIT NONE
!------------------------------------------------------------------------------
! External variables
!------------------------------------------------------------------------------
TYPE(Model_t) :: Model
TYPE(Solver_t), TARGET :: Solver
LOGICAL :: TransientSimulation
REAL(KIND=dp) :: Timestep
!------------------------------------------------------------------------------
! Local variables
!------------------------------------------------------------------------------
TYPE(ValueList_t), Pointer :: BC
TYPE(Variable_t), POINTER :: Var
TYPE(Element_t),POINTER :: Element
INTEGER, POINTER :: VarPerm(:)
INTEGER :: VarDOFs, i, j, k, N, t
REAL(KIND=dp), POINTER :: VarValues(:)
LOGICAL :: GotIt
PRINT *,"DummySolver"
PRINT *,"***********************************"
Var => Solver % Variable
IF (ASSOCIATED(Var)) THEN
VarPerm => Var % Perm
VarDOFs = Var % DOFs
VarValues => Var % Values
ELSE
CALL FATAL('DummySolver','No Variable associated')
END IF
k=0
! DO i = 1,Model % NumberOfNodes
! DO j=1,VarDOFs
! k = k + 1
! VarValues(VarDOFs*(VarPerm(i) - 1)+j) = k
! END DO
! END DO
! VarValues = 0.0_dp
DO t=1, Solver % Mesh % NumberOfBoundaryElements
! get element information
Element => GetBoundaryElement(t)
IF ( .NOT.ActiveBoundaryElement() ) CYCLE
BC => GetBC()
n = GetElementNOFNodes()
VarValues(VarPerm(Element % NodeIndexes)) = ListGetReal(BC,TRIM(Solver % Variable % Name),n,Element % NodeIndexes,GotIt)
! PRINT *, VarValues(VarPerm(Element % NodeIndexes))
END DO
END SUBROUTINE DummySolver