Changeset 11256 for branches/UKMO/AMM15_v3_6_STABLE_package_reanalysis3/NEMOGCM/NEMO/OPA_SRC/OBS/obsinter_z1d.h90
- Timestamp:
- 2019-07-11T16:06:20+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/AMM15_v3_6_STABLE_package_reanalysis3/NEMOGCM/NEMO/OPA_SRC/OBS/obsinter_z1d.h90
r8058 r11256 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 NaNs 28 29 !!--------------------------------------------------------------------- 29 30 … … 50 51 REAL(KIND=wp) :: zsum2 51 52 INTEGER :: jdep ! Observation depths loop variable 53 INTEGER :: kkco_fix ! kkco(jdep) limited to number of model levels 52 54 53 55 !------------------------------------------------------------------------ … … 60 62 ! Initialization 61 63 !--------------------------------------------------------------------- 62 z1dm = ( pdep(kkco(jdep)) - pobsdep(jdep) ) 63 z1dp = ( pobsdep(jdep) - pdep(kkco(jdep)-1) ) 64 IF ( pobsmask(kkco(jdep)) == 0.0_wp ) z1dp = 0.0_wp 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 70 ! Where lower level is missing, use higher level 71 IF ( pobsmask(kkco_fix) == 0.0_wp ) z1dp = 0.0_wp 65 72 66 73 zsum = z1dm + z1dp 74 ! if pobsmask==0 and model level depth==observed depth, we get zsum=0 75 IF ( zsum > 0.0_wp ) THEN 67 76 68 77 IF ( k1dint == 0 ) THEN … … 71 80 ! Linear interpolation 72 81 !----------------------------------------------------------------- 73 pobs(jdep) = ( z1dm * pobsk(kkco (jdep)-1) &74 & + z1dp * pobsk(kkco (jdep)) ) / zsum82 pobs(jdep) = ( z1dm * pobsk(kkco_fix-1) & 83 & + z1dp * pobsk(kkco_fix ) ) / zsum 75 84 76 85 ELSEIF ( k1dint == 1 ) THEN … … 80 89 !----------------------------------------------------------------- 81 90 zsum2 = zsum * zsum 82 pobs(jdep) = ( z1dm * pobsk (kkco (jdep)-1) &83 & + z1dp * pobsk (kkco (jdep)) &84 & + ( z1dm * ( z1dm * z1dm - zsum2 ) * pobs2k(kkco (jdep)-1) &85 & + z1dp * ( z1dp * z1dp - zsum2 ) * pobs2k(kkco (jdep)) &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 ) & 86 95 & ) / 6.0_wp & 87 96 & ) / zsum 88 97 89 98 ENDIF 99 100 ELSE ! take value directly from the higher model level 101 pobs(jdep) = pobsk(kkco_fix-1) 102 ENDIF 103 90 104 END DO 91 105
Note: See TracChangeset
for help on using the changeset viewer.