Changeset 15248
- Timestamp:
- 2021-09-10T16:38:02+02:00 (3 years ago)
- Location:
- NEMO/branches/UKMO/NEMO_4.0.4_generic_obs/src/OCE
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/NEMO_4.0.4_generic_obs/src/OCE/DYN/dynspg_ts.F90
r14075 r15248 51 51 USE agrif_oce 52 52 #endif 53 #if defined key_asminc 54 USE asminc ! Assimilation increment 55 #endif 53 ! REMOVING THIS AS PER V3.6, BUT IS THIS THE BEST BRANCH TO DO IT IN? 54 !#if defined key_asminc 55 ! USE asminc ! Assimilation increment 56 !#endif 56 57 ! 57 58 USE in_out_manager ! I/O manager … … 341 342 ENDIF 342 343 ! 343 #if defined key_asminc 344 ! != Add the IAU weighted SSH increment =! 345 ! ! ------------------------------------ ! 346 IF( lk_asminc .AND. ln_sshinc .AND. ln_asmiau ) THEN 347 zssh_frc(:,:) = zssh_frc(:,:) - ssh_iau(:,:) 348 ENDIF 349 #endif 344 ! REMOVING THIS AS PER V3.6, BUT IS THIS THE BEST BRANCH TO DO IT IN? 345 !#if defined key_asminc 346 ! ! != Add the IAU weighted SSH increment =! 347 ! ! ! ------------------------------------ ! 348 ! IF( lk_asminc .AND. ln_sshinc .AND. ln_asmiau ) THEN 349 ! zssh_frc(:,:) = zssh_frc(:,:) - ssh_iau(:,:) 350 ! ENDIF 351 !#endif 350 352 ! != Fill boundary data arrays for AGRIF 351 353 ! ! ------------------------------------ -
NEMO/branches/UKMO/NEMO_4.0.4_generic_obs/src/OCE/OBS/obs_level_search.h90
r14075 r15248 13 13 !! ** Method : Straightforward search 14 14 !! 15 !! ** Action : 15 !! ** Action : Will return level associated with T-point below the obs 16 !! depth, except when observation is in the top box will 17 !! return level 2. Also, if obs depth greater than depth 18 !! of last wet T-point (kpk-1) will return level kpk. 16 19 !! 17 20 !! History : … … 43 46 DO ji = 1, kobs 44 47 kobsk(ji) = 1 45 depk: DO jk = 2, kgrd 48 depk: DO jk = 2, kgrd-1 46 49 IF ( pgrddep(jk) >= pobsdep(ji) ) EXIT depk 47 50 END DO depk -
NEMO/branches/UKMO/NEMO_4.0.4_generic_obs/src/OCE/OBS/obs_oper.F90
r15246 r15248 760 760 & zmask(imaxifp,imaxjfp,isurf), & 761 761 & zsurf(imaxifp,imaxjfp,isurf), & 762 & zsurftmp(imaxifp,imaxjfp,isurf), & 763 & zglamf(imaxifp+1,imaxjfp+1,isurf), & 764 & zgphif(imaxifp+1,imaxjfp+1,isurf), & 765 & igrdip1(imaxifp+1,imaxjfp+1,isurf), & 766 & igrdjp1(imaxifp+1,imaxjfp+1,isurf) & 762 & zsurftmp(imaxifp,imaxjfp,isurf) & 767 763 & ) 764 765 IF ( k2dint > 4 ) THEN 766 ALLOCATE( & 767 & zglamf(imaxifp+1,imaxjfp+1,isurf), & 768 & zgphif(imaxifp+1,imaxjfp+1,isurf), & 769 & igrdip1(imaxifp+1,imaxjfp+1,isurf), & 770 & igrdjp1(imaxifp+1,imaxjfp+1,isurf) & 771 & ) 772 ENDIF 768 773 769 774 IF ( ldclim ) THEN … … 787 792 IF ( imodj > jpjglo ) imodj = jpjglo 788 793 ! 789 igrdip1(ji+1,jj+1,iobs) = imodi 790 igrdjp1(ji+1,jj+1,iobs) = imodj 794 IF ( k2dint > 4 ) THEN 795 igrdip1(ji+1,jj+1,iobs) = imodi 796 igrdjp1(ji+1,jj+1,iobs) = imodj 797 ENDIF 791 798 ! 792 799 IF ( ji >= 1 .AND. jj >= 1 ) THEN … … 819 826 ENDIF 820 827 821 CALL obs_int_comm_2d( imaxifp+1, imaxjfp+1, isurf, kpi, kpj, & 822 & igrdip1, igrdjp1, glamf, zglamf ) 823 CALL obs_int_comm_2d( imaxifp+1, imaxjfp+1, isurf, kpi, kpj, & 824 & igrdip1, igrdjp1, gphif, zgphif ) 828 IF ( k2dint > 4 ) THEN 829 CALL obs_int_comm_2d( imaxifp+1, imaxjfp+1, isurf, kpi, kpj, & 830 & igrdip1, igrdjp1, glamf, zglamf ) 831 CALL obs_int_comm_2d( imaxifp+1, imaxjfp+1, isurf, kpi, kpj, & 832 & igrdip1, igrdjp1, gphif, zgphif ) 833 ENDIF 825 834 826 835 IF ( ldclim ) THEN … … 955 964 & zmask, & 956 965 & zsurf, & 957 & zsurftmp, & 958 & zglamf, & 959 & zgphif, & 960 & igrdip1,& 961 & igrdjp1 & 966 & zsurftmp & 962 967 & ) 968 969 IF ( k2dint > 4 ) THEN 970 DEALLOCATE( & 971 & zglamf, & 972 & zgphif, & 973 & igrdip1,& 974 & igrdjp1 & 975 & ) 976 ENDIF 963 977 964 978 IF ( ldclim ) THEN -
NEMO/branches/UKMO/NEMO_4.0.4_generic_obs/src/OCE/OBS/obs_prep.F90
r15228 r15248 1120 1120 & gdept_n, & 1121 1121 & ln_zco, & 1122 & ln_zps 1123 1122 & ln_zps, & 1123 & mbkt 1124 ! I THINK MBKT IS CORRECT (V3.6 WAS MBATHY) BUT CONFIRM 1124 1125 !! * Arguments 1125 1126 INTEGER, INTENT(IN) :: kprofno ! Number of profiles … … 1166 1167 REAL(KIND=wp), DIMENSION(jpi,jpj) :: zbdymask 1167 1168 REAL(KIND=wp), DIMENSION(2,2,kpk,kprofno) :: & 1169 & zgdept, & 1168 1170 & zgdepw 1169 1171 REAL(KIND=wp), DIMENSION(2,2,kprofno) :: & 1170 1172 & zglam, & ! Model longitude at grid points 1171 & zgphi ! Model latitude at grid points 1173 & zgphi, & ! Model latitude at grid points 1174 & zbathy ! Index of deepest wet level at grid points 1172 1175 INTEGER, DIMENSION(2,2,kprofno) :: & 1173 1176 & igrdi, & ! Grid i,j … … 1177 1180 INTEGER :: iig, ijg ! i,j of observation on model grid point. 1178 1181 INTEGER :: jobs, jobsp, jk, ji, jj 1182 REAL(KIND=wp) :: maxdept, maxdepw 1179 1183 !!---------------------------------------------------------------------- 1180 1184 … … 1228 1232 CALL obs_int_comm_2d( 2, 2, kprofno, kpi, kpj, igrdi, igrdj, plam, zglam ) 1229 1233 CALL obs_int_comm_2d( 2, 2, kprofno, kpi, kpj, igrdi, igrdj, pphi, zgphi ) 1234 CALL obs_int_comm_2d( 2, 2, kprofno, kpi, kpj, igrdi, igrdj, REAL(mbkt), zbathy ) 1235 ! Need to know the bathy depth for each observation for sco 1230 1236 CALL obs_int_comm_3d( 2, 2, kprofno, kpi, kpj, kpk, igrdi, igrdj, gdepw_n(:,:,:), & 1231 & zgdepw ) 1237 & zgdepw ) 1238 CALL obs_int_comm_3d( 2, 2, kprofno, kpi, kpj, kpk, igrdi, igrdj, gdept_n(:,:,:), & 1239 & zgdept ) 1232 1240 1233 1241 DO jobs = 1, kprofno … … 1265 1273 DO jobsp = kpstart(jobs), kpend(jobs) 1266 1274 1275 ! Calculate max T and W depths of 2x2 grid 1276 maxdept=zgdept(1,1,NINT(zbathy(1,1,jobs)),jobs) 1277 maxdepw=zgdepw(1,1,NINT(zbathy(1,1,jobs))+1,jobs) 1278 DO jj = 1, 2 1279 DO ji = 1, 2 1280 IF ( zgdept(ji,jj,NINT(zbathy(ji,jj,jobs)),jobs) > maxdept ) THEN 1281 maxdept = zgdept(ji,jj,NINT(zbathy(ji,jj,jobs)),jobs) 1282 END IF 1283 IF ( zgdepw(ji,jj,NINT(zbathy(ji,jj,jobs))+1,jobs) > maxdepw ) THEN 1284 maxdepw = zgdepw(ji,jj,NINT(zbathy(ji,jj,jobs))+1,jobs) 1285 END IF 1286 END DO 1287 END DO 1288 1267 1289 ! Flag if the observation falls outside the model spatial domain 1268 IF ( ( pobslam(jobs) < -180. 1269 & .OR. ( pobslam(jobs) > 180. 1270 & .OR. ( pobsphi(jobs) < -90. 1271 & .OR. ( pobsphi(jobs) > 90. 1272 & .OR. ( pobsdep(jobsp) < 0.0 1273 & .OR. ( pobsdep(jobsp) > gdepw_1d(kpk)) ) THEN1290 IF ( ( pobslam(jobs) < -180. ) & 1291 & .OR. ( pobslam(jobs) > 180. ) & 1292 & .OR. ( pobsphi(jobs) < -90. ) & 1293 & .OR. ( pobsphi(jobs) > 90. ) & 1294 & .OR. ( pobsdep(jobsp) < 0.0 ) & 1295 & .OR. ( pobsdep(jobsp) > maxdepw ) ) THEN 1274 1296 kobsqc(jobsp) = IBSET(kobsqc(jobsp),11) 1275 1297 kosdobs = kosdobs + 1 … … 1317 1339 1318 1340 ! Set observation depth equal to that of the first model depth 1319 IF ( pobsdep(jobsp) <= pdep(1) ) THEN 1320 pobsdep(jobsp) = pdep(1) 1321 ENDIF 1341 IF ( pobsdep(jobsp) < MINVAL(zgdept(1:2,1:2,1,jobs) ) ) THEN 1342 pobsdep(jobsp) = MINVAL(zgdept(1:2,1:2,1,jobs)) 1343 ENDIF 1344 1345 ! Set observation depth equal to that of the last wet T-point 1346 IF ( ( pobsdep(jobsp) > maxdept ) .AND. & 1347 & ( pobsdep(jobsp) < maxdepw ) ) THEN 1348 pobsdep(jobsp) = maxdept 1349 END IF 1322 1350 1323 1351 IF (ln_bdy) THEN
Note: See TracChangeset
for help on using the changeset viewer.