Changeset 11260 for branches/UKMO
- Timestamp:
- 2019-07-12T09:38:35+02:00 (5 years ago)
- Location:
- branches/UKMO/AMM15_v3_6_STABLE_package_reanalysis3/NEMOGCM/NEMO/OPA_SRC/OBS
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/AMM15_v3_6_STABLE_package_reanalysis3/NEMOGCM/NEMO/OPA_SRC/OBS/obs_level_search.h90
r8058 r11260 21 21 !! ! 2006-10 (A. Weaver) Cleanup 22 22 !! ! 2008-10 (K. Mogensen) Remove assumptions on grid. 23 !! ! 2019-07 (R. Renshaw) Don't exceed model bottom. 23 24 !!---------------------------------------------------------------------- 24 25 … … 46 47 IF ( pgrddep(jk) >= pobsdep(ji) ) EXIT depk 47 48 END DO depk 48 kobsk(ji) = jk49 kobsk(ji) = MIN( jk, kgrd ) 49 50 END DO 50 51 -
branches/UKMO/AMM15_v3_6_STABLE_package_reanalysis3/NEMOGCM/NEMO/OPA_SRC/OBS/obsinter_z1d.h90
r11256 r11260 26 26 !! ! 06-10 (A. Weaver) Cleanup 27 27 !! ! 07-01 (K. Mogensen) Use profile rather than single level 28 !! ! 19-07 (R. Renshaw) Checks on kkco and zsum to avoid occasional NaNs28 !! ! 19-07 (R. Renshaw) Avoid division by zero 29 29 !!--------------------------------------------------------------------- 30 30 … … 51 51 REAL(KIND=wp) :: zsum2 52 52 INTEGER :: jdep ! Observation depths loop variable 53 INTEGER :: kkco_fix ! kkco(jdep) limited to number of model levels54 53 55 54 !------------------------------------------------------------------------ … … 62 61 ! Initialization 63 62 !--------------------------------------------------------------------- 64 ! kkco (from obs_level_search) sometimes has model level kpk+1 which doesn't exist 65 kkco_fix = MIN( kkco(jdep), kpk ) 66 z1dm = ( pdep(kkco_fix) - pobsdep(jdep) ) 67 z1dp = ( pobsdep(jdep) - pdep(kkco_fix-1) ) 68 ! Where ob is below model bottom, use model bottom and don't extrapolate 69 IF ( pdep(kkco_fix) <= pobsdep(jdep) ) z1dm = 0.0_wp 63 z1dm = ( pdep(kkco(jdep)) - pobsdep(jdep) ) 64 z1dp = ( pobsdep(jdep) - pdep(kkco(jdep)-1) ) 65 ! Where ob is below model bottom, use model bottom rather than extrapolate 66 IF ( pdep(kkco(jdep)) <= pobsdep(jdep) ) z1dm = 0.0_wp 70 67 ! Where lower level is missing, use higher level 71 IF ( pobsmask(kkco _fix) == 0.0_wp ) z1dp = 0.0_wp68 IF ( pobsmask(kkco(jdep)) == 0.0_wp ) z1dp = 0.0_wp 72 69 73 70 zsum = z1dm + z1dp … … 80 77 ! Linear interpolation 81 78 !----------------------------------------------------------------- 82 pobs(jdep) = ( z1dm * pobsk(kkco _fix-1) &83 & + z1dp * pobsk(kkco _fix) ) / zsum79 pobs(jdep) = ( z1dm * pobsk(kkco(jdep)-1) & 80 & + z1dp * pobsk(kkco(jdep) ) ) / zsum 84 81 85 82 ELSEIF ( k1dint == 1 ) THEN … … 89 86 !----------------------------------------------------------------- 90 87 zsum2 = zsum * zsum 91 pobs(jdep) = ( z1dm * pobsk (kkco _fix-1) &92 & + z1dp * pobsk (kkco _fix) &93 & + ( z1dm * ( z1dm * z1dm - zsum2 ) * pobs2k(kkco _fix-1) &94 & + z1dp * ( z1dp * z1dp - zsum2 ) * pobs2k(kkco _fix) &88 pobs(jdep) = ( z1dm * pobsk (kkco(jdep)-1) & 89 & + z1dp * pobsk (kkco(jdep) ) & 90 & + ( z1dm * ( z1dm * z1dm - zsum2 ) * pobs2k(kkco(jdep)-1) & 91 & + z1dp * ( z1dp * z1dp - zsum2 ) * pobs2k(kkco(jdep) ) & 95 92 & ) / 6.0_wp & 96 93 & ) / zsum … … 99 96 100 97 ELSE ! take value directly from the higher model level 101 pobs(jdep) = pobsk(kkco _fix-1)98 pobs(jdep) = pobsk(kkco(jdep)-1) 102 99 ENDIF 103 100
Note: See TracChangeset
for help on using the changeset viewer.