Changeset 3585 for branches/2012/dev_r3342_MERCATOR7_SST/NEMOGCM/NEMO
- Timestamp:
- 2012-11-16T18:14:12+01:00 (12 years ago)
- Location:
- branches/2012/dev_r3342_MERCATOR7_SST/NEMOGCM/NEMO/OPA_SRC/OBS
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2012/dev_r3342_MERCATOR7_SST/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90
r3411 r3585 59 59 60 60 !! * Module variables 61 LOGICAL, PUBLIC :: ln_t3d !: Logical switch for temperature profiles 62 LOGICAL, PUBLIC :: ln_s3d !: Logical switch for salinity profiles 63 LOGICAL, PUBLIC :: ln_ena !: Logical switch for the ENACT data set 64 LOGICAL, PUBLIC :: ln_cor !: Logical switch for the Coriolis data set 65 LOGICAL, PUBLIC :: ln_profb !: Logical switch for profile feedback datafiles 66 LOGICAL, PUBLIC :: ln_sla !: Logical switch for sea level anomalies 67 LOGICAL, PUBLIC :: ln_sladt !: Logical switch for SLA from AVISO files 68 LOGICAL, PUBLIC :: ln_slafb !: Logical switch for SLA from feedback files 69 LOGICAL, PUBLIC :: ln_sst !: Logical switch for sea surface temperature 70 LOGICAL, PUBLIC :: ln_reysst !: Logical switch for Reynolds sea surface temperature 71 LOGICAL, PUBLIC :: ln_ghrsst !: Logical switch for GHRSST data 72 LOGICAL, PUBLIC :: ln_sstfb !: Logical switch for SST from feedback files 73 LOGICAL, PUBLIC :: ln_seaice !: Logical switch for sea ice concentration 74 LOGICAL, PUBLIC :: ln_vel3d !: Logical switch for velocity component (u,v) observations 75 LOGICAL, PUBLIC :: ln_velavcur !: Logical switch for raw daily averaged netCDF current meter vel. data 76 LOGICAL, PUBLIC :: ln_velhrcur !: Logical switch for raw high freq netCDF current meter vel. data 77 LOGICAL, PUBLIC :: ln_velavadcp !: Logical switch for raw daily averaged netCDF ADCP vel. data 78 LOGICAL, PUBLIC :: ln_velhradcp !: Logical switch for raw high freq netCDF ADCP vel. data 79 LOGICAL, PUBLIC :: ln_velfb !: Logical switch for velocities from feedback files 80 LOGICAL, PUBLIC :: ln_ssh !: Logical switch for sea surface height 81 LOGICAL, PUBLIC :: ln_sss !: Logical switch for sea surface salinity 82 LOGICAL, PUBLIC :: ln_nea !: Remove observations near land 83 LOGICAL, PUBLIC :: ln_altbias !: Logical switch for altimeter bias 84 LOGICAL, PUBLIC :: ln_ignmis !: Logical switch for ignoring missing files 85 LOGICAL, PUBLIC :: ln_s_at_t !: Logical switch to compute model S at T observations 61 LOGICAL, PUBLIC :: ln_t3d !: Logical switch for temperature profiles 62 LOGICAL, PUBLIC :: ln_s3d !: Logical switch for salinity profiles 63 LOGICAL, PUBLIC :: ln_ena !: Logical switch for the ENACT data set 64 LOGICAL, PUBLIC :: ln_cor !: Logical switch for the Coriolis data set 65 LOGICAL, PUBLIC :: ln_profb !: Logical switch for profile feedback datafiles 66 LOGICAL, PUBLIC :: ln_sla !: Logical switch for sea level anomalies 67 LOGICAL, PUBLIC :: ln_sladt !: Logical switch for SLA from AVISO files 68 LOGICAL, PUBLIC :: ln_slafb !: Logical switch for SLA from feedback files 69 LOGICAL, PUBLIC :: ln_sst !: Logical switch for sea surface temperature 70 LOGICAL, PUBLIC :: ln_reysst !: Logical switch for Reynolds sea surface temperature 71 LOGICAL, PUBLIC :: ln_reysst_night !: Reynolds SST is a foundation SST 72 LOGICAL, PUBLIC :: ln_ghrsst !: Logical switch for GHRSST data 73 LOGICAL, PUBLIC :: ln_ghrsst_night !: GHRSST observations is a foundation SST 74 LOGICAL, PUBLIC :: ln_sstfb !: Logical switch for SST from feedback files 75 LOGICAL, PUBLIC :: ln_sstfb_night !: SST from feedback is a foundation SST 76 LOGICAL, PUBLIC :: ln_seaice !: Logical switch for sea ice concentration 77 LOGICAL, PUBLIC :: ln_vel3d !: Logical switch for velocity component (u,v) observations 78 LOGICAL, PUBLIC :: ln_velavcur !: Logical switch for raw daily averaged netCDF current meter vel. data 79 LOGICAL, PUBLIC :: ln_velhrcur !: Logical switch for raw high freq netCDF current meter vel. data 80 LOGICAL, PUBLIC :: ln_velavadcp !: Logical switch for raw daily averaged netCDF ADCP vel. data 81 LOGICAL, PUBLIC :: ln_velhradcp !: Logical switch for raw high freq netCDF ADCP vel. data 82 LOGICAL, PUBLIC :: ln_velfb !: Logical switch for velocities from feedback files 83 LOGICAL, PUBLIC :: ln_ssh !: Logical switch for sea surface height 84 LOGICAL, PUBLIC :: ln_sss !: Logical switch for sea surface salinity 85 LOGICAL, PUBLIC :: ln_nea !: Remove observations near land 86 LOGICAL, PUBLIC :: ln_altbias !: Logical switch for altimeter bias 87 LOGICAL, PUBLIC :: ln_ignmis !: Logical switch for ignoring missing files 88 LOGICAL, PUBLIC :: ln_s_at_t !: Logical switch to compute model S at T observations 86 89 87 90 REAL(KIND=dp), PUBLIC :: dobsini !: Observation window start date YYYYMMDD.HHMMSS … … 107 110 & ld_velav !: Velocity data is daily averaged 108 111 LOGICAL, DIMENSION(:), ALLOCATABLE :: & 109 & l d_sstnight !: SST observation corresponds to night mean112 & l_sstnight !: SST observation corresponds to night mean 110 113 111 114 !!---------------------------------------------------------------------- … … 159 162 NAMELIST/namobs/ln_ena, ln_cor, ln_profb, ln_t3d, ln_s3d, & 160 163 & ln_sla, ln_sladt, ln_slafb, & 161 & ln_ssh, ln_sst, ln_ss tfb, ln_sss, ln_nea,&164 & ln_ssh, ln_sst, ln_sss, ln_nea, & 162 165 & enactfiles, coriofiles, profbfiles, & 163 166 & slafilesact, slafilespas, slafbfiles, & … … 166 169 & dobsini, dobsend, n1dint, n2dint, & 167 170 & nmsshc, mdtcorr, mdtcutoff, & 168 & ln_reysst, ln_ghrsst, reysstname, reysstfmt, & 171 & ln_reysst, ln_reysst_night, & 172 & ln_ghrsst, ln_ghrsst_night, & 173 & ln_sstfb , ln_sstfb_night, & 174 & reysstname, reysstfmt, & 169 175 & ln_grid_search_lookup, & 170 176 & grid_search_file, grid_search_res, & … … 212 218 ln_sst = .FALSE. 213 219 ln_seaice = .FALSE. 214 ln_reysst = .FALSE. 215 ln_ghrsst = .FALSE. 220 ln_reysst = .FALSE. 221 ln_reysst_night = .FALSE. 222 ln_ghrsst = .FALSE. 223 ln_ghrsst_night = .FALSE. 224 ln_sstfb = .FALSE. 225 ln_sstfb_night = .FALSE. 216 226 ln_sss = .FALSE. 217 227 ln_profb = .FALSE. … … 220 230 ln_sladt = .TRUE. 221 231 ln_slafb = .FALSE. 222 ln_sstfb = .FALSE.223 232 ln_velavcur = .FALSE. 224 233 ln_velhrcur = .FALSE. … … 355 364 WRITE(numout,*) ' Logical switch for SST observations ln_sst = ', ln_sst 356 365 WRITE(numout,*) ' Logical switch for Reynolds observations ln_reysst = ', ln_reysst 366 WRITE(numout,*) ' Reynolds observations is a foundation SST ln_reysst_night = ', ln_reysst_night 357 367 WRITE(numout,*) ' Logical switch for GHRSST observations ln_ghrsst = ', ln_ghrsst 368 WRITE(numout,*) ' GHRSST observations is a foundation SST ln_ghrsst_night = ', ln_ghrsst_night 358 369 WRITE(numout,*) ' Logical switch for feedback SST data ln_sstfb = ', ln_sstfb 370 WRITE(numout,*) ' Feedback SST data is a foundation SST ln_ghrsst_night = ', ln_sstfb_night 359 371 WRITE(numout,*) ' Logical switch for SSS observations ln_sss = ', ln_sss 360 372 WRITE(numout,*) ' Logical switch for Sea Ice observations ln_seaice = ', ln_seaice … … 721 733 722 734 ! - Sea surface temperature 723 IF 735 IF( ln_sst ) THEN 724 736 725 737 ! Set the number of variables for sst to 1 … … 739 751 ALLOCATE(sstdata(nsstsets)) 740 752 ALLOCATE(sstdatqc(nsstsets)) 741 ALLOCATE(l d_sstnight(nsstsets))742 sstdata(:)%nsurf =0743 sstdatqc(:)%nsurf =0744 l d_sstnight(:)=.false.753 ALLOCATE(l_sstnight(nsstsets)) 754 sstdata(:)%nsurf = 0 755 sstdatqc(:)%nsurf = 0 756 l_sstnight(:) = .false. 745 757 746 758 nsstsets = 0 … … 750 762 nsstsets = nsstsets + 1 751 763 752 l d_sstnight(nsstsets) = .TRUE.764 l_sstnight(nsstsets) = ln_reysst_night 753 765 754 766 CALL obs_rea_sst_rey( reysstname, reysstfmt, sstdata(nsstsets), & … … 758 770 & ln_nea ) 759 771 760 ENDIF772 ENDIF 761 773 762 IF (ln_ghrsst) THEN774 IF (ln_ghrsst) THEN 763 775 764 776 nsstsets = nsstsets + 1 765 777 766 l d_sstnight(nsstsets) = .TRUE.778 l_sstnight(nsstsets) = ln_ghrsst_night 767 779 768 780 CALL obs_rea_sst( 1, sstdata(nsstsets), jnumsst, & … … 783 795 nsstsets = nsstsets + 1 784 796 785 l d_sstnight(nsstsets) = .TRUE.797 l_sstnight(nsstsets) = ln_sstfb_night 786 798 787 799 CALL obs_rea_sst( 0, sstdata(nsstsets), 1, & … … 1105 1117 & kstp, jpi, jpj, nit000, idaystp, & 1106 1118 & tsn(:,:,1,jp_tem), tmask(:,:,1), & 1107 & n2dint, l d_sstnight(jsstset) )1119 & n2dint, l_sstnight(jsstset) ) 1108 1120 END DO 1109 1121 ENDIF -
branches/2012/dev_r3342_MERCATOR7_SST/NEMOGCM/NEMO/OPA_SRC/OBS/obs_oper.F90
r3411 r3585 663 663 & psstn, & ! Model SST field 664 664 & psstmask ! Land-sea mask 665 LOGICAL, INTENT(IN) :: ld_nightav 665 666 666 667 !! * Local declarations … … 694 695 & igrdi, & 695 696 & igrdj 696 LOGICAL, INTENT(IN) :: ld_nightav697 697 698 698 !----------------------------------------------------------------------- … … 705 705 IF ( ld_nightav ) THEN 706 706 707 ! Initialize array for night mean 708 709 IF ( kt .EQ. 0 ) THEN 710 ALLOCATE ( icount_sstnight(kpi,kpj) ) 711 ALLOCATE ( imask_night(kpi,kpj) ) 712 ALLOCATE ( zintmp(kpi,kpj) ) 713 ALLOCATE ( zouttmp(kpi,kpj) ) 714 ALLOCATE ( zmeanday(kpi,kpj) ) 715 nday_qsr = -1 ! initialisation flag for nbc_dcy 716 ENDIF 717 718 ! Initialize daily mean for first timestep 719 idayend = MOD( kt - kit000 + 1, kdaystp ) 720 721 ! Added kt == 0 test to catch restart case 722 IF ( idayend == 1 .OR. kt == 0) THEN 723 IF (lwp) WRITE(numout,*) 'Reset sstdatqc%vdmean on time-step: ',kt 707 ! Initialize array for night mean 708 709 IF ( kt .EQ. 0 ) THEN 710 ALLOCATE ( icount_sstnight(kpi,kpj) ) 711 ALLOCATE ( imask_night(kpi,kpj) ) 712 ALLOCATE ( zintmp(kpi,kpj) ) 713 ALLOCATE ( zouttmp(kpi,kpj) ) 714 ALLOCATE ( zmeanday(kpi,kpj) ) 715 nday_qsr = -1 ! initialisation flag for nbc_dcy 716 ENDIF 717 718 ! Initialize daily mean for first timestep 719 idayend = MOD( kt - kit000 + 1, kdaystp ) 720 721 ! Added kt == 0 test to catch restart case 722 IF ( idayend == 1 .OR. kt == 0) THEN 723 IF (lwp) WRITE(numout,*) 'Reset sstdatqc%vdmean on time-step: ',kt 724 DO jj = 1, jpj 725 DO ji = 1, jpi 726 sstdatqc%vdmean(ji,jj) = 0.0 727 zmeanday(ji,jj) = 0.0 728 icount_sstnight(ji,jj) = 0 729 END DO 730 END DO 731 ENDIF 732 733 zintmp(:,:) = 0.0 734 zouttmp(:,:) = sbc_dcy( zintmp(:,:), .TRUE. ) 735 imask_night(:,:) = INT( zouttmp(:,:) ) 736 724 737 DO jj = 1, jpj 725 738 DO ji = 1, jpi 726 sstdatqc%vdmean(ji,jj) = 0.0 727 zmeanday(ji,jj) = 0.0 728 icount_sstnight(ji,jj) = 0 739 ! Increment the temperature field for computing night mean and counter 740 sstdatqc%vdmean(ji,jj) = sstdatqc%vdmean(ji,jj) & 741 & + psstn(ji,jj)*imask_night(ji,jj) 742 zmeanday(ji,jj) = zmeanday(ji,jj) + psstn(ji,jj) 743 icount_sstnight(ji,jj) = icount_sstnight(ji,jj) + imask_night(ji,jj) 729 744 END DO 730 745 END DO 731 ENDIF732 733 zintmp(:,:) = 0.0734 zouttmp(:,:) = sbc_dcy( zintmp(:,:), .TRUE. )735 imask_night(:,:) = INT( zouttmp(:,:) )736 737 DO jj = 1, jpj738 DO ji = 1, jpi739 ! Increment the temperature field for computing night mean and counter740 sstdatqc%vdmean(ji,jj) = sstdatqc%vdmean(ji,jj) &741 & + psstn(ji,jj)*imask_night(ji,jj)742 zmeanday(ji,jj) = zmeanday(ji,jj) + psstn(ji,jj)743 icount_sstnight(ji,jj) = icount_sstnight(ji,jj) + imask_night(ji,jj)744 END DO745 END DO746 746 747 ! Compute the daily mean at the end of day748 749 zdaystp = 1.0 / REAL( kdaystp )750 751 IF ( idayend == 0 ) THEN752 DO jj = 1, jpj753 DO ji = 1, jpi754 ! Test if "no night" point755 IF ( icount_sstnight(ji,jj) .NE. 0 ) THEN756 sstdatqc%vdmean(ji,jj) = sstdatqc%vdmean(ji,jj) &747 ! Compute the daily mean at the end of day 748 749 zdaystp = 1.0 / REAL( kdaystp ) 750 751 IF ( idayend == 0 ) THEN 752 DO jj = 1, jpj 753 DO ji = 1, jpi 754 ! Test if "no night" point 755 IF ( icount_sstnight(ji,jj) .NE. 0 ) THEN 756 sstdatqc%vdmean(ji,jj) = sstdatqc%vdmean(ji,jj) & 757 757 & / icount_sstnight(ji,jj) 758 ELSE 759 sstdatqc%vdmean(ji,jj) = zmeanday(ji,jj) * zdaystp 760 ENDIF 758 ELSE 759 sstdatqc%vdmean(ji,jj) = zmeanday(ji,jj) * zdaystp 760 ENDIF 761 END DO 761 762 END DO 762 END DO 763 ENDIF 764 765 ENDIF 763 ENDIF 764 765 ENDIF !ld_nightav 766 766 767 767 ! Get the data for interpolation
Note: See TracChangeset
for help on using the changeset viewer.