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 4792 for branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/OPA_SRC/BDY – NEMO

Ignore:
Timestamp:
2014-09-26T13:04:47+02:00 (10 years ago)
Author:
jamesharle
Message:

Updates to code after first successful test + merge with HEAD of trunk

Location:
branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/OPA_SRC/BDY
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/OPA_SRC/BDY/bdy_oce.F90

    r4694 r4792  
    105105   REAL(wp),    DIMENSION(jp_bdy) ::   rn_time_dmp_out          !: Damping time scale in days at radiation outflow points 
    106106 
    107 #if ( defined key_lim2 || defined key_lim3 ) 
    108107   CHARACTER(len=20), DIMENSION(jp_bdy) ::   cn_ice_lim       ! Choice of boundary condition for sea ice variables  
    109108   INTEGER, DIMENSION(jp_bdy)           ::   nn_ice_lim_dta   !: = 0 use the initial state as bdy dta ;  
    110109                                                              !: = 1 read it in a NetCDF file 
    111 #endif 
     110   REAL(wp),    DIMENSION(jp_bdy) ::   rn_ice_tem             !: choice of the temperature of incoming sea ice 
     111   REAL(wp),    DIMENSION(jp_bdy) ::   rn_ice_sal             !: choice of the salinity    of incoming sea ice 
     112   REAL(wp),    DIMENSION(jp_bdy) ::   rn_ice_age             !: choice of the age         of incoming sea ice 
    112113   ! 
    113114    
  • branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90

    r4694 r4792  
    532532            READ  ( numnam_cfg, nambdy_dta, IOSTAT = ios, ERR = 902 ) 
    533533902         IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy_dta in configuration namelist', lwp ) 
    534             WRITE ( numond, nambdy_dta ) 
     534            IF(lwm) WRITE ( numond, nambdy_dta ) 
    535535 
    536536            cn_dir_array(ib_bdy) = cn_dir 
     
    676676               CALL iom_close ( inum ) 
    677677               !CALL fld_clopn ( bn_a_i, nyear, nmonth, nday, ldstop=.TRUE. ) 
    678                !CALL iom_open ( bn_a_i %clname, inum ) 
     678               !CALL iom_open ( bn_a_i%clname, inum ) 
    679679               !id1 = iom_varid ( bn_a_i%num, bn_a_i%clvar, kdimsz=zdimsz, kndims=zndims, ldstop = .FALSE. ) 
    680680                IF ( zndims == 4 ) THEN 
     
    740740      jstart = 1 
    741741      DO ib_bdy = 1, nb_bdy 
    742          jend = nb_bdy_fld(ib_bdy)  
     742         jend = jstart - 1 + nb_bdy_fld(ib_bdy)  
    743743         CALL fld_fill( bf(jstart:jend), blf_i(jstart:jend), cn_dir_array(ib_bdy), 'bdy_dta',   & 
    744744         &              'open boundary conditions', 'nambdy_dta' ) 
     
    912912   !!============================================================================== 
    913913END MODULE bdydta 
    914  
    915  
  • branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn.F90

    r4370 r4792  
    3030   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    3131   USE in_out_manager  ! 
    32    USE domvvl 
     32   USE domvvl          ! variable volume 
    3333 
    3434   IMPLICIT NONE 
  • branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/OPA_SRC/BDY/bdyice_lim.F90

    r4333 r4792  
    2424   USE par_ice_2 
    2525   USE ice_2           ! LIM_2 ice variables 
     26   USE dom_ice_2       ! sea-ice domain 
    2627#elif defined key_lim3 
    2728   USE par_ice 
    2829   USE ice             ! LIM_3 ice variables 
     30   USE dom_ice         ! sea-ice domain 
    2931#endif  
    3032   USE par_oce         ! ocean parameters 
    3133   USE dom_oce         ! ocean space and time domain variables  
    32    USE dom_ice          ! sea-ice domain 
    3334   USE sbc_oce         ! Surface boundary condition: ocean fields 
    3435   USE bdy_oce         ! ocean open boundary conditions 
     
    99100      REAL(wp) ::   zinda, ztmelts, zdh 
    100101 
    101       REAL(wp), PARAMETER  ::   zsal = 6.3    ! arbitrary salinity    for incoming ice 
    102       REAL(wp), PARAMETER  ::   ztem = 270.0  ! arbitrary temperature for incoming ice 
    103       REAL(wp), PARAMETER  ::   zage = 30.0   ! arbitrary age         for incoming ice 
    104102      !!------------------------------------------------------------------------------ 
    105103      ! 
     
    233231 
    234232               ! Ice salinity, age, temperature 
    235                sm_i(ji,jj,jl)   = zinda * zsal  + ( 1.0 - zinda ) * s_i_min 
    236                o_i(ji,jj,jl)    = zinda * zage  + ( 1.0 - zinda ) 
    237                t_su(ji,jj,jl)   = zinda * ztem  + ( 1.0 - zinda ) * ztem 
     233               sm_i(ji,jj,jl)   = zinda * rn_ice_sal(ib_bdy)  + ( 1.0 - zinda ) * s_i_min 
     234               o_i(ji,jj,jl)    = zinda * rn_ice_age(ib_bdy)  + ( 1.0 - zinda ) 
     235               t_su(ji,jj,jl)   = zinda * rn_ice_tem(ib_bdy)  + ( 1.0 - zinda ) * rn_ice_tem(ib_bdy) 
    238236               DO jk = 1, nlay_s 
    239                   t_s(ji,jj,jk,jl) = zinda * ztem + ( 1.0 - zinda ) * rtt 
     237                  t_s(ji,jj,jk,jl) = zinda * rn_ice_tem(ib_bdy) + ( 1.0 - zinda ) * rtt 
    240238               END DO 
    241239               DO jk = 1, nlay_i 
    242                   t_i(ji,jj,jk,jl) = zinda * ztem + ( 1.0 - zinda ) * rtt  
    243                   s_i(ji,jj,jk,jl) = zinda * zsal + ( 1.0 - zinda ) * s_i_min 
     240                  t_i(ji,jj,jk,jl) = zinda * rn_ice_tem(ib_bdy) + ( 1.0 - zinda ) * rtt  
     241                  s_i(ji,jj,jk,jl) = zinda * rn_ice_sal(ib_bdy) + ( 1.0 - zinda ) * s_i_min 
    244242               END DO 
    245243                
     
    259257 
    260258            END SELECT 
     259 
     260            ! if salinity is constant, then overwrite rn_ice_sal 
     261            IF( num_sal == 1 ) THEN 
     262               sm_i(ji,jj,jl)   = bulk_sal 
     263               s_i (ji,jj,:,jl) = bulk_sal 
     264            ENDIF 
    261265 
    262266            ! contents 
     
    338342      DO ib_bdy=1, nb_bdy 
    339343         ! 
    340          SELECT CASE( nn_ice_lim(ib_bdy) ) 
     344         SELECT CASE( cn_ice_lim(ib_bdy) ) 
    341345 
    342346         CASE('none') 
     
    355359                  ji    = idx_bdy(ib_bdy)%nbi(jb,jgrd) 
    356360                  jj    = idx_bdy(ib_bdy)%nbj(jb,jgrd) 
    357                   zflag = idx_bdy(ib_bdy)%flagu(jb) 
     361                  zflag = idx_bdy(ib_bdy)%flagu(jb,jgrd) 
    358362                   
    359363                  IF ( ABS( zflag ) == 1. ) THEN  ! eastern and western boundaries 
     
    384388                  ji    = idx_bdy(ib_bdy)%nbi(jb,jgrd) 
    385389                  jj    = idx_bdy(ib_bdy)%nbj(jb,jgrd) 
    386                   zflag = idx_bdy(ib_bdy)%flagv(jb) 
     390                  zflag = idx_bdy(ib_bdy)%flagv(jb,jgrd) 
    387391                   
    388392                  IF ( ABS( zflag ) == 1. ) THEN  ! northern and southern boundaries 
  • branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90

    r4694 r4792  
    100100         &             cn_dyn3d, nn_dyn3d_dta, cn_tra, nn_tra_dta,             &   
    101101         &             ln_tra_dmp, ln_dyn3d_dmp, rn_time_dmp, rn_time_dmp_out, & 
    102 #if ( defined key_lim2 || defined key_lim3 ) 
    103102         &             cn_ice_lim, nn_ice_lim_dta,                           & 
    104 #endif 
     103         &             rn_ice_tem, rn_ice_sal, rn_ice_age,                 & 
    105104         &             ln_vol, nn_volctl, nn_rimwidth, nb_jpk_bdy 
    106105      !! 
     
    132131      READ  ( numnam_cfg, nambdy, IOSTAT = ios, ERR = 902 ) 
    133132902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy in configuration namelist', lwp ) 
    134       WRITE ( numond, nambdy ) 
     133      IF(lwm) WRITE ( numond, nambdy ) 
    135134 
    136135      ! ----------------------------------------- 
     
    359358        ENDIF 
    360359        IF(lwp) WRITE(numout,*) 
     360        IF(lwp) WRITE(numout,*) '      tem of bdy sea-ice = ', rn_ice_tem(ib_bdy)          
     361        IF(lwp) WRITE(numout,*) '      sal of bdy sea-ice = ', rn_ice_sal(ib_bdy)          
     362        IF(lwp) WRITE(numout,*) '      age of bdy sea-ice = ', rn_ice_age(ib_bdy)          
    361363#endif 
    362364 
     
    384386        ELSE 
    385387           IF(lwp) WRITE(numout,*) '*** open boundary will be read straight onto the native grid without vertical interpolation ***' 
     388        ENDIF 
    386389     ENDIF 
    387390 
     
    422425            READ  ( numnam_cfg, nambdy_index, IOSTAT = ios, ERR = 904 ) 
    423426904         IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy_index in configuration namelist', lwp ) 
    424             WRITE ( numond, nambdy_index ) 
     427            IF(lwm) WRITE ( numond, nambdy_index ) 
    425428 
    426429            SELECT CASE ( TRIM(ctypebdy) ) 
     
    509512            &      nbrdta(jpbdta, jpbgrd, nb_bdy) ) 
    510513 
    511          IF( jpk_bdy>0 ) THEN 
    512             ALLOCATE( dta_global(jpbdtau, 1, jpk_bdy) ) 
    513             ALLOCATE( dta_global_z(jpbdtau, 1, jpk_bdy) ) 
     514         IF( nb_jpk_bdy>0 ) THEN 
     515            ALLOCATE( dta_global(jpbdtau, 1, nb_jpk_bdy) ) 
     516            ALLOCATE( dta_global_z(jpbdtau, 1, nb_jpk_bdy) ) 
    514517         ELSE 
    515518            ALLOCATE( dta_global(jpbdtau, 1, jpk) ) 
     
    518521 
    519522         IF ( icount>0 ) THEN 
    520             IF( jpk_bdy>0 ) THEN 
    521                ALLOCATE( dta_global2(jpbdtas, nrimmax, jpk_bdy) ) 
    522                ALLOCATE( dta_global2_z(jpbdtas, nrimmax, jpk_bdy) ) 
     523            IF( nb_jpk_bdy>0 ) THEN 
     524               ALLOCATE( dta_global2(jpbdtas, nrimmax, nb_jpk_bdy) ) 
     525               ALLOCATE( dta_global2_z(jpbdtas, nrimmax, nb_jpk_bdy) ) 
    523526            ELSE 
    524527               ALLOCATE( dta_global2(jpbdtas, nrimmax, jpk) ) 
    525528               ALLOCATE( dta_global2_z(jpbdtas, nrimmax, jpk) ) 
    526529            ENDIF 
     530         ENDIF 
    527531         !  
    528532      ENDIF 
  • branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/OPA_SRC/BDY/bdytides.F90

    r4354 r4792  
    117117            READ  ( numnam_cfg, nambdy_tide, IOSTAT = ios, ERR = 902 ) 
    118118902         IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy_tide in configuration namelist', lwp ) 
    119             WRITE ( numond, nambdy_tide ) 
     119            IF(lwm) WRITE ( numond, nambdy_tide ) 
    120120            !                                               ! Parameter control and print 
    121121            IF(lwp) WRITE(numout,*) '  ' 
     
    418418      DO ib_bdy = 1,nb_bdy 
    419419 
    420          ! line below should be simplified (runoff case) 
    421 !! CHANUT: TO BE SORTED OUT 
    422 !!         IF (( nn_dyn2d_dta(ib_bdy) .ge. 2 ).AND.(nn_tra(ib_bdy).NE.4)) THEN 
    423420         IF ( nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN 
    424421 
     
    453450            IF ( PRESENT(kit) ) THEN 
    454451               IF ( lk_first_btstp ) THEN ! Save slow varying open boundary data: 
    455                   dta_bdy_s(ib_bdy)%ssh(1:ilen0(1)) = dta_bdy(ib_bdy)%ssh(1:ilen0(1)) 
    456                   dta_bdy_s(ib_bdy)%u2d(1:ilen0(2)) = dta_bdy(ib_bdy)%u2d(1:ilen0(2)) 
    457                   dta_bdy_s(ib_bdy)%v2d(1:ilen0(3)) = dta_bdy(ib_bdy)%v2d(1:ilen0(3)) 
     452                  IF ( dta_bdy(ib_bdy)%ll_ssh ) dta_bdy_s(ib_bdy)%ssh(1:ilen0(1)) = dta_bdy(ib_bdy)%ssh(1:ilen0(1)) 
     453                  IF ( dta_bdy(ib_bdy)%ll_u2d ) dta_bdy_s(ib_bdy)%u2d(1:ilen0(2)) = dta_bdy(ib_bdy)%u2d(1:ilen0(2)) 
     454                  IF ( dta_bdy(ib_bdy)%ll_v2d ) dta_bdy_s(ib_bdy)%v2d(1:ilen0(3)) = dta_bdy(ib_bdy)%v2d(1:ilen0(3)) 
    458455 
    459456               ELSE ! Initialize arrays from slow varying open boundary data:             
    460                   dta_bdy(ib_bdy)%ssh(1:ilen0(1)) = dta_bdy_s(ib_bdy)%ssh(1:ilen0(1)) 
    461                   dta_bdy(ib_bdy)%u2d(1:ilen0(2)) = dta_bdy_s(ib_bdy)%u2d(1:ilen0(2)) 
    462                   dta_bdy(ib_bdy)%v2d(1:ilen0(3)) = dta_bdy_s(ib_bdy)%v2d(1:ilen0(3)) 
     457                  IF ( dta_bdy(ib_bdy)%ll_ssh ) dta_bdy(ib_bdy)%ssh(1:ilen0(1)) = dta_bdy_s(ib_bdy)%ssh(1:ilen0(1)) 
     458                  IF ( dta_bdy(ib_bdy)%ll_u2d ) dta_bdy(ib_bdy)%u2d(1:ilen0(2)) = dta_bdy_s(ib_bdy)%u2d(1:ilen0(2)) 
     459                  IF ( dta_bdy(ib_bdy)%ll_v2d ) dta_bdy(ib_bdy)%v2d(1:ilen0(3)) = dta_bdy_s(ib_bdy)%v2d(1:ilen0(3)) 
    463460               ENDIF 
    464461            ENDIF 
     
    471468               z_sist = zramp * SIN( z_sarg ) 
    472469               ! 
    473                igrd=1                              ! SSH on tracer grid 
    474                DO ib = 1, ilen0(igrd) 
    475                   dta_bdy(ib_bdy)%ssh(ib) = dta_bdy(ib_bdy)%ssh(ib) + & 
    476                      &                      ( tides(ib_bdy)%ssh(ib,itide,1)*z_cost + & 
    477                      &                        tides(ib_bdy)%ssh(ib,itide,2)*z_sist ) 
    478                END DO 
    479                ! 
    480                igrd=2                              ! U grid 
    481                DO ib = 1, ilen0(igrd) 
    482                   dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) + & 
    483                      &                      ( tides(ib_bdy)%u(ib,itide,1)*z_cost + & 
    484                      &                        tides(ib_bdy)%u(ib,itide,2)*z_sist ) 
    485                END DO 
    486                ! 
    487                igrd=3                              ! V grid 
    488                DO ib = 1, ilen0(igrd)  
    489                   dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) + & 
    490                      &                      ( tides(ib_bdy)%v(ib,itide,1)*z_cost + & 
    491                      &                        tides(ib_bdy)%v(ib,itide,2)*z_sist ) 
    492                END DO 
    493             END DO 
     470               IF ( dta_bdy(ib_bdy)%ll_ssh ) THEN 
     471                  igrd=1                              ! SSH on tracer grid 
     472                  DO ib = 1, ilen0(igrd) 
     473                     dta_bdy(ib_bdy)%ssh(ib) = dta_bdy(ib_bdy)%ssh(ib) + & 
     474                        &                      ( tides(ib_bdy)%ssh(ib,itide,1)*z_cost + & 
     475                        &                        tides(ib_bdy)%ssh(ib,itide,2)*z_sist ) 
     476                  END DO 
     477               ENDIF 
     478               ! 
     479               IF ( dta_bdy(ib_bdy)%ll_u2d ) THEN 
     480                  igrd=2                              ! U grid 
     481                  DO ib = 1, ilen0(igrd) 
     482                     dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) + & 
     483                        &                      ( tides(ib_bdy)%u(ib,itide,1)*z_cost + & 
     484                        &                        tides(ib_bdy)%u(ib,itide,2)*z_sist ) 
     485                  END DO 
     486               ENDIF 
     487               ! 
     488               IF ( dta_bdy(ib_bdy)%ll_v2d ) THEN 
     489                  igrd=3                              ! V grid 
     490                  DO ib = 1, ilen0(igrd)  
     491                     dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) + & 
     492                        &                      ( tides(ib_bdy)%v(ib,itide,1)*z_cost + & 
     493                        &                        tides(ib_bdy)%v(ib,itide,2)*z_sist ) 
     494                  END DO 
     495               ENDIF 
     496            END DO              
    494497         END IF 
    495498      END DO 
Note: See TracChangeset for help on using the changeset viewer.