Changeset 15285 for NEMO/branches/UKMO/NEMO_4.0.4_generic_obs
- Timestamp:
- 2021-09-24T12:33:16+02:00 (3 years ago)
- Location:
- NEMO/branches/UKMO/NEMO_4.0.4_generic_obs/src/OCE/OBS
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/NEMO_4.0.4_generic_obs/src/OCE/OBS/diaobs.F90
r15246 r15285 319 319 CALL obs_rea_mdt( sobsgroups(jgroup)%ssurfdataqc, & 320 320 & sobsgroups(jgroup)%n2dint, & 321 & sobsgroups(jgroup)%next_mdt ) 321 & sobsgroups(jgroup)%next_mdt, & 322 & sobsgroups(jgroup)%nmsshc, & 323 & sobsgroups(jgroup)%rmdtcorr, & 324 & sobsgroups(jgroup)%rmdtcutoff ) 322 325 IF( sobsgroups(jgroup)%laltbias ) THEN 323 326 !CALL obs_rea_altbias( sobsgroups(jgroup)%ssurfdataqc, & … … 797 800 798 801 IF (sobsgroups(jgroup)%lfbd) THEN 799 ! Input observations were freeboard, but we're putputting ice thickness802 ! Input observations were freeboard, but we're outputting ice thickness 800 803 DO jvar = 1, sobsgroups(jgroup)%nobstypes 801 804 IF ( sobsgroups(jgroup)%cobstypes(jvar) == cobsname_fbd ) THEN -
NEMO/branches/UKMO/NEMO_4.0.4_generic_obs/src/OCE/OBS/obs_group_def.F90
r15246 r15285 461 461 WRITE(numout,*) ' Settings only for temperature/salinity data' 462 462 WRITE(numout,*) ' Logical switch for outputting climatology ln_output_clim = ', sdobsgroup%loutput_clim 463 464 IF ( ( sdobsgroup%lsurf .AND. sdobsgroup%lprof ) .OR. & 465 & ( .NOT. sdobsgroup%lsurf .AND. .NOT. sdobsgroup%lprof ) ) THEN 466 CALL ctl_stop( ' One and only one of ln_surf or ln_prof must be set per observation group' ) 467 ENDIF 468 469 IF ( sdobsgroup%nobstypes == 0 ) THEN 470 CALL ctl_stop( ' No observation types specified for this observation group' ) 471 ENDIF 472 473 IF ( sdobsgroup%nobsfiles == 0 ) THEN 474 CALL ctl_stop( ' No observation files specified for this observation group' ) 475 ENDIF 476 477 IF ( (sdobsgroup%lobsbias) .AND. (sdobsgroup%nobsbiasfiles == 0) ) THEN 478 CALL ctl_stop( ' No bias files specified for this observation group' ) 479 ENDIF 480 481 IF ( (sdobsgroup%n2dint < 0) .OR. (sdobsgroup%n2dint > 6) ) THEN 482 CALL ctl_stop( ' Invalid horizontal interpolation type' ) 483 ENDIF 484 485 IF( (sdobsgroup%n1dint < 0) .OR. (sdobsgroup%n1dint > 1) ) THEN 486 CALL ctl_stop(' Invalid vertical interpolation type') 487 ENDIF 488 489 IF ( (sdobsgroup%n2dint > 4) .AND. (sdobsgroup%n2dint <= 6) ) THEN 490 IF ( sdobsgroup%ravglamscl <= 0._wp ) THEN 491 CALL ctl_stop( ' Incorrect value set for averaging footprint scale rn_avglamscl' ) 492 ENDIF 493 IF ( sdobsgroup%ravgphiscl <= 0._wp ) THEN 494 CALL ctl_stop( ' Incorrect value set for averaging footprint scale rn_avgphiscl' ) 495 ENDIF 496 ENDIF 497 498 ! Various other checks of combined options 499 463 500 ENDIF 464 501 465 IF ( ( sdobsgroup%lsurf .AND. sdobsgroup%lprof ) .OR. &466 & ( .NOT. sdobsgroup%lsurf .AND. .NOT. sdobsgroup%lprof ) ) THEN467 CALL ctl_stop( ' One and only one of ln_surf or ln_prof must be set per observation group' )468 ENDIF469 470 IF ( sdobsgroup%nobstypes == 0 ) THEN471 CALL ctl_stop( ' No observation types specified for this observation group' )472 ENDIF473 474 IF ( sdobsgroup%nobsfiles == 0 ) THEN475 CALL ctl_stop( ' No observation files specified for this observation group' )476 ENDIF477 478 IF ( (sdobsgroup%lobsbias) .AND. (sdobsgroup%nobsbiasfiles == 0) ) THEN479 CALL ctl_stop( ' No bias files specified for this observation group' )480 ENDIF481 482 IF ( (sdobsgroup%n2dint < 0) .OR. (sdobsgroup%n2dint > 6) ) THEN483 CALL ctl_stop( ' Invalid horizontal interpolation type' )484 ENDIF485 486 IF( (sdobsgroup%n1dint < 0) .OR. (sdobsgroup%n1dint > 1) ) THEN487 CALL ctl_stop(' Invalid vertical interpolation type')488 ENDIF489 490 IF ( (sdobsgroup%n2dint > 4) .AND. (sdobsgroup%n2dint <= 6) ) THEN491 IF ( sdobsgroup%ravglamscl <= 0._wp ) THEN492 CALL ctl_stop( ' Incorrect value set for averaging footprint scale rn_avglamscl' )493 ENDIF494 IF ( sdobsgroup%ravgphiscl <= 0._wp ) THEN495 CALL ctl_stop( ' Incorrect value set for averaging footprint scale rn_avgphiscl' )496 ENDIF497 ENDIF498 499 ! Various other checks of combined options500 501 502 ENDIF 502 503 -
NEMO/branches/UKMO/NEMO_4.0.4_generic_obs/src/OCE/OBS/obs_oper.F90
r15248 r15285 925 925 #if defined key_si3 || defined key_cice 926 926 ELSE IF ( TRIM(surfdataqc%cvars(kvar)) == cobsname_fbd .AND. PRESENT(kfbd) .AND. PRESENT(ksnow) ) THEN 927 surfdataqc%rmod(jobs,kvar) = zext(1) 927 928 ! Convert radar freeboard to true freeboard 928 929 ! (add 1/4 snow depth; 1/4 based on ratio of speed of light in vacuum -
NEMO/branches/UKMO/NEMO_4.0.4_generic_obs/src/OCE/OBS/obs_readmdt.F90
r15187 r15285 31 31 32 32 PUBLIC obs_rea_mdt ! called by dia_obs_init 33 PUBLIC obs_offset_mdt ! called by obs_rea_mdt34 35 INTEGER , PUBLIC :: nn_msshc = 1 ! MDT correction scheme36 REAL(wp), PUBLIC :: rn_mdtcorr = 1.61_wp ! User specified MDT correction37 REAL(wp), PUBLIC :: rn_mdtcutoff = 65.0_wp ! MDT cutoff for computed correction38 33 39 34 !!---------------------------------------------------------------------- … … 44 39 CONTAINS 45 40 46 SUBROUTINE obs_rea_mdt( sladata, k2dint, kmdt ) 41 SUBROUTINE obs_rea_mdt( sladata, k2dint, kmdt, nn_msshc, rn_mdtcorr, & 42 rn_mdtcutoff ) 47 43 !!--------------------------------------------------------------------- 48 44 !! … … 57 53 USE iom 58 54 ! 59 TYPE(obs_surf), INTENT(inout) :: sladata ! SLA data 60 INTEGER , INTENT(in) :: k2dint ! ? 61 INTEGER , INTENT(in) :: kmdt ! Index of MDT extra var 55 TYPE(obs_surf), INTENT(inout) :: sladata ! SLA data 56 INTEGER , INTENT(in) :: k2dint ! Interpolation type 57 INTEGER , INTENT(in) :: kmdt ! Index of MDT extra var 58 INTEGER , INTENT(in) :: nn_msshc ! MDT correction scheme 59 REAL(wp) , INTENT(in) :: rn_mdtcorr ! User specified MDT correction 60 REAL(wp) , INTENT(in) :: rn_mdtcutoff ! MDT cutoff for computed correction 62 61 ! 63 62 CHARACTER(LEN=12), PARAMETER :: cpname = 'obs_rea_mdt' … … 106 105 107 106 ! Remove the offset between the MDT used with the sla and the model MDT 108 IF( nn_msshc == 1 .OR. nn_msshc == 2 ) & 109 & CALL obs_offset_mdt( jpi, jpj, z_mdt, zfill ) 107 IF( nn_msshc == 1 .OR. nn_msshc == 2 ) THEN 108 CALL obs_offset_mdt( jpi, jpj, z_mdt, zfill, nn_msshc, & 109 & rn_mdtcorr, rn_mdtcutoff ) 110 ENDIF 110 111 111 112 ! Interpolate the MDT already on the model grid at the observation point … … 170 171 171 172 172 SUBROUTINE obs_offset_mdt( kpi, kpj, mdt, zfill ) 173 SUBROUTINE obs_offset_mdt( kpi, kpj, mdt, zfill, nn_msshc, rn_mdtcorr, & 174 rn_mdtcutoff ) 173 175 !!--------------------------------------------------------------------- 174 176 !! … … 184 186 !!---------------------------------------------------------------------- 185 187 INTEGER, INTENT(IN) :: kpi, kpj 186 REAL(wp), DIMENSION(kpi,kpj), INTENT(INOUT) :: mdt ! MDT used on the model grid 187 REAL(wp) , INTENT(IN ) :: zfill 188 REAL(wp), DIMENSION(kpi,kpj), INTENT(INOUT) :: mdt ! MDT used on the model grid 189 REAL(wp) , INTENT(IN ) :: zfill ! Fill value 190 INTEGER , INTENT(IN ) :: nn_msshc ! MDT correction scheme 191 REAL(wp) , INTENT(IN ) :: rn_mdtcorr ! User specified MDT correction 192 REAL(wp) , INTENT(IN ) :: rn_mdtcutoff ! MDT cutoff for computed correction 188 193 ! 189 194 INTEGER :: ji, jj -
NEMO/branches/UKMO/NEMO_4.0.4_generic_obs/src/OCE/OBS/obs_write.F90
r15225 r15285 532 532 533 533 IF (lwp) THEN 534 WRITE(numout,*) 'Type: ',fbdata%cname(jvar),' Total number of good observations: ',inumgoodobsmpp 535 WRITE(numout,*) 'Overall mean obs minus model of the good observations: ',zsumx/inumgoodobsmpp 536 WRITE(numout,*) 'Overall RMS obs minus model of the good observations: ',sqrt( zsumx2/inumgoodobsmpp ) 534 WRITE(numout,*) 'Type: ',fbdata%cname(jvar),' Total number of good observations: ',inumgoodobsmpp 535 IF ( inumgoodobsmpp > 0 ) THEN 536 WRITE(numout,*) 'Overall mean obs minus model of the good observations: ',zsumx/inumgoodobsmpp 537 WRITE(numout,*) 'Overall RMS obs minus model of the good observations: ',sqrt( zsumx2/inumgoodobsmpp ) 538 ENDIF 537 539 WRITE(numout,*) '' 538 540 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.