- Timestamp:
- 2012-11-16T18:14:12+01:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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.