-
Notifications
You must be signed in to change notification settings - Fork 0
/
read_initFile.F90
134 lines (90 loc) · 3.11 KB
/
read_initFile.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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
module read_initFile
#include "definition.h"
implicit none
integer, parameter :: fileLen=100
contains
subroutine read_initFileReal(fileName,varName,varValue)
implicit none
character(len=*),intent(IN) :: fileName,varName
real, intent(OUT) :: varValue
integer :: i,openStatus,inputStatus
real :: simInitVars
character(len=MAX_STRING_LENGTH) :: simCharVars
integer :: pos1,pos2
open(unit = 10, file=fileName, status='old',IOSTAT=openStatus,FORM='FORMATTED',ACTION='READ')
do i=1,fileLen
read(10, FMT = 100, IOSTAT=inputStatus) simCharVars
pos1 = index(simCharVars,varName)
pos2 = pos1+len_trim(varName)
if (pos2 > len_trim(varName)) then
read(simCharVars(pos2+1:),*)simInitVars
varValue = simInitVars
endif
end do
close(10)
100 FORMAT(A, 1X, F3.1)
end subroutine read_initFileReal
subroutine read_initFileInt(fileName,varName,varValue)
implicit none
character(len=*),intent(IN) :: fileName,varName
integer, intent(OUT) :: varValue
integer :: i,openStatus,inputStatus
integer :: simInitVars
character(len=MAX_STRING_LENGTH) :: simCharVars
integer :: pos1,pos2
open(unit = 11, file=fileName, status='old',IOSTAT=openStatus,FORM='FORMATTED',ACTION='READ')
do i=1,fileLen
read(11, FMT = 101, IOSTAT=inputStatus) simCharVars
pos1 = index(simCharVars,varName)
pos2 = pos1+len_trim(varName)
if (pos2 > len_trim(varName)) then
read(simCharVars(pos2+1:),*)simInitVars
varValue = simInitVars
endif
end do
close(11)
101 FORMAT(A, 1X, I5)
end subroutine read_initFileInt
subroutine read_initFileBool(fileName,varName,varValue)
implicit none
character(len=*),intent(IN) :: fileName,varName
logical, intent(OUT) :: varValue
integer :: i,openStatus,inputStatus
logical :: simInitVars
character(len=MAX_STRING_LENGTH) :: simCharVars
integer :: pos1,pos2
open(unit = 12, file=fileName, status='old',IOSTAT=openStatus,FORM='FORMATTED',ACTION='READ')
do i=1,fileLen
read(12, FMT = 102, IOSTAT=inputStatus) simCharVars
pos1 = index(simCharVars,varName)
pos2 = pos1+len_trim(varName)
if (pos2 > len_trim(varName)) then
read(simCharVars(pos2+1:),*)simInitVars
varValue = simInitVars
endif
end do
close(12)
102 FORMAT(A, 1X, L)
end subroutine read_initFileBool
subroutine read_initFileChar(fileName,varName,varValue)
implicit none
character(len=*),intent(IN) :: fileName,varName
character(len=*),intent(OUT) :: varValue
integer :: i,openStatus,inputStatus
character(len=MAX_STRING_LENGTH) :: simInitVars
character(len=MAX_STRING_LENGTH) :: simCharVars
integer :: pos1,pos2
open(unit = 13, file=fileName, status='old',IOSTAT=openStatus,FORM='FORMATTED',ACTION='READ')
do i=1,fileLen
read(13, FMT = 103, IOSTAT=inputStatus) simCharVars
pos1 = index(simCharVars,varName)
pos2 = pos1+len_trim(varName)
if (pos2 > len_trim(varName)) then
read(simCharVars(pos2+1:),*)simInitVars
varValue = simInitVars
endif
end do
close(13)
103 FORMAT(A, 1X, A)
end subroutine read_initFileChar
end module read_initFile