New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 5704 for branches/2015/dev_r5072_UKMO2_OBS_simplification/NEMOGCM/NEMO/OPA_SRC/OBS/obs_write.F90 – NEMO

Ignore:
Timestamp:
2015-08-21T15:00:38+02:00 (9 years ago)
Author:
mattmartin
Message:

Updated simplified obs operator after testing sea-ice concentration and velocity data types.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5072_UKMO2_OBS_simplification/NEMOGCM/NEMO/OPA_SRC/OBS/obs_write.F90

    r5682 r5704  
    2727   USE obs_conv             ! Conversion between units 
    2828   USE obs_const 
    29    USE obs_rot_vel          ! Rotation of velocities 
    3029   USE obs_mpp              ! MPP support routines for observation diagnostics 
    3130   USE lib_mpp        ! MPP routines 
     
    5554CONTAINS 
    5655 
    57    SUBROUTINE obs_wri_prof( profdata, k2dint, padd, pext ) 
     56   SUBROUTINE obs_wri_prof( profdata, padd, pext ) 
    5857      !!----------------------------------------------------------------------- 
    5958      !! 
     
    7877      !! * Arguments 
    7978      TYPE(obs_prof), INTENT(INOUT) :: profdata      ! Full set of profile data 
    80       INTEGER, INTENT(IN)        :: k2dint           ! Horizontal interpolation method 
    8179      TYPE(obswriinfo), OPTIONAL :: padd             ! Additional info for each variable 
    8280      TYPE(obswriinfo), OPTIONAL :: pext             ! Extra info 
     
    9694      INTEGER :: iext 
    9795      REAL(wp) :: zpres 
    98       REAL(wp), DIMENSION(:), ALLOCATABLE :: & 
    99          & zu, & 
    100          & zv 
    10196 
    10297      IF ( PRESENT( padd ) ) THEN 
     
    156151 
    157152         clfiletype='velfb' 
    158          CALL alloc_obfbdata( fbdata, 2, profdata%nprof, ilevel, 2, 0, .TRUE. ) 
     153         CALL alloc_obfbdata( fbdata, 2, profdata%nprof, ilevel, 1, 0, .TRUE. ) 
    159154         fbdata%cname(1)      = profdata%cvars(1) 
    160155         fbdata%cname(2)      = profdata%cvars(2) 
     
    172167         fbdata%caddunit(1,1) = 'm/s' 
    173168         fbdata%caddunit(1,2) = 'm/s' 
    174          fbdata%caddname(2)   = 'HxG' 
    175          fbdata%caddlong(2,1) = 'Model interpolated zonal velocity (model grid)' 
    176          fbdata%caddlong(2,2) = 'Model interpolated meridional velocity (model grid)' 
    177          fbdata%caddunit(2,1) = 'm/s' 
    178          fbdata%caddunit(2,2) = 'm/s'  
    179169         fbdata%cgrid(1)      = 'U'  
    180170         fbdata%cgrid(2)      = 'V' 
    181171         DO ja = 1, iadd 
    182             fbdata%caddname(2+ja) = padd%cdname(ja) 
    183             fbdata%caddlong(2+ja,1) = padd%cdlong(ja,1) 
    184             fbdata%caddunit(2+ja,1) = padd%cdunit(ja,1) 
    185          END DO 
    186          ALLOCATE( & 
    187             & zu(profdata%nvprot(1)), & 
    188             & zv(profdata%nvprot(2))  & 
    189             & ) 
    190          CALL obs_rotvel( profdata, k2dint, zu, zv ) 
     172            fbdata%caddname(1+ja) = padd%cdname(ja) 
     173            fbdata%caddlong(1+ja,1) = padd%cdlong(ja,1) 
     174            fbdata%caddunit(1+ja,1) = padd%cdunit(ja,1) 
     175         END DO 
    191176 
    192177      END SELECT 
     
    203188      ENDIF 
    204189 
    205       ! Transform obs_prof data structure into obfbdata structure 
     190      ! Transform obs_prof data structure into obfb data structure 
    206191      fbdata%cdjuldref = '19500101000000' 
    207192      DO jo = 1, profdata%nprof 
     
    246231            DO jk = profdata%npvsta(jo,jvar), profdata%npvend(jo,jvar) 
    247232               ik = profdata%var(jvar)%nvlidx(jk) 
    248                IF ( TRIM(profdata%cvars(1)) == 'POTM' ) THEN 
    249                   fbdata%padd(ik,jo,1,jvar) = profdata%var(jvar)%vmod(jk) 
    250                ELSE IF ( TRIM(profdata%cvars(1)) == 'UVEL' ) THEN 
    251                   IF ( jvar == 1 ) THEN 
    252                      fbdata%padd(ik,jo,1,jvar) = zu(jk) 
    253                   ELSE 
    254                      fbdata%padd(ik,jo,1,jvar) = zv(jk) 
    255                   ENDIF 
    256                   fbdata%padd(ik,jo,2,jvar) = profdata%var(jvar)%vmod(jk) 
    257                ENDIF 
     233               fbdata%padd(ik,jo,1,jvar) = profdata%var(jvar)%vmod(jk) 
    258234               fbdata%pob(ik,jo,jvar)    = profdata%var(jvar)%vobs(jk) 
    259235               fbdata%pdep(ik,jo)        = profdata%var(jvar)%vdep(jk) 
     
    277253                     & profdata%var(jvar)%vext(jk,pext%ipoint(je)) 
    278254               END DO 
    279                IF ( jvar == 1 ) THEN 
     255               IF ( ( jvar == 1 ) .AND. & 
     256                  & ( TRIM(profdata%cvars(1)) == 'POTM' ) ) THEN 
    280257                  fbdata%pext(ik,jo,1) = profdata%var(jvar)%vext(jk,1) 
    281258               ENDIF  
     
    365342      CALL init_obfbdata( fbdata ) 
    366343 
    367       CALL alloc_obfbdata( fbdata, 1, surfdata%nsurf, 1, & 
    368          &                 2 + iadd, 1 + iext, .TRUE. ) 
    369  
    370344      SELECT CASE ( TRIM(surfdata%cvars(1)) ) 
    371345      CASE('SLA') 
     346 
     347         CALL alloc_obfbdata( fbdata, 1, surfdata%nsurf, 1, & 
     348            &                 2 + iadd, 1 + iext, .TRUE. ) 
    372349 
    373350         clfiletype = 'slafb' 
     
    397374      CASE('SST') 
    398375 
     376         CALL alloc_obfbdata( fbdata, 1, surfdata%nsurf, 1, & 
     377            &                 1 + iadd, iext, .TRUE. ) 
     378 
    399379         clfiletype = 'sstfb' 
    400380         fbdata%cname(1)      = surfdata%cvars(1) 
     
    415395         END DO 
    416396 
    417       CASE('SEAICE') 
     397      CASE('ICECON') 
     398 
     399         CALL alloc_obfbdata( fbdata, 1, surfdata%nsurf, 1, & 
     400            &                 1 + iadd, iext, .TRUE. ) 
    418401 
    419402         clfiletype = 'sicfb' 
     
    448431      ENDIF 
    449432 
    450       ! Transform obs_prof data structure into obfbdata structure 
     433      ! Transform surf data structure into obfbdata structure 
    451434      fbdata%cdjuldref = '19500101000000' 
    452435      DO jo = 1, surfdata%nsurf 
     
    549532      REAL(wp) :: zsumx2 
    550533      REAL(wp) :: zomb 
     534       
    551535 
    552536      IF (lwp) THEN 
Note: See TracChangeset for help on using the changeset viewer.