Changeset 6855 for branches/UKMO/dev_r4650_general_vert_coord_obsoper_surf_bgc/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90
- Timestamp:
- 2016-08-08T14:55:55+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r4650_general_vert_coord_obsoper_surf_bgc/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90
r6854 r6855 31 31 USE obs_read_vel ! Reading and allocation of velocity component observations 32 32 USE obs_read_logchl ! Reading and allocation of logchl observations 33 USE obs_read_spm ! Reading and allocation of spm observations 33 34 USE obs_prep ! Preparation of obs. (grid search etc). 34 35 USE obs_oper ! Observation operators … … 43 44 USE obs_seaice ! Sea Ice data storage 44 45 USE obs_logchl ! logchl data storage 46 USE obs_spm ! spm data storage 45 47 USE obs_types ! Definitions for observation types 46 48 USE mpp_map ! MPP mapping … … 86 88 LOGICAL, PUBLIC :: ln_logchl !: Logical switch for log10(chlorophyll) 87 89 LOGICAL, PUBLIC :: ln_logchlfb !: Logical switch for logchl from feedback files 90 LOGICAL, PUBLIC :: ln_spm !: Logical switch for spm 91 LOGICAL, PUBLIC :: ln_spmfb !: Logical switch for spm from feedback files 88 92 LOGICAL, PUBLIC :: ln_ssh !: Logical switch for sea surface height 89 93 LOGICAL, PUBLIC :: ln_sss !: Logical switch for sea surface salinity … … 171 175 CHARACTER(len=128) :: logchlfiles(MaxNumFiles) 172 176 CHARACTER(len=128) :: logchlfbfiles(MaxNumFiles) 177 CHARACTER(len=128) :: spmfiles(MaxNumFiles) 178 CHARACTER(len=128) :: spmfbfiles(MaxNumFiles) 173 179 CHARACTER(LEN=128) :: reysstname 174 180 CHARACTER(LEN=12) :: reysstfmt … … 197 203 & ln_logchl, ln_logchlfb, & 198 204 & logchlfiles, logchlfbfiles, & 205 & ln_spm, ln_spmfb, & 206 & spmfiles, spmfbfiles, & 199 207 & ln_profb_enatim, ln_ignmis, ln_cl4, & 200 208 & ln_sstbias, sstbias_files … … 220 228 INTEGER :: jnumlogchl 221 229 INTEGER :: jnumlogchlfb 230 INTEGER :: jnumspm 231 INTEGER :: jnumspmfb 222 232 INTEGER :: ji 223 233 INTEGER :: jset … … 231 241 ln_logchl = .FALSE. 232 242 ln_logchlfb = .FALSE. 243 ln_spm = .FALSE. 244 ln_spmfb = .FALSE. 233 245 234 246 !Initalise all values in namelist arrays … … 253 265 logchlfiles(:) = '' 254 266 logchlfbfiles(:) = '' 267 spmfiles(:) = '' 268 spmfbfiles(:) = '' 255 269 sstbias_files(:) = '' 256 270 endailyavtypes(:) = -1 … … 361 375 WHERE (logchlfbfiles(:) /= '') lmask(:) = .TRUE. 362 376 jnumlogchlfb = COUNT(lmask) 377 ENDIF 378 IF (ln_spm) THEN 379 lmask(:) = .FALSE. 380 WHERE (spmfiles(:) /= '') lmask(:) = .TRUE. 381 jnumspm = COUNT(lmask) 382 ENDIF 383 IF (ln_spmfb) THEN 384 lmask(:) = .FALSE. 385 WHERE (spmfbfiles(:) /= '') lmask(:) = .TRUE. 386 jnumspmfb = COUNT(lmask) 363 387 ENDIF 364 388 … … 394 418 WRITE(numout,*) ' Logical switch for logchl observations ln_logchl = ', ln_logchl 395 419 WRITE(numout,*) ' Logical switch for feedback logchl data ln_logchlfb = ', ln_logchlfb 420 WRITE(numout,*) ' Logical switch for spm observations ln_spm = ', ln_spm 421 WRITE(numout,*) ' Logical switch for feedback spm data ln_spmfb = ', ln_spmfb 396 422 WRITE(numout,*) ' Global distribtion of observations ln_grid_global = ',ln_grid_global 397 423 WRITE(numout,*) & … … 502 528 WRITE(numout,'(1X,2A)') ' Feedback logchl input observation file name logchlfbfiles = ', & 503 529 TRIM(logchlfbfiles(ji)) 530 END DO 531 ENDIF 532 IF (ln_spm) THEN 533 DO ji = 1, jnumspm 534 WRITE(numout,'(1X,2A)') ' spm input observation file name spmfiles = ', & 535 TRIM(spmfiles(ji)) 536 END DO 537 ENDIF 538 IF (ln_spmfb) THEN 539 DO ji = 1, jnumspmfb 540 WRITE(numout,'(1X,2A)') ' Feedback spm input observation file name spmfbfiles = ', & 541 TRIM(spmfbfiles(ji)) 504 542 END DO 505 543 ENDIF … … 538 576 & ( .NOT. ln_vel3d ).AND. & 539 577 & ( .NOT. ln_ssh ).AND.( .NOT. ln_sst ).AND.( .NOT. ln_sss ).AND. & 540 & ( .NOT. ln_seaice ).AND.( .NOT. ln_vel3d ).AND.( .NOT. ln_logchl ) ) THEN 578 & ( .NOT. ln_seaice ).AND.( .NOT. ln_vel3d ).AND.( .NOT. ln_logchl ).AND. & 579 & ( .NOT. ln_spm ) ) THEN 541 580 IF(lwp) WRITE(numout,cform_war) 542 581 IF(lwp) WRITE(numout,*) ' key_diaobs is activated but logical flags', & 543 582 & ' ln_t3d, ln_s3d, ln_sla, ln_ssh, ln_sst, ln_sss, ln_seaice, ln_vel3d,', & 544 & ' ln_logchl are all set to .FALSE.'583 & ' ln_logchl, ln_spm are all set to .FALSE.' 545 584 nwarn = nwarn + 1 546 585 ENDIF … … 1095 1134 1096 1135 ENDIF 1136 1137 ! - spm 1138 1139 IF ( ln_spm ) THEN 1140 1141 ! Set the number of variables for spm to 1 1142 nspmvars = 1 1143 1144 ! Set the number of extra variables for spm to 0 1145 nspmextr = 0 1146 1147 IF ( ln_spmfb ) THEN 1148 nspmsets = jnumspmfb 1149 ELSE 1150 nspmsets = 1 1151 ENDIF 1152 1153 ALLOCATE(spmdata(nspmsets)) 1154 ALLOCATE(spmdatqc(nspmsets)) 1155 spmdata(:)%nsurf=0 1156 spmdatqc(:)%nsurf=0 1157 1158 nspmsets = 0 1159 1160 IF ( ln_spmfb ) THEN ! Feedback file format 1161 1162 DO jset = 1, jnumspmfb 1163 1164 nspmsets = nspmsets + 1 1165 1166 CALL obs_rea_spm( 0, spmdata(nspmsets), 1, & 1167 & spmfbfiles(jset:jset), & 1168 & nspmvars, nspmextr, nitend-nit000+2, & 1169 & dobsini, dobsend, ln_ignmis, .FALSE. ) 1170 1171 CALL obs_pre_spm( spmdata(nspmsets), spmdatqc(nspmsets), & 1172 & ln_spm, ln_nea ) 1173 1174 ENDDO 1175 1176 ELSE ! Original file format 1177 1178 nspmsets = nspmsets + 1 1179 1180 CALL obs_rea_spm( 1, spmdata(nspmsets), jnumspm, & 1181 & spmfiles(1:jnumspm), & 1182 & nspmvars, nspmextr, nitend-nit000+2, & 1183 & dobsini, dobsend, ln_ignmis, .FALSE. ) 1184 1185 CALL obs_pre_spm( spmdata(nspmsets), spmdatqc(nspmsets), & 1186 & ln_spm, ln_nea ) 1187 1188 ENDIF 1189 1190 ENDIF 1097 1191 1098 1192 END SUBROUTINE dia_obs_init … … 1113 1207 !! - Velocity component (U,V) profiles 1114 1208 !! - Sea surface log10(chlorophyll) 1209 !! - Sea surface spm 1115 1210 !! 1116 1211 !! ** Action : … … 1161 1256 !USE ??? ! ERSEM chlorophyll 1162 1257 #endif 1258 #if defined key_spm 1259 USE par_spm, ONLY: & ! ERSEM/SPM sediments 1260 & jp_spm 1261 #endif 1163 1262 IMPLICIT NONE 1164 1263 … … 1173 1272 INTEGER :: jveloset ! velocity profile data loop variable 1174 1273 INTEGER :: jlogchlset ! logchl data set loop variable 1274 INTEGER :: jspmset ! spm data set loop variable 1175 1275 INTEGER :: jvar ! Variable number 1176 1276 #if ! defined key_lim2 && ! defined key_lim3 … … 1182 1282 REAL(wp), DIMENSION(jpi,jpj) :: & 1183 1283 maskchl ! array for special chlorophyll mask 1284 REAL(wp), DIMENSION(jpi,jpj) :: & 1285 spm ! array for spm 1286 INTEGER :: jn ! loop index 1184 1287 CHARACTER(LEN=20) :: datestr=" ",timestr=" " 1185 1288 … … 1324 1427 ENDIF 1325 1428 1429 IF ( ln_spm ) THEN 1430 #if defined key_spm 1431 spm(:,:) = 0.0 1432 DO jn = 1, jp_spm 1433 spm(:,:) = spm(:,:) + trn(:,:,1,jn) ! sum SPM sizes 1434 END DO 1435 #else 1436 CALL ctl_stop( ' Trying to run spm observation operator', & 1437 & ' but no spm model appears to have been defined' ) 1438 #endif 1439 1440 DO jspmset = 1, nspmsets 1441 CALL obs_spm_opt( spmdatqc(jspmset), & 1442 & kstp, jpi, jpj, nit000, spm(:,:), & 1443 & tmask(:,:,1), n2dint ) 1444 END DO 1445 ENDIF 1446 1326 1447 #if ! defined key_lim2 && ! defined key_lim3 1327 1448 CALL wrk_dealloc(jpi,jpj,frld) … … 1357 1478 INTEGER :: jseaiceset ! Sea Ice data set loop variable 1358 1479 INTEGER :: jlogchlset ! logchl data set loop variable 1480 INTEGER :: jspmset ! spm data set loop variable 1359 1481 INTEGER :: jset 1360 1482 INTEGER :: jfbini … … 1628 1750 WRITE(cdtmp,'(A,I2.2)')'logchlfb_',jlogchlset 1629 1751 CALL obs_wri_logchl( cdtmp, logchldata(jlogchlset) ) 1752 1753 END DO 1754 1755 ENDIF 1756 1757 ! - spm 1758 IF ( ln_spm ) THEN 1759 1760 ! Copy data from spmdatqc to spmdata structures 1761 DO jspmset = 1, nspmsets 1762 1763 CALL obs_surf_decompress( spmdatqc(jspmset), & 1764 & spmdata(jspmset), .TRUE., numout ) 1765 1766 END DO 1767 1768 ! Write the spm data 1769 DO jspmset = 1, nspmsets 1770 1771 WRITE(cdtmp,'(A,I2.2)')'spmfb_',jspmset 1772 CALL obs_wri_spm( cdtmp, spmdata(jspmset) ) 1630 1773 1631 1774 END DO
Note: See TracChangeset
for help on using the changeset viewer.