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 5106 – NEMO

Changeset 5106


Ignore:
Timestamp:
2015-02-25T17:12:01+01:00 (9 years ago)
Author:
jwhile
Message:

Minor fixes due to review

Location:
branches/2014/dev_r4650_UKMO14.4_OBS_GENERAL_VINTERP/NEMOGCM/NEMO/OPA_SRC/OBS
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_r4650_UKMO14.4_OBS_GENERAL_VINTERP/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90

    r4746 r5106  
    10051005         & gdept_1d,       &              
    10061006#if defined key_vvl  
    1007          & gdept_n,       &  
     1007         & gdept_n,       & 
    10081008#else  
    1009          & gdept_1d,         &  
     1009         & gdept_1d,      & 
    10101010#endif                                         
    10111011         & tmask, umask, vmask                             
     
    10711071                     &              kstp, jpi, jpj, jpk, nit000, idaystp,   &  
    10721072                     &              tsn(:,:,:,jp_tem), tsn(:,:,:,jp_sal),   &  
    1073                      &              gdept_1d, tmask, n1dint, n2dint,         &  
     1073                     &              gdept_1d, tmask, n1dint, n2dint,        &  
    10741074                     &              kdailyavtypes = endailyavtypes )  
    10751075               ELSE  
  • branches/2014/dev_r4650_UKMO14.4_OBS_GENERAL_VINTERP/NEMOGCM/NEMO/OPA_SRC/OBS/obs_oper.F90

    r4746 r5106  
    525525      USE dom_oce,  ONLY : &  
    526526#if defined key_vvl   
    527       gdepw_n  
     527      &   gdepw_n  
    528528#else  
    529       gdepw_0  
     529      &   gdepw_0  
    530530#endif  
    531531        
     
    551551      INTEGER, DIMENSION(imaxavtypes), OPTIONAL :: &  
    552552         & kdailyavtypes   ! Types for daily averages  
     553       
    553554      !! * Local declarations  
    554555      INTEGER ::   ji  
     
    566567      INTEGER, DIMENSION(imaxavtypes) :: &  
    567568         & idailyavtypes  
     569      INTEGER, DIMENSION(:,:,:), ALLOCATABLE :: &  
     570         & igrdi, &  
     571         & igrdj  
     572      INTEGER :: &  
     573         & inum_obs 
     574      INTEGER, ALLOCATABLE, DIMENSION(:) :: iv_indic     
    568575      REAL(KIND=wp) :: zlam  
    569576      REAL(KIND=wp) :: zphi  
     
    586593      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: &  
    587594         & zglam, &  
    588          & zgphi  
    589       INTEGER, DIMENSION(:,:,:), ALLOCATABLE :: &  
    590          & igrdi, &  
    591          & igrdj  
    592       INTEGER :: &  
    593          & inum_obs     
     595         & zgphi     
    594596      REAL(KIND=wp), DIMENSION(1) :: zmsk_1        
    595597      REAL(KIND=wp), DIMENSION(:,:,:), ALLOCATABLE :: interp_corner        
    596       INTEGER, ALLOCATABLE, DIMENSION(:) ::           v_indic     
    597598  
    598599      !------------------------------------------------------------------------  
     
    658659      ! Get the data for interpolation  
    659660      ALLOCATE( &  
    660       & igrdi(2,2,ipro),      &  
    661       & igrdj(2,2,ipro),      &  
    662       & zglam(2,2,ipro),      &  
    663       & zgphi(2,2,ipro),      &  
    664       & zmask(2,2,kpk,ipro),  &  
    665       & zintt(2,2,kpk,ipro),  &  
    666       & zints(2,2,kpk,ipro),  &  
    667       & zgdept(2,2,kpk,ipro), &  
    668       & zgdepw(2,2,kpk,ipro)  &  
    669       & )  
     661         & igrdi(2,2,ipro),      &  
     662         & igrdj(2,2,ipro),      &  
     663         & zglam(2,2,ipro),      &  
     664         & zgphi(2,2,ipro),      &  
     665         & zmask(2,2,kpk,ipro),  &  
     666         & zintt(2,2,kpk,ipro),  &  
     667         & zints(2,2,kpk,ipro),  &  
     668         & zgdept(2,2,kpk,ipro), &  
     669         & zgdepw(2,2,kpk,ipro)  &  
     670         & )  
    670671  
    671672      DO jobs = prodatqc%nprofup + 1, prodatqc%nprofup + ipro  
     
    695696  
    696697         ALLOCATE( &  
    697          & zinmt(2,2,kpk,ipro),  &  
    698          & zinms(2,2,kpk,ipro)   &  
    699          & )  
     698            & zinmt(2,2,kpk,ipro),  &  
     699            & zinms(2,2,kpk,ipro)   &  
     700            & )  
    700701  
    701702         CALL obs_int_comm_3d( 2, 2, ipro, kpk, igrdi, igrdj, &  
    702          &                  prodatqc%vdmean(:,:,:,1), zinmt )  
     703            &                  prodatqc%vdmean(:,:,:,1), zinmt )  
    703704         CALL obs_int_comm_3d( 2, 2, ipro, kpk, igrdi, igrdj, &  
    704          &                  prodatqc%vdmean(:,:,:,2), zinms )  
     705            &                  prodatqc%vdmean(:,:,:,2), zinms )  
    705706  
    706707      ENDIF  
     
    740741  
    741742         IF ( ( prodatqc%npvend(jobs,1) > 0 ) .OR. &  
    742          & ( prodatqc%npvend(jobs,2) > 0 ) ) THEN  
     743            & ( prodatqc%npvend(jobs,2) > 0 ) ) THEN  
    743744  
    744745            CALL obs_int_h2d_init( 1, 1, k2dint, zlam, zphi,     &  
    745             &                   zglam(:,:,iobs), zgphi(:,:,iobs), &  
    746             &                   zmask(:,:,1,iobs), zweig, zmsk_1 )  
     746               &                   zglam(:,:,iobs), zgphi(:,:,iobs), &  
     747               &                   zmask(:,:,1,iobs), zweig, zmsk_1 )  
    747748  
    748749         ENDIF  
     
    770771                     iend = prodatqc%npvend(jobs,1)  
    771772                     inum_obs = iend - ista + 1  
    772                      ALLOCATE(interp_corner(2,2,inum_obs),v_indic(inum_obs))  
     773                     ALLOCATE(interp_corner(2,2,inum_obs),iv_indic(inum_obs))  
    773774       
    774775                     DO iin=1,2  
     
    779780                           IF ( k1dint == 1 ) THEN  
    780781                              CALL obs_int_z1d_spl( kpk, &  
    781                               &     zinmt(iin,ijn,:,jobs), &  
    782                               &     zobs2k, zgdept(iin,ijn,:,jobs), &  
    783                               &     zmask(iin,ijn,:,jobs))  
     782                                 &     zinmt(iin,ijn,:,jobs), &  
     783                                 &     zobs2k, zgdept(iin,ijn,:,jobs), &  
     784                                 &     zmask(iin,ijn,:,jobs))  
    784785                           ENDIF  
    785786        
    786787                           CALL obs_level_search(kpk, &  
    787                            &    zgdept(iin,ijn,:,jobs), &  
    788                            &    inum_obs, prodatqc%var(1)%vdep(ista:iend), &  
    789                            &    v_indic)  
    790                            CALL obs_int_z1d(kpk, v_indic, k1dint, inum_obs, &  
    791                            &    prodatqc%var(1)%vdep(ista:iend), &  
    792                            &    zinmt(iin,ijn,:,jobs), &  
    793                            &    zobs2k, interp_corner(iin,ijn,:), &  
    794                            &    zgdept(iin,ijn,:,jobs), &  
    795                            &    zmask(iin,ijn,:,jobs))  
     788                              &    zgdept(iin,ijn,:,jobs), &  
     789                              &    inum_obs, prodatqc%var(1)%vdep(ista:iend), &  
     790                              &    iv_indic)  
     791                           CALL obs_int_z1d(kpk, iv_indic, k1dint, inum_obs, &  
     792                              &    prodatqc%var(1)%vdep(ista:iend), &  
     793                              &    zinmt(iin,ijn,:,jobs), &  
     794                              &    zobs2k, interp_corner(iin,ijn,:), &  
     795                              &    zgdept(iin,ijn,:,jobs), &  
     796                              &    zmask(iin,ijn,:,jobs))  
    796797        
    797798                        ENDDO  
     
    802803                 
    803804                     CALL ctl_stop( ' A nonzero' //     &  
    804                      &           ' number of profile T BUOY data should' // &  
    805                      &           ' only occur at the end of a given day' )  
     805                        &           ' number of profile T BUOY data should' // &  
     806                        &           ' only occur at the end of a given day' )  
    806807     
    807808                  ENDIF  
     
    815816                  iend = prodatqc%npvend(jobs,1)  
    816817                  inum_obs = iend - ista + 1  
    817                   ALLOCATE(interp_corner(2,2,inum_obs), v_indic(inum_obs))  
     818                  ALLOCATE(interp_corner(2,2,inum_obs), iv_indic(inum_obs))  
    818819                  DO iin=1,2   
    819820                     DO ijn=1,2  
     
    822823                        IF ( k1dint == 1 ) THEN  
    823824                           CALL obs_int_z1d_spl( kpk, &  
    824                            &    zintt(iin,ijn,:,jobs),&  
    825                            &    zobs2k, zgdept(iin,ijn,:,jobs), &  
    826                            &    zmask(iin,ijn,:,jobs))  
     825                              &    zintt(iin,ijn,:,jobs),&  
     826                              &    zobs2k, zgdept(iin,ijn,:,jobs), &  
     827                              &    zmask(iin,ijn,:,jobs))  
    827828   
    828829                        ENDIF  
    829830        
    830831                        CALL obs_level_search(kpk, &  
    831                          &        zgdept(iin,ijn,:,jobs),&  
    832                          &        inum_obs, prodatqc%var(1)%vdep(ista:iend), &  
    833                          &         v_indic)  
    834                         CALL obs_int_z1d(kpk, v_indic, k1dint, inum_obs,     &  
    835                          &          prodatqc%var(1)%vdep(ista:iend),     &  
    836                          &          zintt(iin,ijn,:,jobs),            &  
    837                          &          zobs2k,interp_corner(iin,ijn,:), &  
    838                          &          zgdept(iin,ijn,:,jobs),         &  
    839                          &          zmask(iin,ijn,:,jobs) )       
     832                            &        zgdept(iin,ijn,:,jobs),&  
     833                            &        inum_obs, prodatqc%var(1)%vdep(ista:iend), &  
     834                            &         iv_indic)  
     835                        CALL obs_int_z1d(kpk, iv_indic, k1dint, inum_obs,     &  
     836                            &          prodatqc%var(1)%vdep(ista:iend),     &  
     837                            &          zintt(iin,ijn,:,jobs),            &  
     838                            &          zobs2k,interp_corner(iin,ijn,:), &  
     839                            &          zgdept(iin,ijn,:,jobs),         &  
     840                            &          zmask(iin,ijn,:,jobs) )       
    840841          
    841842                     ENDDO  
     
    863864                             
    864865                              l_zweig(iin,ijn,1) = &   
    865                            &  zweig(iin,ijn,1) *  &  
    866                            & MAX( SIGN(1._wp,(zgdepw(iin,ijn,ik,jobs) ) &  
    867                            &  - prodatqc%var(1)%vdep(iend)),0._wp)  
     866                                 & zweig(iin,ijn,1) * &  
     867                                 & MAX( SIGN(1._wp,(zgdepw(iin,ijn,ik,jobs) ) &  
     868                                 &  - prodatqc%var(1)%vdep(iend)),0._wp)  
    868869                             
    869870                              EXIT depth_loop1  
     
    880881  
    881882  
    882                DEALLOCATE(interp_corner,v_indic)  
     883               DEALLOCATE(interp_corner,iv_indic)  
    883884           
    884885            ENDIF  
     
    901902                     iend = prodatqc%npvend(jobs,2)  
    902903                     inum_obs = iend - ista + 1  
    903                      ALLOCATE(interp_corner(2,2,inum_obs),v_indic(inum_obs))  
     904                     ALLOCATE(interp_corner(2,2,inum_obs),iv_indic(inum_obs))  
    904905       
    905906                     DO iin=1,2  
     
    910911                           IF ( k1dint == 1 ) THEN  
    911912                              CALL obs_int_z1d_spl( kpk, &  
    912                               &     zinms(iin,ijn,:,jobs), &  
    913                               &     zobs2k, zgdept(iin,ijn,:,jobs), &  
    914                               &     zmask(iin,ijn,:,jobs))  
     913                                 &     zinms(iin,ijn,:,jobs), &  
     914                                 &     zobs2k, zgdept(iin,ijn,:,jobs), &  
     915                                 &     zmask(iin,ijn,:,jobs))  
    915916                           ENDIF  
    916917        
    917918                           CALL obs_level_search(kpk, &  
    918                            &    zgdept(iin,ijn,:,jobs), &  
    919                            &    inum_obs, prodatqc%var(2)%vdep(ista:iend), &  
    920                            &    v_indic)  
    921                            CALL obs_int_z1d(kpk, v_indic, k1dint, inum_obs, &  
    922                            &    prodatqc%var(2)%vdep(ista:iend), &  
    923                            &    zinms(iin,ijn,:,jobs), &  
    924                            &    zobs2k, interp_corner(iin,ijn,:), &  
    925                            &    zgdept(iin,ijn,:,jobs), &  
    926                            &    zmask(iin,ijn,:,jobs))  
     919                              &    zgdept(iin,ijn,:,jobs), &  
     920                              &    inum_obs, prodatqc%var(2)%vdep(ista:iend), &  
     921                              &    iv_indic)  
     922                           CALL obs_int_z1d(kpk, iv_indic, k1dint, inum_obs, &  
     923                              &    prodatqc%var(2)%vdep(ista:iend), &  
     924                              &    zinms(iin,ijn,:,jobs), &  
     925                              &    zobs2k, interp_corner(iin,ijn,:), &  
     926                              &    zgdept(iin,ijn,:,jobs), &  
     927                              &    zmask(iin,ijn,:,jobs))  
    927928        
    928929                        ENDDO  
     
    933934                 
    934935                     CALL ctl_stop( ' A nonzero' //     &  
    935                      &           ' number of profile T BUOY data should' // &  
    936                      &           ' only occur at the end of a given day' )  
     936                        &           ' number of profile T BUOY data should' // &  
     937                        &           ' only occur at the end of a given day' )  
    937938     
    938939                  ENDIF  
     
    946947                  iend = prodatqc%npvend(jobs,2)  
    947948                  inum_obs = iend - ista + 1  
    948                   ALLOCATE(interp_corner(2,2,inum_obs), v_indic(inum_obs))  
     949                  ALLOCATE(interp_corner(2,2,inum_obs), iv_indic(inum_obs))  
    949950                    
    950951                  DO iin=1,2      
     
    954955                        IF ( k1dint == 1 ) THEN  
    955956                           CALL obs_int_z1d_spl( kpk, &  
    956                            &    zints(iin,ijn,:,jobs),&  
    957                            &    zobs2k, zgdept(iin,ijn,:,jobs), &  
    958                            &    zmask(iin,ijn,:,jobs))  
     957                              &    zints(iin,ijn,:,jobs),&  
     958                              &    zobs2k, zgdept(iin,ijn,:,jobs), &  
     959                              &    zmask(iin,ijn,:,jobs))  
    959960   
    960961                        ENDIF  
    961962        
    962963                        CALL obs_level_search(kpk, &  
    963                          &        zgdept(iin,ijn,:,jobs),&  
    964                          &        inum_obs, prodatqc%var(2)%vdep(ista:iend), &  
    965                          &         v_indic)  
    966                         CALL obs_int_z1d(kpk, v_indic, k1dint, inum_obs,     &  
    967                          &          prodatqc%var(2)%vdep(ista:iend),     &  
    968                          &          zints(iin,ijn,:,jobs),            &  
    969                          &          zobs2k,interp_corner(iin,ijn,:), &  
    970                          &          zgdept(iin,ijn,:,jobs),         &  
    971                          &          zmask(iin,ijn,:,jobs) )       
     964                           &        zgdept(iin,ijn,:,jobs),&  
     965                           &        inum_obs, prodatqc%var(2)%vdep(ista:iend), &  
     966                           &         iv_indic)  
     967                        CALL obs_int_z1d(kpk, iv_indic, k1dint, inum_obs,  &  
     968                           &          prodatqc%var(2)%vdep(ista:iend),     &  
     969                           &          zints(iin,ijn,:,jobs),               &  
     970                           &          zobs2k,interp_corner(iin,ijn,:),    &  
     971                           &          zgdept(iin,ijn,:,jobs),              &  
     972                           &          zmask(iin,ijn,:,jobs) )       
    972973          
    973974                     ENDDO  
     
    995996                             
    996997                              l_zweig(iin,ijn,1) = &   
    997                            &  zweig(iin,ijn,1) *  &  
    998                            &  MAX( SIGN(1._wp,(zgdepw(iin,ijn,ik,jobs) ) &  
    999                            &  - prodatqc%var(2)%vdep(iend)),0._wp)  
     998                                 &  zweig(iin,ijn,1) * &  
     999                                 &  MAX( SIGN(1._wp,(zgdepw(iin,ijn,ik,jobs) ) &  
     1000                                 &  - prodatqc%var(2)%vdep(iend)),0._wp)  
    10001001                             
    10011002                              EXIT depth_loop2  
     
    10121013  
    10131014  
    1014                DEALLOCATE(interp_corner,v_indic)  
     1015               DEALLOCATE(interp_corner,iv_indic)  
    10151016           
    10161017            ENDIF  
  • branches/2014/dev_r4650_UKMO14.4_OBS_GENERAL_VINTERP/NEMOGCM/NEMO/OPA_SRC/OBS/obs_prep.F90

    r4817 r5106  
    18291829         ! Check if next to land  
    18301830         IF (  ANY( zgmsk(1:2,1:2,1,jobs) == 0.0_wp ) ) THEN  
    1831            ll_next_to_land=.TRUE.  
     1831            ll_next_to_land=.TRUE.  
    18321832         ELSE  
    1833            ll_next_to_land=.FALSE.  
     1833            ll_next_to_land=.FALSE.  
    18341834         ENDIF  
    18351835          
     
    18791879               ! Or if it is within the mask  
    18801880               IF ( ALL( fsdepw(iig-1:iig+1,ijg-1:ijg+1,kpk) < pobsdep(jobsp) ) &  
    1881                &     .OR. &  
    1882                &  ( SUM( zgmsk(1:2,1:2,kobsk(jobsp)-1:kobsk(jobsp),jobs) ) &  
    1883                &  == 0.0_wp) ) THEN  
     1881                  &     .OR. &  
     1882                  &  ( SUM( zgmsk(1:2,1:2,kobsk(jobsp)-1:kobsk(jobsp),jobs) ) &  
     1883                  &  == 0.0_wp) ) THEN  
    18841884                  kobsqc(jobsp) = kobsqc(jobsp) + 12  
    18851885                  klanobs = klanobs + 1  
Note: See TracChangeset for help on using the changeset viewer.