Changeset 5116 for LMDZ6/branches/Amaury_dev/libf/misc/write_field.F90
- Timestamp:
- Jul 24, 2024, 2:54:37 PM (2 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/misc/write_field.F90
r5113 r5116 12 12 integer, dimension(MaxWriteField), save :: FieldVarId 13 13 integer, dimension(MaxWriteField), save :: FieldIndex 14 character(len= 255), dimension(MaxWriteField) :: FieldName14 CHARACTER(LEN = 255), dimension(MaxWriteField) :: FieldName 15 15 16 16 integer, save :: NbField = 0 … … 23 23 function GetFieldIndex(name) 24 24 IMPLICIT NONE 25 integer:: GetFieldindex26 character(len= *) :: name27 28 character(len= 255) :: TrueName29 integer:: i25 INTEGER :: GetFieldindex 26 CHARACTER(LEN = *) :: name 27 28 CHARACTER(LEN = 255) :: TrueName 29 INTEGER :: i 30 30 31 31 TrueName = TRIM(ADJUSTL(name)) … … 33 33 GetFieldIndex = -1 34 34 do i = 1, NbField 35 if (TrueName==FieldName(i)) then35 if (TrueName==FieldName(i)) THEN 36 36 GetFieldIndex = i 37 37 exit 38 38 endif 39 39 enddo 40 end functionGetFieldIndex40 END FUNCTION GetFieldIndex 41 41 42 42 subroutine WriteField3d(name, Field) 43 43 IMPLICIT NONE 44 character(len= *) :: name44 CHARACTER(LEN = *) :: name 45 45 real, dimension(:, :, :) :: Field 46 46 integer, dimension(3) :: Dim … … 49 49 CALL WriteField_gen(name, Field, Dim(1), Dim(2), Dim(3)) 50 50 51 end subroutineWriteField3d51 END SUBROUTINE WriteField3d 52 52 53 53 subroutine WriteField2d(name, Field) 54 54 IMPLICIT NONE 55 character(len= *) :: name55 CHARACTER(LEN = *) :: name 56 56 real, dimension(:, :) :: Field 57 57 integer, dimension(2) :: Dim … … 60 60 CALL WriteField_gen(name, Field, Dim(1), Dim(2), 1) 61 61 62 end subroutineWriteField2d62 END SUBROUTINE WriteField2d 63 63 64 64 subroutine WriteField1d(name, Field) 65 65 IMPLICIT NONE 66 character(len= *) :: name66 CHARACTER(LEN = *) :: name 67 67 real, dimension(:) :: Field 68 68 integer, dimension(1) :: Dim … … 71 71 CALL WriteField_gen(name, Field, Dim(1), 1, 1) 72 72 73 end subroutineWriteField1d73 END SUBROUTINE WriteField1d 74 74 75 75 subroutine WriteField_gen(name, Field, dimx, dimy, dimz) 76 76 IMPLICIT NONE 77 character(len= *) :: name78 integer:: dimx, dimy, dimz77 CHARACTER(LEN = *) :: name 78 INTEGER :: dimx, dimy, dimz 79 79 real, dimension(dimx, dimy, dimz) :: Field 80 80 integer, dimension(dimx * dimy * dimz) :: ndex 81 integer:: status82 integer:: index83 integer:: start(4)84 integer:: count(4)81 INTEGER :: status 82 INTEGER :: index 83 INTEGER :: start(4) 84 INTEGER :: count(4) 85 85 86 86 Index = GetFieldIndex(name) 87 if (Index==-1) then87 if (Index==-1) THEN 88 88 CALL CreateNewField(name, dimx, dimy, dimz) 89 89 Index = GetFieldIndex(name) … … 105 105 status = nf90_sync(FieldId(Index)) 106 106 107 end subroutineWriteField_gen107 END SUBROUTINE WriteField_gen 108 108 109 109 subroutine CreateNewField(name, dimx, dimy, dimz) 110 110 IMPLICIT NONE 111 character(len= *) :: name112 integer:: dimx, dimy, dimz113 integer:: TabDim(4)114 integer:: status111 CHARACTER(LEN = *) :: name 112 INTEGER :: dimx, dimy, dimz 113 INTEGER :: TabDim(4) 114 INTEGER :: status 115 115 116 116 NbField = NbField + 1 … … 126 126 status = nf90_enddef(FieldId(NbField)) 127 127 128 end subroutineCreateNewField128 END SUBROUTINE CreateNewField 129 129 130 130 subroutine write_field1D(name, Field) … … 132 132 133 133 integer, parameter :: MaxDim = 1 134 character(len= *) :: name134 CHARACTER(LEN = *) :: name 135 135 real, dimension(:) :: Field 136 136 real, dimension(:), allocatable :: New_Field 137 character(len= 20) :: str137 CHARACTER(LEN = 20) :: str 138 138 integer, dimension(MaxDim) :: Dim 139 integer:: i, nb139 INTEGER :: i, nb 140 140 integer, parameter :: id = 10 141 141 integer, parameter :: NbCol = 4 142 integer:: ColumnSize143 integer:: pos144 character(len= 255) :: form145 character(len= 255) :: MaxLen142 INTEGER :: ColumnSize 143 INTEGER :: pos 144 CHARACTER(LEN = 255) :: form 145 CHARACTER(LEN = 255) :: MaxLen 146 146 147 147 open(unit = id, file = name // '.field', form = 'formatted', status = 'replace') … … 155 155 nb = nb + 1 156 156 157 if (MOD(nb, NbCol)==0) then157 if (MOD(nb, NbCol)==0) THEN 158 158 form = '(t' // trim(int2str(pos)) // ',i' // trim(MaxLen) // '," ---> ",g22.16,/)' 159 159 Pos = 2 … … 167 167 close(id) 168 168 169 end subroutinewrite_field1D169 END SUBROUTINE write_field1D 170 170 171 171 subroutine write_field2D(name, Field) … … 173 173 174 174 integer, parameter :: MaxDim = 2 175 character(len= *) :: name175 CHARACTER(LEN = *) :: name 176 176 real, dimension(:, :) :: Field 177 177 real, dimension(:, :), allocatable :: New_Field 178 character(len= 20) :: str178 CHARACTER(LEN = 20) :: str 179 179 integer, dimension(MaxDim) :: Dim 180 integer:: i, j, nb180 INTEGER :: i, j, nb 181 181 integer, parameter :: id = 10 182 182 integer, parameter :: NbCol = 4 183 integer:: ColumnSize184 integer:: pos, offset185 character(len= 255) :: form186 character(len= 255) :: spacing183 INTEGER :: ColumnSize 184 INTEGER :: pos, offset 185 CHARACTER(LEN = 255) :: form 186 CHARACTER(LEN = 255) :: spacing 187 187 188 188 open(unit = id, file = name // '.field', form = 'formatted', status = 'replace') … … 201 201 nb = nb + 1 202 202 203 if (MOD(nb, NbCol)==0) then203 if (MOD(nb, NbCol)==0) THEN 204 204 form = '(t' // trim(int2str(pos)) // & 205 205 ',"(' // trim(int2str(j)) // ',' & … … 218 218 write (id, form, advance = 'no') Field(j, i) 219 219 enddo 220 if (MOD(nb, NbCol)==0) then220 if (MOD(nb, NbCol)==0) THEN 221 221 write (id, spacing) 222 222 else … … 226 226 enddo 227 227 228 end subroutinewrite_field2D228 END SUBROUTINE write_field2D 229 229 230 230 subroutine write_field3D(name, Field) … … 232 232 233 233 integer, parameter :: MaxDim = 3 234 character(len= *) :: name234 CHARACTER(LEN = *) :: name 235 235 real, dimension(:, :, :) :: Field 236 236 real, dimension(:, :, :), allocatable :: New_Field 237 237 integer, dimension(MaxDim) :: Dim 238 integer:: i, j, k, nb238 INTEGER :: i, j, k, nb 239 239 integer, parameter :: id = 10 240 240 integer, parameter :: NbCol = 4 241 integer:: ColumnSize242 integer:: pos, offset243 character(len= 255) :: form244 character(len= 255) :: spacing241 INTEGER :: ColumnSize 242 INTEGER :: pos, offset 243 CHARACTER(LEN = 255) :: form 244 CHARACTER(LEN = 255) :: spacing 245 245 246 246 open(unit = id, file = name // '.field', form = 'formatted', status = 'replace') … … 264 264 nb = nb + 1 265 265 266 if (MOD(nb, NbCol)==0) then266 if (MOD(nb, NbCol)==0) THEN 267 267 form = '(t' // trim(int2str(pos)) // & 268 268 ',"(' // trim(int2str(k)) // ',' & … … 284 284 write (id, form, advance = 'no') Field(k, j, i) 285 285 enddo 286 if (MOD(nb, NbCol)==0) then286 if (MOD(nb, NbCol)==0) THEN 287 287 write (id, spacing) 288 288 else … … 296 296 close(id) 297 297 298 end subroutinewrite_field3D298 END SUBROUTINE write_field3D 299 299 300 300 end module write_field
Note: See TracChangeset
for help on using the changeset viewer.