!-------------------------------------- LICENCE BEGIN ------------------------------------ !Environment Canada - Atmospheric Science and Technology License/Disclaimer, ! version 3; Last Modified: May 7, 2008. !This is free but copyrighted software; you can use/redistribute/modify it under the terms !of the Environment Canada - Atmospheric Science and Technology License/Disclaimer !version 3 or (at your option) any later version that should be found at: !http://collaboration.cmc.ec.gc.ca/science/rpn.comm/license.html ! !This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; !without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. !See the above mentioned License/Disclaimer for more details. !You should have received a copy of the License/Disclaimer along with this software; !if not, you can write to: EC-RPN COMM Group, 2121 TransCanada, suite 500, Dorval (Quebec), !CANADA, H9P 1J3; or send e-mail to service.rpn@ec.gc.ca !-------------------------------------- LICENCE END -------------------------------------- !SUBROUTINE SOBSAISW 1 #if defined (DOC) * ***s/r SOBSAISW * *Author : R. Sarrazin *CMC/AES February 2000 *Revision: * Sept 2000, R. Sarrazin, * - remove bitset 9 * P. KOCLAS *CMDA/SMC October 2000 * -ADD SATWIND FAMILY * R. Sarrazin, Nov 2006 * -add ES obs * ** Purpose: * Refuse elements which are too close to the surface. * *Arguments: * * none #endif IMPLICIT NONE *implicits #include "comlun.cdk"
#include "comdimo.cdk"
#include "comoabdy.cdk"
#include "comoahdr.cdk"
#include "comoba.cdk"
#include "commvohr.cdk"
#include "cvcord.cdk"
* INTEGER JPINEL PARAMETER(JPINEL=4) INTEGER J,JF,JOBS,JDATA,IOBS1,IOBS2 LOGICAL LLPRINT REAL*8 ZVAL,ZDIFF INTEGER ITYP,IDATA,IDATEND INTEGER ILEM,IBEGIN,ILAST INTEGER IKOUNTREJ(JPINEL),IKOUNTT INTEGER ILISTEL(JPINEL) DATA ILISTEL/11003,11004,12001,12192/ REAL*8 RLISTCRIT DATA RLISTCRIT/-50./ C C WRITE(NULOUT,* ) ' ' WRITE(NULOUT,* ) ' SUBROUTINE SOBSAISW ' WRITE(NULOUT,* ) ' ' WRITE(NULOUT,* ) '****************************************************' WRITE(NULOUT,222)'ELEMENTS ', ( ILISTEL(J),J=1,jpinel) WRITE(NULOUT,223)'REJECTION BOUNDARY(HPA) ', RLISTCRIT WRITE(NULOUT,* ) '****************************************************' WRITE(NULOUT,* ) ' ' LLPRINT = .FALSE. C C SET COUNTERS TO ZERO C DO J=1,JPINEL IKOUNTREJ(J)=0 END DO IKOUNTT=0 C C LOOP OVER OBSERVATION FILES C DO JF = 1,NFILES IF ( (CFAMTYP(JF) .EQ. 'AI' .OR. CFAMTYP(JF) .EQ. 'SW') .AND. & (NBEGINTYP(JF) .GT. 0) ) THEN IBEGIN=NBEGINTYP(JF) ILAST=NENDTYP(JF) IOBS1=MOBDATA(NCMOBS,NBEGINTYP(JF)) IOBS2=MOBDATA(NCMOBS,NENDTYP(JF)) WRITE(NULOUT,*)' FAMILY = ',CFAMTYP(JF) C C DO JOBS=IOBS1,IOBS2 C IDATA = MOBHDR(NCMRLN,JOBS) IDATEND = MOBHDR(NCMNLV,JOBS) + IDATA - 1 C C REJECT DATA TOO CLOSE TO THEDEL OROGRAPHY ,PUT TO C MODEL OROGRAPHY, DATA WHICH IS BELOW , BUT CLOSE TO THE SURFACE. C DO JDATA= IDATA, IDATEND IKOUNTT=IKOUNTT+1 ZVAL=ROBDATA8(NCMPPP,JDATA) ZDIFF= (ZVAL- GOMPSHR(1,JOBS) )/100. IF ( ZDIFF .GT. RLISTCRIT ) THEN ITYP=MOBDATA(NCMVNM,JDATA) DO J=1,JPINEL ILEM=ILISTEL(J) IF ( ITYP .EQ. ILEM ) THEN IF(LLPRINT) THEN WRITE(NULOUT,224) 'Reject OBS ' & ,jobs,ITYP,ROBDATA8(NCMPPP,JDATA),ZDIFF ENDIF MOBDATA(NCMASS,JDATA)=0 IKOUNTREJ(J)=IKOUNTREJ(J)+1 MOBDATA(NCMFLG,JDATA)= & ibset( MOBDATA(NCMFLG,JDATA) , 18 ) ENDIF END DO ENDIF END DO C END DO C C WRITE(NULOUT,* ) ' ' WRITE(NULOUT,* ) & '*****************************************************************' WRITE(NULOUT,222 )'ELEMENTS ', ( ILISTEL(J),J=1,JPINEL) WRITE(NULOUT,222)'REJECTED ',(IKOUNTREJ(J),J=1,JPINEL) WRITE(NULOUT,* ) & '*****************************************************************' WRITE(NULOUT,* ) ' ' 222 FORMAT(2x,a29,5(2x,i5)) 223 FORMAT(2x,a29,5(2x,f5.0)) 224 FORMAT(2x,a13,2x,I6,2X,I5,2(2x,f9.2)) C ENDIF END DO C IKOUNTT=0 DO JDATA=1,NDATA IF ( MOBDATA(NCMASS,JDATA) .EQ. 1) IKOUNTT=IKOUNTT+1 END DO WRITE(NULOUT & ,'(1X," NUMBER OF DATA ASSIMILATED BY 3D-VAR AFTER ADJUSTMENTS:",i10)')IKOUNTT WRITE(NULOUT,* ) ' ' RETURN END