| Directory: | ./ |
|---|---|
| File: | dyn/dynredem_mod.f90 |
| Date: | 2022-01-11 19:19:34 |
| Exec | Total | Coverage | |
|---|---|---|---|
| Lines: | 31 | 49 | 63.3% |
| Branches: | 16 | 53 | 30.2% |
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | MODULE dynredem_mod | ||
| 2 | |||
| 3 | USE netcdf | ||
| 4 | PRIVATE | ||
| 5 | PUBLIC :: dynredem_write_u, dynredem_write_v, dynredem_read_u, err | ||
| 6 | PUBLIC :: cre_var, get_var1, put_var1, put_var2, fil, modname, msg | ||
| 7 | include "dimensions.h" | ||
| 8 | include "paramet.h" | ||
| 9 | CHARACTER(LEN=256), SAVE :: fil, modname | ||
| 10 | INTEGER, SAVE :: nvarid | ||
| 11 | |||
| 12 | |||
| 13 | CONTAINS | ||
| 14 | |||
| 15 | |||
| 16 | !=============================================================================== | ||
| 17 | ! | ||
| 18 | 9 | SUBROUTINE dynredem_write_u(ncid,id,var,ll) | |
| 19 | ! | ||
| 20 | !=============================================================================== | ||
| 21 | IMPLICIT NONE | ||
| 22 | !=============================================================================== | ||
| 23 | ! Arguments: | ||
| 24 | INTEGER, INTENT(IN) :: ncid | ||
| 25 | CHARACTER(LEN=*), INTENT(IN) :: id | ||
| 26 | REAL, INTENT(IN) :: var(iip1,jjp1,ll) | ||
| 27 | INTEGER, INTENT(IN) :: ll | ||
| 28 | !=============================================================================== | ||
| 29 | ! Local variables: | ||
| 30 | INTEGER :: start(4), count(4) | ||
| 31 | !=============================================================================== | ||
| 32 |
2/2✓ Branch 0 taken 36 times.
✓ Branch 1 taken 9 times.
|
45 | start(:)=[1,1,1,1]; count(:)=[iip1,jjp1,ll,1] |
| 33 | 9 | CALL err(NF90_INQ_VARID(ncid,id,nvarid),"inq",id) | |
| 34 | 9 | CALL err(NF90_PUT_VAR(ncid,nvarid,var,start,count),"put",id) | |
| 35 | |||
| 36 | 9 | END SUBROUTINE dynredem_write_u | |
| 37 | ! | ||
| 38 | !=============================================================================== | ||
| 39 | |||
| 40 | |||
| 41 | !=============================================================================== | ||
| 42 | ! | ||
| 43 | 1 | SUBROUTINE dynredem_write_v(ncid,id,var,ll) | |
| 44 | ! | ||
| 45 | !=============================================================================== | ||
| 46 | IMPLICIT NONE | ||
| 47 | !=============================================================================== | ||
| 48 | ! Arguments: | ||
| 49 | INTEGER, INTENT(IN) :: ncid | ||
| 50 | CHARACTER(LEN=*), INTENT(IN) :: id | ||
| 51 | REAL, INTENT(IN) :: var(iip1,jjm,ll) | ||
| 52 | INTEGER, INTENT(IN) :: ll | ||
| 53 | !=============================================================================== | ||
| 54 | ! Local variables: | ||
| 55 | INTEGER :: start(4), count(4) | ||
| 56 | !=============================================================================== | ||
| 57 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
|
5 | start(:)=[1,1,1,1]; count(:)=[iip1,jjm,ll,1] |
| 58 | 1 | CALL err(NF90_INQ_VARID(ncid,id,nvarid),"inq",id) | |
| 59 | 1 | CALL err(NF90_PUT_VAR(ncid,nvarid,var,start,count),"put",id) | |
| 60 | |||
| 61 | 1 | END SUBROUTINE dynredem_write_v | |
| 62 | ! | ||
| 63 | !=============================================================================== | ||
| 64 | |||
| 65 | |||
| 66 | !=============================================================================== | ||
| 67 | ! | ||
| 68 | ✗ | SUBROUTINE dynredem_read_u(ncid,id,var,ll) | |
| 69 | ! | ||
| 70 | !=============================================================================== | ||
| 71 | IMPLICIT NONE | ||
| 72 | !=============================================================================== | ||
| 73 | ! Arguments: | ||
| 74 | INTEGER, INTENT(IN) :: ncid | ||
| 75 | CHARACTER(LEN=*), INTENT(IN) :: id | ||
| 76 | REAL, INTENT(OUT) :: var(iip1,jjp1,ll) | ||
| 77 | INTEGER, INTENT(IN) :: ll | ||
| 78 | !=============================================================================== | ||
| 79 | ! Local variables: | ||
| 80 | INTEGER :: start(4), count(4) | ||
| 81 | !=============================================================================== | ||
| 82 | ✗ | start(:)=[1,1,1,1]; count(:)=[iip1,jjp1,ll,1] | |
| 83 | ✗ | CALL err(NF90_INQ_VARID(ncid,id,nvarid),"inq",id) | |
| 84 | ✗ | CALL err(NF90_GET_VAR(ncid,nvarid,var,start,count),"get",id) | |
| 85 | |||
| 86 | ✗ | END SUBROUTINE dynredem_read_u | |
| 87 | ! | ||
| 88 | !=============================================================================== | ||
| 89 | |||
| 90 | |||
| 91 | !=============================================================================== | ||
| 92 | ! | ||
| 93 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 25 times.
|
25 | SUBROUTINE cre_var(ncid,var,title,did,units) |
| 94 | ! | ||
| 95 | !=============================================================================== | ||
| 96 | IMPLICIT NONE | ||
| 97 | !=============================================================================== | ||
| 98 | ! Arguments: | ||
| 99 | INTEGER, INTENT(IN) :: ncid | ||
| 100 | CHARACTER(LEN=*), INTENT(IN) :: var, title | ||
| 101 | INTEGER, INTENT(IN) :: did(:) | ||
| 102 | CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: units | ||
| 103 | !=============================================================================== | ||
| 104 | 25 | CALL err(NF90_DEF_VAR(ncid,var,NF90_DOUBLE,did,nvarid),"inq",var) | |
| 105 |
2/2✓ Branch 0 taken 24 times.
✓ Branch 1 taken 1 times.
|
25 | IF(title/="") CALL err(NF90_PUT_ATT(ncid,nvarid,"title",title),var) |
| 106 |
2/2✓ Branch 0 taken 1 times.
✓ Branch 1 taken 24 times.
|
25 | IF(PRESENT(units)) CALL err(NF90_PUT_ATT(ncid,nvarid,"units",units),var) |
| 107 | |||
| 108 | 25 | END SUBROUTINE cre_var | |
| 109 | ! | ||
| 110 | !=============================================================================== | ||
| 111 | |||
| 112 | |||
| 113 | !=============================================================================== | ||
| 114 | ! | ||
| 115 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
10 | SUBROUTINE put_var1(ncid,var,title,did,v,units) |
| 116 | ! | ||
| 117 | !=============================================================================== | ||
| 118 | IMPLICIT NONE | ||
| 119 | !=============================================================================== | ||
| 120 | ! Arguments: | ||
| 121 | INTEGER, INTENT(IN) :: ncid | ||
| 122 | CHARACTER(LEN=*), INTENT(IN) :: var, title | ||
| 123 | INTEGER, INTENT(IN) :: did(1) | ||
| 124 | REAL, INTENT(IN) :: v(:) | ||
| 125 | CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: units | ||
| 126 | !=============================================================================== | ||
| 127 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
10 | IF( PRESENT(units)) CALL cre_var(ncid,var,title,did,units) |
| 128 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
10 | IF(.NOT.PRESENT(units)) CALL cre_var(ncid,var,title,did) |
| 129 | 10 | CALL err(NF90_ENDDEF(ncid)) | |
| 130 | 10 | CALL err(NF90_PUT_VAR(ncid,nvarid,v),"put",var) | |
| 131 | 10 | CALL err(NF90_REDEF(ncid)) | |
| 132 | |||
| 133 | 10 | END SUBROUTINE put_var1 | |
| 134 | ! | ||
| 135 | !=============================================================================== | ||
| 136 | |||
| 137 | |||
| 138 | !=============================================================================== | ||
| 139 | ! | ||
| 140 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
|
4 | SUBROUTINE put_var2(ncid,var,title,did,v,units) |
| 141 | ! | ||
| 142 | !=============================================================================== | ||
| 143 | IMPLICIT NONE | ||
| 144 | !=============================================================================== | ||
| 145 | ! Arguments: | ||
| 146 | INTEGER, INTENT(IN) :: ncid | ||
| 147 | CHARACTER(LEN=*), INTENT(IN) :: var, title | ||
| 148 | INTEGER, INTENT(IN) :: did(2) | ||
| 149 | REAL, INTENT(IN) :: v(:,:) | ||
| 150 | CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: units | ||
| 151 | !=============================================================================== | ||
| 152 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
|
4 | IF( PRESENT(units)) CALL cre_var(ncid,var,title,did,units) |
| 153 |
1/2✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
|
4 | IF(.NOT.PRESENT(units)) CALL cre_var(ncid,var,title,did) |
| 154 | 4 | CALL err(NF90_ENDDEF(ncid)) | |
| 155 | 4 | CALL err(NF90_PUT_VAR(ncid,nvarid,v),"put",var) | |
| 156 | 4 | CALL err(NF90_REDEF(ncid)) | |
| 157 | |||
| 158 | 4 | END SUBROUTINE put_var2 | |
| 159 | ! | ||
| 160 | !=============================================================================== | ||
| 161 | |||
| 162 | |||
| 163 | !=============================================================================== | ||
| 164 | ! | ||
| 165 | ✗ | FUNCTION msg(typ,nam) | |
| 166 | ! | ||
| 167 | !=============================================================================== | ||
| 168 | IMPLICIT NONE | ||
| 169 | !=============================================================================== | ||
| 170 | ! Arguments: | ||
| 171 | CHARACTER(LEN=256) :: msg !--- STANDARDIZED MESSAGE | ||
| 172 | CHARACTER(LEN=*), INTENT(IN) :: typ !--- TYPE OF OPERATION | ||
| 173 | CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: nam !--- FIELD NAME | ||
| 174 | !=============================================================================== | ||
| 175 | ✗ | SELECT CASE(typ) | |
| 176 | ✗ | CASE('open'); msg="Opening failed for <"//TRIM(fil)//">" | |
| 177 | ✗ | CASE('close'); msg="Closing failed for <"//TRIM(fil)//">" | |
| 178 | ✗ | CASE('get'); msg="Reading failed for <"//TRIM(nam)//">" | |
| 179 | ✗ | CASE('put'); msg="Writting failed for <"//TRIM(nam)//">" | |
| 180 | ✗ | CASE('inq'); msg="Missing field <"//TRIM(nam)//">" | |
| 181 | ✗ | CASE('fnd'); msg="Found field <"//TRIM(nam)//">" | |
| 182 | END SELECT | ||
| 183 | ✗ | msg=TRIM(msg)//" in file <"//TRIM(fil)//">" | |
| 184 | |||
| 185 | ✗ | END FUNCTION msg | |
| 186 | ! | ||
| 187 | !=============================================================================== | ||
| 188 | |||
| 189 | |||
| 190 | !=============================================================================== | ||
| 191 | ! | ||
| 192 | 131 | SUBROUTINE err(ierr,typ,nam) | |
| 193 | ! | ||
| 194 | !=============================================================================== | ||
| 195 | IMPLICIT NONE | ||
| 196 | !=============================================================================== | ||
| 197 | ! Arguments: | ||
| 198 | INTEGER, INTENT(IN) :: ierr !--- NetCDF ERROR CODE | ||
| 199 | CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: typ !--- TYPE OF OPERATION | ||
| 200 | CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: nam !--- FIELD NAME | ||
| 201 | !=============================================================================== | ||
| 202 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 131 times.
|
131 | IF(ierr==NF90_NoERR) RETURN |
| 203 | ✗ | IF(.NOT.PRESENT(typ)) THEN | |
| 204 | ✗ | CALL ABORT_gcm(modname,NF90_STRERROR(ierr),ierr) | |
| 205 | ELSE | ||
| 206 | ✗ | CALL ABORT_gcm(modname,msg(typ,nam),ierr) | |
| 207 | END IF | ||
| 208 | |||
| 209 | END SUBROUTINE err | ||
| 210 | ! | ||
| 211 | !=============================================================================== | ||
| 212 | |||
| 213 | END MODULE dynredem_mod | ||
| 214 | |||
| 215 | |||
| 216 |