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 1467 for trunk/NEMO/OPA_SRC/SBC/sbccpl.F90 – NEMO

Ignore:
Timestamp:
2009-06-11T10:21:57+02:00 (15 years ago)
Author:
smasson
Message:

Introduce for CICE, B-grid with velocities at F-point, see ticket:450

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/SBC/sbccpl.F90

    r1466 r1467  
    731731         !                                                  j+1   j     -----V---F 
    732732         ! ice stress on ice velocity point (cigr_type)                  !       | 
    733          ! (C-grid ==>(U,V) or B-grid ==> I)                      j      |   T   U 
     733         ! (C-grid ==>(U,V) or B-grid ==> I or F)                 j      |   T   U 
    734734         !                                                               |       | 
    735735         !                                                   j    j-1   -I-------| 
     
    739739         SELECT CASE ( cigr_type ) 
    740740            ! 
    741          CASE( 'B' )                                         ! B-grid ==> I 
     741         CASE( 'I' )                                         ! B-grid ==> I 
    742742            SELECT CASE ( srcv(jpr_itx1)%clgrid ) 
    743743            CASE( 'U' ) 
     
    770770            IF( srcv(jpr_itx1)%clgrid /= 'I' ) THEN  
    771771               CALL lbc_lnk( p_taui, 'I',  -1. )   ;   CALL lbc_lnk( p_tauj, 'I',  -1. ) 
     772            ENDIF 
     773            ! 
     774         CASE( 'F' )                                         ! B-grid ==> F 
     775            SELECT CASE ( srcv(jpr_itx1)%clgrid ) 
     776            CASE( 'U' ) 
     777               DO jj = 2, jpjm1                                   ! (U,V) ==> F 
     778                  DO ji = fs_2, fs_jpim1   ! vector opt. 
     779                     p_taui(ji,jj) = 0.5 * ( frcv(ji,jj,jpr_itx1) + frcv(ji  ,jj+1,jpr_itx1) ) 
     780                     p_tauj(ji,jj) = 0.5 * ( frcv(ji,jj,jpr_ity1) + frcv(ji+1,jj  ,jpr_ity1) ) 
     781                  END DO 
     782               END DO 
     783            CASE( 'I' ) 
     784               DO jj = 2, jpjm1                                   ! I ==> F 
     785                  DO ji = fs_2, fs_jpim1   ! vector opt. 
     786                     p_taui(ji,jj) = frcv(ji+1,jj+1,jpr_itx1)  
     787                     p_tauj(ji,jj) = frcv(ji+1,jj+1,jpr_ity1)   
     788                  END DO 
     789               END DO 
     790            CASE( 'T' ) 
     791               DO jj = 2, jpjm1                                   ! T ==> F 
     792                  DO ji = fs_2, fs_jpim1   ! vector opt. 
     793                     p_taui(ji,jj) = 0.25 * ( frcv(ji,jj  ,jpr_itx1) + frcv(ji+1,jj  ,jpr_itx1)   & 
     794                        &                   + frcv(ji,jj+1,jpr_itx1) + frcv(ji+1,jj+1,jpr_itx1) )  
     795                     p_tauj(ji,jj) = 0.25 * ( frcv(ji,jj  ,jpr_ity1) + frcv(ji+1,jj  ,jpr_ity1)   & 
     796                        &                   + frcv(ji,jj+1,jpr_ity1) + frcv(ji+1,jj+1,jpr_ity1) ) 
     797                  END DO 
     798               END DO 
     799            CASE( 'F' ) 
     800               p_taui(:,:) = frcv(:,:,jpr_itx1)                   ! F ==> F 
     801               p_tauj(:,:) = frcv(:,:,jpr_ity1) 
     802            END SELECT 
     803            IF( srcv(jpr_itx1)%clgrid /= 'F' ) THEN  
     804               CALL lbc_lnk( p_taui, 'F',  -1. )   ;   CALL lbc_lnk( p_tauj, 'F',  -1. ) 
    772805            ENDIF 
    773806            ! 
     
    10371070      IF( ssnd(jps_ocx1)%laction ) THEN                      !      Surface current      ! 
    10381071         !                                                   ! ------------------------- ! 
     1072         !     
     1073         !                                                  j+1   j     -----V---F 
     1074         ! surfacz velocity always sent from T point                     !       | 
     1075         !                                                        j      |   T   U 
     1076         !                                                               |       | 
     1077         !                                                   j    j-1   -I-------| 
     1078         !                                               (for I)         |       | 
     1079         !                                                              i-1  i   i 
     1080         !                                                               i      i+1 (for I) 
    10391081         SELECT CASE( TRIM( cn_snd_crt(1) ) ) 
    1040          CASE( 'oce only'             ) 
     1082         CASE( 'oce only'             )      ! C-grid ==> T 
    10411083            DO jj = 2, jpjm1 
    10421084               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    10461088            END DO 
    10471089         CASE( 'weighted oce and ice' )    
    1048             IF( cigr_type == 'C' ) THEN      ! 'C'-grid ice velocity 
     1090            SELECT CASE ( cigr_type ) 
     1091            CASE( 'C' )                      ! Ocean and Ice on C-grid ==> T 
    10491092               DO jj = 2, jpjm1 
    10501093                  DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    10551098                  END DO 
    10561099               END DO 
    1057             ELSE                            ! 'B'-grid ice velocity 
     1100            CASE( 'I' )                      ! Ocean on C grid, Ice on I-point (B-grid) ==> T 
    10581101               DO jj = 2, jpjm1 
    10591102                  DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    10661109                  END DO 
    10671110               END DO 
    1068             ENDIF 
     1111            CASE( 'F' )                      ! Ocean on C grid, Ice on F-point (B-grid) ==> T 
     1112               DO jj = 2, jpjm1 
     1113                  DO ji = fs_2, fs_jpim1   ! vector opt. 
     1114                     zotx1(ji,jj) = 0.5  * ( un(ji,jj,1)          + un(ji-1,jj-1,1)    ) * zfr_l(ji,jj)   
     1115                     zoty1(ji,jj) = 0.5  * ( vn(ji,jj,1)          + vn(ji  ,jj-1,1)    ) * zfr_l(ji,jj)   
     1116                     zitx1(ji,jj) = 0.25 * ( utaui_ice(ji-1,jj-1) + utaui_ice(ji,jj-1)   & 
     1117                        &                  + utaui_ice(ji-1,jj  ) + utaui_ice(ji,jj  ) ) * fr_i(ji,jj) 
     1118                     zity1(ji,jj) = 0.25 * ( vtaui_ice(ji-1,jj-1) + vtaui_ice(ji,jj-1)   & 
     1119                        &                  + vtaui_ice(ji-1,jj  ) + vtaui_ice(ji,jj  ) ) * fr_i(ji,jj) 
     1120                  END DO 
     1121               END DO 
     1122            END SELECT 
    10691123            CALL lbc_lnk( zitx1, 'T', -1. )   ;   CALL lbc_lnk( zity1, 'T', -1. ) 
    10701124         CASE( 'mixed oce-ice'        ) 
    1071             IF( cigr_type == 'C' ) THEN      ! 'C'-grid ice velocity 
     1125            SELECT CASE ( cigr_type ) 
     1126            CASE( 'C' )                      ! Ocean and Ice on C-grid ==> T 
    10721127               DO jj = 2, jpjm1 
    10731128                  DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    10781133                  END DO 
    10791134               END DO 
    1080             ELSE                            ! 'B'-grid ice velocity 
     1135            CASE( 'I' )                      ! Ocean on C grid, Ice on I-point (B-grid) ==> T 
    10811136               DO jj = 2, jpjm1 
    10821137                  DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    10891144                  END DO 
    10901145               END DO 
    1091             ENDIF 
     1146            CASE( 'F' )                      ! Ocean on C grid, Ice on F-point (B-grid) ==> T 
     1147               DO jj = 2, jpjm1 
     1148                  DO ji = fs_2, fs_jpim1   ! vector opt. 
     1149                     zotx1(ji,jj) = 0.5  * ( un(ji,jj,1)          + un(ji-1,jj-1,1)    ) * zfr_l(ji,jj) &    
     1150                        &         + 0.25 * ( utaui_ice(ji-1,jj-1) + utaui_ice(ji,jj-1)   & 
     1151                        &                  + utaui_ice(ji-1,jj  ) + utaui_ice(ji,jj  ) ) *  fr_i(ji,jj) 
     1152                     zoty1(ji,jj) = 0.5  * ( vn(ji,jj,1)          + vn(ji  ,jj-1,1)    ) * zfr_l(ji,jj) &  
     1153                        &         + 0.25 * ( vtaui_ice(ji-1,jj-1) + vtaui_ice(ji,jj-1)   & 
     1154                        &                  + vtaui_ice(ji-1,jj  ) + vtaui_ice(ji,jj  ) ) *  fr_i(ji,jj) 
     1155                  END DO 
     1156               END DO 
     1157            END SELECT 
    10921158         END SELECT 
    10931159         CALL lbc_lnk( zotx1, 'T', -1. )   ;   CALL lbc_lnk( zoty1, 'T', -1. ) 
Note: See TracChangeset for help on using the changeset viewer.