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 5979 for branches – NEMO

Changeset 5979 for branches


Ignore:
Timestamp:
2015-12-02T14:59:21+01:00 (8 years ago)
Author:
timgraham
Message:

Bug fixes following last merge

Location:
branches/2015/dev_MetOffice_merge_2015/NEMOGCM/NEMO/OPA_SRC/OBS
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_MetOffice_merge_2015/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90

    r5963 r5979  
    10811081                     &              kstp, jpi, jpj, jpk, nit000, idaystp,   &  
    10821082                     &              tsn(:,:,:,jp_tem), tsn(:,:,:,jp_sal),   &  
    1083                      &              fsdept(:,:,:), tmask, n1dint, n2dint,   &  
     1083                     &              fsdept(:,:,:), fsdepw(:,:,:),           & 
     1084                     &              tmask, n1dint, n2dint,   &  
    10841085                     &              kdailyavtypes = endailyavtypes )  
    10851086               ELSE  
     
    10871088                     &              kstp, jpi, jpj, jpk, nit000, idaystp,   &  
    10881089                     &              tsn(:,:,:,jp_tem), tsn(:,:,:,jp_sal),   &  
    1089                      &              fsdept(:,:,:), tmask, n1dint, n2dint )  
     1090                     &              fsdept(:,:,:), fsdepw(:,:,:),           & 
     1091                     &              tmask, n1dint, n2dint )  
    10901092               ENDIF  
    10911093            ENDIF 
  • branches/2015/dev_MetOffice_merge_2015/NEMOGCM/NEMO/OPA_SRC/OBS/obs_oper.F90

    r5963 r5979  
    331331            zobsk(:) = obfillflt 
    332332 
    333        IF ( ANY (idailyavtypes(:) == prodatqc%ntyp(jobs)) ) THEN 
     333         IF ( ANY (idailyavtypes(:) == prodatqc%ntyp(jobs)) ) THEN 
    334334 
    335335               IF ( idayend == 0 )  THEN 
     
    464464 
    465465   SUBROUTINE obs_pro_sco_opt( prodatqc, kt, kpi, kpj, kpk, kit000, kdaystp, &  
    466       &                    ptn, psn, pgdept, ptmask, k1dint, k2dint, &  
     466      &                    ptn, psn, pgdept, pgdepw, ptmask, k1dint, k2dint, &  
    467467      &                    kdailyavtypes )  
    468468      !!-----------------------------------------------------------------------  
     
    548548         & ptmask       ! Land-sea mask  
    549549      REAL(KIND=wp), INTENT(IN), DIMENSION(kpi,jpj,kpk) :: &  
    550          & pgdept       ! Model array of depth levels  
     550         & pgdept       ! Model array of depth T levels  
     551         & pgdepw       ! Model array of depth W levels  
    551552      INTEGER, DIMENSION(imaxavtypes), OPTIONAL :: &  
    552553         & kdailyavtypes   ! Types for daily averages  
     
    681682         igrdj(2,2,iobs) = prodatqc%mj(jobs,1)  
    682683      END DO  
     684      
     685      ! Initialise depth arrays 
     686      zgdept = 0.0 
     687      zgdepw = 0.0 
    683688  
    684689      CALL obs_int_comm_2d( 2, 2, ipro, igrdi, igrdj, glamt, zglam )  
     
    687692      CALL obs_int_comm_3d( 2, 2, ipro, kpk, igrdi, igrdj, ptn,   zintt )  
    688693      CALL obs_int_comm_3d( 2, 2, ipro, kpk, igrdi, igrdj, psn,   zints )  
    689       CALL obs_int_comm_3d( 2, 2, ipro, kpk, igrdi, igrdj, fsdept(:,:,:), &  
     694      CALL obs_int_comm_3d( 2, 2, ipro, kpk, igrdi, igrdj, pgdept(:,:,:), &  
    690695        &                     zgdept )  
    691       CALL obs_int_comm_3d( 2, 2, ipro, kpk, igrdi, igrdj, fsdepw(:,:,:), &  
     696      CALL obs_int_comm_3d( 2, 2, ipro, kpk, igrdi, igrdj, pgdepw(:,:,:), &  
    692697        &                     zgdepw )  
    693698  
     
    780785                           IF ( k1dint == 1 ) THEN  
    781786                              CALL obs_int_z1d_spl( kpk, &  
    782                                  &     zinmt(iin,ijn,:,jobs), &  
    783                                  &     zobs2k, zgdept(iin,ijn,:,jobs), &  
    784                                  &     zmask(iin,ijn,:,jobs))  
     787                                 &     zinmt(iin,ijn,:,iobs), &  
     788                                 &     zobs2k, zgdept(iin,ijn,:,iobs), &  
     789                                 &     zmask(iin,ijn,:,iobs))  
    785790                           ENDIF  
    786791        
    787792                           CALL obs_level_search(kpk, &  
    788                               &    zgdept(iin,ijn,:,jobs), &  
     793                              &    zgdept(iin,ijn,:,iobs), &  
    789794                              &    inum_obs, prodatqc%var(1)%vdep(ista:iend), &  
    790795                              &    iv_indic)  
    791796                           CALL obs_int_z1d(kpk, iv_indic, k1dint, inum_obs, &  
    792797                              &    prodatqc%var(1)%vdep(ista:iend), &  
    793                               &    zinmt(iin,ijn,:,jobs), &  
     798                              &    zinmt(iin,ijn,:,iobs), &  
    794799                              &    zobs2k, interp_corner(iin,ijn,:), &  
    795                               &    zgdept(iin,ijn,:,jobs), &  
    796                               &    zmask(iin,ijn,:,jobs))  
     800                              &    zgdept(iin,ijn,:,iobs), &  
     801                              &    zmask(iin,ijn,:,iobs))  
    797802        
    798803                        ENDDO  
     
    823828                        IF ( k1dint == 1 ) THEN  
    824829                           CALL obs_int_z1d_spl( kpk, &  
    825                               &    zintt(iin,ijn,:,jobs),&  
    826                               &    zobs2k, zgdept(iin,ijn,:,jobs), &  
    827                               &    zmask(iin,ijn,:,jobs))  
     830                              &    zintt(iin,ijn,:,iobs),&  
     831                              &    zobs2k, zgdept(iin,ijn,:,iobs), &  
     832                              &    zmask(iin,ijn,:,iobs))  
    828833   
    829834                        ENDIF  
    830835        
    831836                        CALL obs_level_search(kpk, &  
    832                             &        zgdept(iin,ijn,:,jobs),&  
     837                            &        zgdept(iin,ijn,:,iobs),&  
    833838                            &        inum_obs, prodatqc%var(1)%vdep(ista:iend), &  
    834839                            &         iv_indic)  
    835840                        CALL obs_int_z1d(kpk, iv_indic, k1dint, inum_obs,     &  
    836841                            &          prodatqc%var(1)%vdep(ista:iend),     &  
    837                             &          zintt(iin,ijn,:,jobs),            &  
     842                            &          zintt(iin,ijn,:,iobs),            &  
    838843                            &          zobs2k,interp_corner(iin,ijn,:), &  
    839                             &          zgdept(iin,ijn,:,jobs),         &  
    840                             &          zmask(iin,ijn,:,jobs) )       
     844                            &          zgdept(iin,ijn,:,iobs),         &  
     845                            &          zmask(iin,ijn,:,iobs) )       
    841846          
    842847                     ENDDO  
     
    851856               DO ikn=1,inum_obs  
    852857                  iend=ista+ikn-1  
    853     
     858 
     859                  l_zweig(:,:,1) = 0._wp  
     860 
    854861                  ! This code forces the horizontal weights to be   
    855862                  ! zero IF the observation is below the bottom of the   
     
    861868      
    862869                        depth_loop1: DO ik=kpk,2,-1  
    863                            IF(zmask(iin,ijn,ik-1,jobs ) > 0.9 )THEN    
     870                           IF(zmask(iin,ijn,ik-1,iobs ) > 0.9 )THEN    
    864871                             
    865872                              l_zweig(iin,ijn,1) = &   
    866873                                 & zweig(iin,ijn,1) * &  
    867                                  & MAX( SIGN(1._wp,(zgdepw(iin,ijn,ik,jobs) ) &  
     874                                 & MAX( SIGN(1._wp,(zgdepw(iin,ijn,ik,iobs) ) &  
    868875                                 &  - prodatqc%var(1)%vdep(iend)),0._wp)  
    869876                             
     
    899906                    
    900907                     ! vertically interpolate all 4 corners  
    901                      ista = prodatqc%npvsta(jobs,2)  
    902                      iend = prodatqc%npvend(jobs,2)  
     908                     ista = prodatqc%npvsta(iobs,2)  
     909                     iend = prodatqc%npvend(iobs,2)  
    903910                     inum_obs = iend - ista + 1  
    904911                     ALLOCATE(interp_corner(2,2,inum_obs),iv_indic(inum_obs))  
     
    911918                           IF ( k1dint == 1 ) THEN  
    912919                              CALL obs_int_z1d_spl( kpk, &  
    913                                  &     zinms(iin,ijn,:,jobs), &  
    914                                  &     zobs2k, zgdept(iin,ijn,:,jobs), &  
    915                                  &     zmask(iin,ijn,:,jobs))  
     920                                 &     zinms(iin,ijn,:,iobs), &  
     921                                 &     zobs2k, zgdept(iin,ijn,:,iobs), &  
     922                                 &     zmask(iin,ijn,:,iobs))  
    916923                           ENDIF  
    917924        
    918925                           CALL obs_level_search(kpk, &  
    919                               &    zgdept(iin,ijn,:,jobs), &  
     926                              &    zgdept(iin,ijn,:,iobs), &  
    920927                              &    inum_obs, prodatqc%var(2)%vdep(ista:iend), &  
    921928                              &    iv_indic)  
    922929                           CALL obs_int_z1d(kpk, iv_indic, k1dint, inum_obs, &  
    923930                              &    prodatqc%var(2)%vdep(ista:iend), &  
    924                               &    zinms(iin,ijn,:,jobs), &  
     931                              &    zinms(iin,ijn,:,iobs), &  
    925932                              &    zobs2k, interp_corner(iin,ijn,:), &  
    926                               &    zgdept(iin,ijn,:,jobs), &  
    927                               &    zmask(iin,ijn,:,jobs))  
     933                              &    zgdept(iin,ijn,:,iobs), &  
     934                              &    zmask(iin,ijn,:,iobs))  
    928935        
    929936                        ENDDO  
     
    955962                        IF ( k1dint == 1 ) THEN  
    956963                           CALL obs_int_z1d_spl( kpk, &  
    957                               &    zints(iin,ijn,:,jobs),&  
    958                               &    zobs2k, zgdept(iin,ijn,:,jobs), &  
    959                               &    zmask(iin,ijn,:,jobs))  
     964                              &    zints(iin,ijn,:,iobs),&  
     965                              &    zobs2k, zgdept(iin,ijn,:,iobs), &  
     966                              &    zmask(iin,ijn,:,iobs))  
    960967   
    961968                        ENDIF  
    962969        
    963970                        CALL obs_level_search(kpk, &  
    964                            &        zgdept(iin,ijn,:,jobs),&  
     971                           &        zgdept(iin,ijn,:,iobs),&  
    965972                           &        inum_obs, prodatqc%var(2)%vdep(ista:iend), &  
    966973                           &         iv_indic)  
    967974                        CALL obs_int_z1d(kpk, iv_indic, k1dint, inum_obs,  &  
    968975                           &          prodatqc%var(2)%vdep(ista:iend),     &  
    969                            &          zints(iin,ijn,:,jobs),               &  
     976                           &          zints(iin,ijn,:,iobs),               &  
    970977                           &          zobs2k,interp_corner(iin,ijn,:),     &  
    971                            &          zgdept(iin,ijn,:,jobs),              &  
    972                            &          zmask(iin,ijn,:,jobs) )       
     978                           &          zgdept(iin,ijn,:,iobs),              &  
     979                           &          zmask(iin,ijn,:,iobs) )       
    973980          
    974981                     ENDDO  
     
    983990               DO ikn=1,inum_obs  
    984991                  iend=ista+ikn-1  
     992 
     993                  l_zweig(:,:,1) = 0._wp 
    985994    
    986995                  ! This code forces the horizontal weights to be   
     
    9931002      
    9941003                        depth_loop2: DO ik=kpk,2,-1  
    995                            IF(zmask(iin,ijn,ik-1,jobs ) > 0.9 )THEN    
     1004                           IF(zmask(iin,ijn,ik-1,iobs ) > 0.9 )THEN    
    9961005                             
    9971006                              l_zweig(iin,ijn,1) = &   
    9981007                                 &  zweig(iin,ijn,1) * &  
    999                                  &  MAX( SIGN(1._wp,(zgdepw(iin,ijn,ik,jobs) ) &  
     1008                                 &  MAX( SIGN(1._wp,(zgdepw(iin,ijn,ik,iobs) ) &  
    10001009                                 &  - prodatqc%var(2)%vdep(iend)),0._wp)  
    10011010                             
     
    10291038         & zmask, &  
    10301039         & zintt, &  
    1031          & zints  &  
     1040         & zints, &  
     1041         & zgdept,& 
     1042         & zgdepw & 
    10321043         & )  
    10331044      ! At the end of the day also get interpolated means  
Note: See TracChangeset for help on using the changeset viewer.