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 3372 for branches/2012/dev_r3337_NOCS10_ICB/NEMOGCM/NEMO/OPA_SRC/ICB/icbdyn.F90 – NEMO

Ignore:
Timestamp:
2012-04-30T12:50:36+02:00 (12 years ago)
Author:
sga
Message:

NEMO branch dev_r3337_NOCS10_ICB: change all routine names and create more Gurvanistic havoc

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2012/dev_r3337_NOCS10_ICB/NEMOGCM/NEMO/OPA_SRC/ICB/icbdyn.F90

    r3370 r3372  
    2424   PRIVATE 
    2525 
    26    PUBLIC   evolve_icebergs  ! routine called in icbrun.F90 module 
     26   PUBLIC   icb_dyn  ! routine called in icbrun.F90 module 
    2727 
    2828   !!---------------------------------------------------------------------- 
     
    3333CONTAINS 
    3434 
    35    SUBROUTINE evolve_icebergs() 
    36       !!---------------------------------------------------------------------- 
    37       !!                  ***  ROUTINE evolve_icebergs  *** 
     35   SUBROUTINE icb_dyn() 
     36      !!---------------------------------------------------------------------- 
     37      !!                  ***  ROUTINE icb_dyn  *** 
    3838      !! 
    3939      !! ** Purpose :   iceberg evolution. 
     
    8484 
    8585         !                                         !**   A1 = A(X1,V1) 
    86          CALL accel( berg , zxi1, ze1, zuvel1, zuvel1, zax1,     & 
    87             &               zyj1, ze2, zvvel1, zvvel1, zay1, zdt_2 ) 
     86         CALL icb_accel( berg , zxi1, ze1, zuvel1, zuvel1, zax1,     & 
     87            &                   zyj1, ze2, zvvel1, zvvel1, zay1, zdt_2 ) 
    8888         ! 
    8989         zu1 = zuvel1 / ze1                           !**   V1 in d(i,j)/dt 
     
    9797         zyj2 = zyj1 + zdt_2 * zv1          ;   zvvel2 = zvvel1 + zdt_2 * zay1 
    9898         ! 
    99          CALL adjust_to_ground( zxi2, zxi1, zu1,   & 
    100          &                      zyj2, zyj1, zv1, ll_bounced ) 
     99         CALL icb_ground( zxi2, zxi1, zu1,   & 
     100         &                zyj2, zyj1, zv1, ll_bounced ) 
    101101 
    102102         !                                         !**   A2 = A(X2,V2) 
    103          CALL accel( berg , zxi2, ze1, zuvel2, zuvel1, zax2,    & 
    104             &               zyj2, ze2, zvvel2, zvvel1, zay2, zdt_2 ) 
     103         CALL icb_accel( berg , zxi2, ze1, zuvel2, zuvel1, zax2,    & 
     104            &                   zyj2, ze2, zvvel2, zvvel1, zay2, zdt_2 ) 
    105105         ! 
    106106         zu2 = zuvel2 / ze1                           !**   V2 in d(i,j)/dt 
     
    113113         zyj3  = zyj1  + zdt_2 * zv2   ;   zvvel3 = zvvel1 + zdt_2 * zay2 
    114114         ! 
    115          CALL adjust_to_ground( zxi3, zxi1, zu3,   & 
    116          &                      zyj3, zyj1, zv3, ll_bounced ) 
     115         CALL icb_ground( zxi3, zxi1, zu3,   & 
     116         &                zyj3, zyj1, zv3, ll_bounced ) 
    117117 
    118118         !                                         !**   A3 = A(X3,V3) 
    119          CALL accel( berg , zxi3, ze1, zuvel3, zuvel1, zax3,    & 
    120             &               zyj3, ze2, zvvel3, zvvel1, zay3, zdt ) 
     119         CALL icb_accel( berg , zxi3, ze1, zuvel3, zuvel1, zax3,    & 
     120            &                   zyj3, ze2, zvvel3, zvvel1, zay3, zdt ) 
    121121         ! 
    122122         zu3 = zuvel3 / ze1                           !**   V3 in d(i,j)/dt 
     
    129129         zyj4 = zyj1 + zdt * zv3   ;   zvvel4 = zvvel1 + zdt * zay3 
    130130 
    131          CALL adjust_to_ground( zxi4, zxi1, zu4,   & 
    132          &                      zyj4, zyj1, zv4, ll_bounced ) 
     131         CALL icb_ground( zxi4, zxi1, zu4,   & 
     132         &                zyj4, zyj1, zv4, ll_bounced ) 
    133133 
    134134         !                                         !**   A4 = A(X4,V4) 
    135          CALL accel( berg , zxi4, ze1, zuvel4, zuvel1, zax4,    & 
    136             &               zyj4, ze2, zvvel4, zvvel1, zay4, zdt ) 
     135         CALL icb_accel( berg , zxi4, ze1, zuvel4, zuvel1, zax4,    & 
     136            &                   zyj4, ze2, zvvel4, zvvel1, zay4, zdt ) 
    137137 
    138138         zu4 = zuvel4 / ze1                           !**   V4 in d(i,j)/dt 
     
    148148         zvvel_n = pt%vvel + zdt_6 * (  zay1 + 2.*(zay2 + zay3) + zay4 ) 
    149149 
    150          CALL adjust_to_ground( zxi_n, zxi1, zuvel_n,   & 
     150         CALL icb_ground( zxi_n, zxi1, zuvel_n,   & 
    151151         &                      zyj_n, zyj1, zvvel_n, ll_bounced ) 
    152152 
     
    157157 
    158158         ! update actual position 
    159          pt%lon  = bilin_x(glamt, pt%xi, pt%yj ) 
    160          pt%lat  = bilin(gphit, pt%xi, pt%yj, 'T', 0, 0 ) 
     159         pt%lon  = icb_utl_bilin_x(glamt, pt%xi, pt%yj ) 
     160         pt%lat  = icb_utl_bilin(gphit, pt%xi, pt%yj, 'T', 0, 0 ) 
    161161 
    162162         berg => berg%next                         ! switch to the next berg 
     
    164164      END DO                                  !==  end loop over all bergs  ==! 
    165165      ! 
    166    END SUBROUTINE evolve_icebergs 
    167  
    168  
    169    SUBROUTINE adjust_to_ground( pi, pi0, pu,   & 
     166   END SUBROUTINE icb_dyn 
     167 
     168 
     169   SUBROUTINE icb_ground( pi, pi0, pu,   & 
    170170      &                         pj, pj0, pv, ld_bounced ) 
    171171      !!---------------------------------------------------------------------- 
    172       !!                  ***  ROUTINE adjust_to_ground  *** 
     172      !!                  ***  ROUTINE icb_ground  *** 
    173173      !! 
    174174      !! ** Purpose :   iceberg grounding. 
     
    230230      END SELECT 
    231231      ! 
    232    END SUBROUTINE adjust_to_ground 
    233  
    234  
    235    SUBROUTINE accel( berg , pxi, pe1, puvel, puvel0, pax,                & 
    236       &                     pyj, pe2, pvvel, pvvel0, pay, pdt ) 
    237       !!---------------------------------------------------------------------- 
    238       !!                  ***  ROUTINE accel  *** 
     232   END SUBROUTINE icb_ground 
     233 
     234 
     235   SUBROUTINE icb_accel( berg , pxi, pe1, puvel, puvel0, pax,                & 
     236      &                         pyj, pe2, pvvel, pvvel0, pay, pdt ) 
     237      !!---------------------------------------------------------------------- 
     238      !!                  ***  ROUTINE icb_accel  *** 
    239239      !! 
    240240      !! ** Purpose :   compute the iceberg acceleration. 
     
    268268      ! Interpolate gridded fields to berg 
    269269      nknberg = berg%number(1) 
    270       CALL interp_flds( pxi, pe1, zuo, zui, zua, zssh_x,                     & 
    271          &              pyj, pe2, zvo, zvi, zva, zssh_y, zsst, zcn, zhi, zff ) 
     270      CALL icb_utl_interp( pxi, pe1, zuo, zui, zua, zssh_x,                     & 
     271         &                 pyj, pe2, zvo, zvi, zva, zssh_y, zsst, zcn, zhi, zff ) 
    272272 
    273273      zM = berg%current_point%mass 
     
    364364               zuveln = zuveln * ( zspeed_new / zspeed )        ! Scale velocity to reduce speed 
    365365               zvveln = zvveln * ( zspeed_new / zspeed )        ! without changing the direction 
    366                CALL speed_budget() 
     366               CALL icb_dia_speed() 
    367367            ENDIF 
    368368         ENDIF 
     
    374374         WRITE(numicb,'("pe=",i3,x,a)') narea,'Dump triggered by excessive acceleration' 
    375375      ! 
    376    END SUBROUTINE accel 
     376   END SUBROUTINE icb_accel 
    377377 
    378378   !!====================================================================== 
Note: See TracChangeset for help on using the changeset viewer.