-
Notifications
You must be signed in to change notification settings - Fork 2
/
MODULE_SOLVER.f90
42 lines (30 loc) · 1.1 KB
/
MODULE_SOLVER.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
MODULE MODULE_SOLVER
USE MODULE_PRECISION
USE MODULE_ELEMENT
USE MODULE_RUNGEKUTTASOLVER
CONTAINS
SUBROUTINE SOLVER(SOLVERINFO, FIRST, LAST, NELE, ELE)
IMPLICIT NONE
INTEGER, INTENT(IN) :: FIRST, LAST, NELE
TYPE(ELEMENT), DIMENSION(1:NELE), INTENT(INOUT), TARGET:: ELE
TYPE(SOLVERINFORMATION), DIMENSION(:), INTENT(INOUT) :: SOLVERINFO
REAL(WP), DIMENSION(:,:), POINTER :: CONS
CALL INITIAL_RESIDUAL1D(FIRST, LAST, NELE, ELE)
IF (SOLVERINFO(1)%SOLVER_TYPE == 0) THEN
CALL EX_RUNGEKUTTA(FIRST, LAST, NELE, ELE)
ELSE
END IF
END SUBROUTINE SOLVER
SUBROUTINE INITIAL_RESIDUAL1D(FIRST, LAST, NELE, ELE)
IMPLICIT NONE
INTEGER, INTENT(IN) :: FIRST, LAST, NELE
TYPE(ELEMENT), DIMENSION(1:NELE), INTENT(INOUT), TARGET:: ELE
INTEGER(IP) :: IELE
INTEGER(IP) :: N1, NVAL
N1 = ELE(1)%ORDER + 1
NVAL = ELE(1)%NVAL
FORALL(IELE = FIRST:LAST)
ELE(IELE)%RES_CONS(1:N1, 1:NVAL) = 0._WP
END FORALL
END SUBROUTINE INITIAL_RESIDUAL1D
END MODULE MODULE_SOLVER