Changeset 11507


Ignore:
Timestamp:
2019-09-06T17:19:33+02:00 (13 months ago)
Author:
clem
Message:

add a new functionality for bdy ice by allowing the user to have input files for ice/snw temperature and salinity instead of setting a constant value. Also, input files can have any number of categories

Location:
NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/cfgs/SHARED/namelist_ref

    r11398 r11507  
    602602   nn_ice_dta    =  0         !  = 0, bdy data are equal to the initial state 
    603603   !                          !  = 1, bdy data are read in 'bdydata   .nc' files 
    604    rn_ice_tem    = 270.       !  si3 only: arbitrary temperature of incoming sea ice 
    605    rn_ice_sal    = 10.        !  si3 only:      --   salinity           -- 
    606    rn_ice_age    = 30.        !  si3 only:      --   age                -- 
    607604   ! 
    608605   ln_tra_dmp    =.false.     !  open boudaries conditions for tracers 
     
    633630   bn_tem      = 'amm12_bdyT_tra'        ,         24.       , 'votemper',    .true.   , .false.,  'daily'  ,    ''            ,   ''     ,     '' 
    634631   bn_sal      = 'amm12_bdyT_tra'        ,         24.       , 'vosaline',    .true.   , .false.,  'daily'  ,    ''            ,   ''     ,     '' 
    635 !* for si3 
    636 !   bn_a_i     = 'amm12_bdyT_ice'        ,         24.       , 'ileadfra',    .true.   , .false.,  'daily'  ,    ''            ,   ''     ,     '' 
    637 !   bn_h_i     = 'amm12_bdyT_ice'        ,         24.       , 'iicethic',    .true.   , .false.,  'daily'  ,    ''            ,   ''     ,     '' 
    638 !   bn_h_s     = 'amm12_bdyT_ice'        ,         24.       , 'isnowthi',    .true.   , .false.,  'daily'  ,    ''            ,   ''     ,     '' 
     632   !* for si3 
     633   bn_a_i      = 'amm12_bdyT_ice'        ,         24.       , 'ileadfra',    .true.   , .false.,  'daily'  ,    ''            ,   ''     ,     '' 
     634   bn_h_i      = 'amm12_bdyT_ice'        ,         24.       , 'iicethic',    .true.   , .false.,  'daily'  ,    ''            ,   ''     ,     '' 
     635   bn_h_s      = 'amm12_bdyT_ice'        ,         24.       , 'isnowthi',    .true.   , .false.,  'daily'  ,    ''            ,   ''     ,     '' 
     636   bn_t_i      = 'NOT USED'              ,         24.       , 'iicetemp',    .true.   , .false.,  'daily'  ,    ''            ,   ''     ,     '' 
     637   bn_t_s      = 'NOT USED'              ,         24.       , 'isnwtemp',    .true.   , .false.,  'daily'  ,    ''            ,   ''     ,     '' 
     638   bn_tsu      = 'NOT USED'              ,         24.       , 'isurtemp',    .true.   , .false.,  'daily'  ,    ''            ,   ''     ,     '' 
     639   bn_s_i      = 'NOT USED'              ,         24.       , 'iicesalt',    .true.   , .false.,  'daily'  ,    ''            ,   ''     ,     '' 
     640   ! if bn_t_i, bn_tsu and bn_s_i are "not used", then define arbitrary temperatures and salinity 
     641   rn_ice_tem    = 270.       !  arbitrary temperature of incoming sea ice 
     642   rn_ice_sal    = 10.        !       --   salinity           -- 
     643   rn_ice_age    = 30.        !       --   age                -- 
    639644/ 
    640645!----------------------------------------------------------------------- 
  • NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src/ICE/icevar.F90

    r11397 r11507  
    4747   !!   ice_var_zapneg    : remove negative ice fields 
    4848   !!   ice_var_roundoff  : remove negative values arising from roundoff erros 
    49    !!   ice_var_itd       : convert N-cat to M-cat 
    5049   !!   ice_var_bv        : brine volume 
    5150   !!   ice_var_enthalpy  : compute ice and snow enthalpies from temperature 
    5251   !!   ice_var_sshdyn    : compute equivalent ssh in lead 
     52   !!   ice_var_itd       : convert N-cat to M-cat 
    5353   !!---------------------------------------------------------------------- 
    5454   USE dom_oce        ! ocean space and time domain 
     
    787787      REAL(wp), DIMENSION(:), INTENT(in)    ::   phti, phts, pati    ! input  ice/snow variables 
    788788      REAL(wp), DIMENSION(:), INTENT(inout) ::   ph_i, ph_s, pa_i    ! output ice/snow variables 
    789       REAL(wp), DIMENSION(:), INTENT(in)   , OPTIONAL ::   ptmi, ptms, ptmsu, psmi    ! input  ice/snow temp & sal 
    790       REAL(wp), DIMENSION(:), INTENT(inout), OPTIONAL ::   pt_i, pt_s, pt_su, ps_i    ! output ice/snow temp & sal 
     789      REAL(wp), DIMENSION(:), INTENT(in)    ::   ptmi, ptms, ptmsu, psmi    ! input  ice/snow temp & sal 
     790      REAL(wp), DIMENSION(:), INTENT(inout) ::   pt_i, pt_s, pt_su, ps_i    ! output ice/snow temp & sal 
    791791      !!------------------------------------------------------------------- 
    792792      ! == thickness and concentration == ! 
     
    796796      ! 
    797797      ! == temperature and salinity == ! 
    798       IF( PRESENT( pt_i  ) )   pt_i (:) = ptmi (:) 
    799       IF( PRESENT( pt_s  ) )   pt_s (:) = ptms (:) 
    800       IF( PRESENT( pt_su ) )   pt_su(:) = ptmsu(:) 
    801       IF( PRESENT( ps_i  ) )   ps_i (:) = psmi (:) 
     798      pt_i (:) = ptmi (:) 
     799      pt_s (:) = ptms (:) 
     800      pt_su(:) = ptmsu(:) 
     801      ps_i (:) = psmi (:) 
    802802       
    803803   END SUBROUTINE ice_var_itd_1c1c 
     
    810810      REAL(wp), DIMENSION(:,:), INTENT(in)    ::   phti, phts, pati    ! input  ice/snow variables 
    811811      REAL(wp), DIMENSION(:)  , INTENT(inout) ::   ph_i, ph_s, pa_i    ! output ice/snow variables 
    812       REAL(wp), DIMENSION(:,:), INTENT(in)   , OPTIONAL ::   ptmi, ptms, ptmsu, psmi    ! input  ice/snow temp & sal 
    813       REAL(wp), DIMENSION(:)  , INTENT(inout), OPTIONAL ::   pt_i, pt_s, pt_su, ps_i    ! output ice/snow temp & sal 
     812      REAL(wp), DIMENSION(:,:), INTENT(in)    ::   ptmi, ptms, ptmsu, psmi    ! input  ice/snow temp & sal 
     813      REAL(wp), DIMENSION(:)  , INTENT(inout) ::   pt_i, pt_s, pt_su, ps_i    ! output ice/snow temp & sal 
    814814      ! 
    815815      REAL(wp), ALLOCATABLE, DIMENSION(:) ::   z1_ai, z1_vi, z1_vs 
     
    821821      ! 
    822822      ! == thickness and concentration == ! 
    823       ALLOCATE( z1_ai(idim) ) 
     823      ALLOCATE( z1_ai(idim), z1_vi(idim), z1_vs(idim) ) 
    824824      ! 
    825825      pa_i(:) = SUM( pati(:,:), dim=2 ) 
     
    833833      ! 
    834834      ! == temperature and salinity == ! 
    835       IF( PRESENT( pt_i ) .OR. PRESENT( pt_s ) .OR. PRESENT( pt_su ) .OR. PRESENT( ps_i ) ) THEN 
    836          ! 
    837          ALLOCATE( z1_vi(idim), z1_vs(idim) ) 
    838          ! 
    839          WHERE( ( pa_i(:) * ph_i(:) ) /= 0._wp )   ;   z1_vi(:) = 1._wp / ( pa_i(:) * ph_i(:) ) 
    840          ELSEWHERE                                 ;   z1_vi(:) = 0._wp 
    841          END WHERE 
    842          WHERE( ( pa_i(:) * ph_s(:) ) /= 0._wp )   ;   z1_vs(:) = 1._wp / ( pa_i(:) * ph_s(:) ) 
    843          ELSEWHERE                                 ;   z1_vs(:) = 0._wp 
    844          END WHERE 
    845          ! 
    846          IF( PRESENT( pt_i  ) )   pt_i (:) = SUM( ptmi (:,:) * pati(:,:) * phti(:,:), dim=2 ) * z1_vi(:) 
    847          IF( PRESENT( pt_s  ) )   pt_s (:) = SUM( ptms (:,:) * pati(:,:) * phts(:,:), dim=2 ) * z1_vs(:) 
    848          IF( PRESENT( pt_su ) )   pt_su(:) = SUM( ptmsu(:,:) * pati(:,:)            , dim=2 ) * z1_ai(:) 
    849          IF( PRESENT( ps_i  ) )   ps_i (:) = SUM( psmi (:,:) * pati(:,:) * phti(:,:), dim=2 ) * z1_vi(:) 
    850          ! 
    851          DEALLOCATE( z1_vi, z1_vs ) 
    852          ! 
    853       ENDIF 
    854       ! 
    855       DEALLOCATE( z1_ai ) 
     835      WHERE( ( pa_i(:) * ph_i(:) ) /= 0._wp )   ;   z1_vi(:) = 1._wp / ( pa_i(:) * ph_i(:) ) 
     836      ELSEWHERE                                 ;   z1_vi(:) = 0._wp 
     837      END WHERE 
     838      WHERE( ( pa_i(:) * ph_s(:) ) /= 0._wp )   ;   z1_vs(:) = 1._wp / ( pa_i(:) * ph_s(:) ) 
     839      ELSEWHERE                                 ;   z1_vs(:) = 0._wp 
     840      END WHERE 
     841      pt_i (:) = SUM( ptmi (:,:) * pati(:,:) * phti(:,:), dim=2 ) * z1_vi(:) 
     842      pt_s (:) = SUM( ptms (:,:) * pati(:,:) * phts(:,:), dim=2 ) * z1_vs(:) 
     843      pt_su(:) = SUM( ptmsu(:,:) * pati(:,:)            , dim=2 ) * z1_ai(:) 
     844      ps_i (:) = SUM( psmi (:,:) * pati(:,:) * phti(:,:), dim=2 ) * z1_vi(:) 
     845      ! 
     846      DEALLOCATE( z1_ai, z1_vi, z1_vs ) 
    856847      ! 
    857848   END SUBROUTINE ice_var_itd_Nc1c 
     
    889880      REAL(wp), DIMENSION(:),   INTENT(in)    ::   phti, phts, pati    ! input  ice/snow variables 
    890881      REAL(wp), DIMENSION(:,:), INTENT(inout) ::   ph_i, ph_s, pa_i    ! output ice/snow variables 
    891       REAL(wp), DIMENSION(:)  , INTENT(in)   , OPTIONAL ::   ptmi, ptms, ptmsu, psmi    ! input  ice/snow temp & sal 
    892       REAL(wp), DIMENSION(:,:), INTENT(inout), OPTIONAL ::   pt_i, pt_s, pt_su, ps_i    ! output ice/snow temp & sal 
     882      REAL(wp), DIMENSION(:)  , INTENT(in)    ::   ptmi, ptms, ptmsu, psmi    ! input  ice/snow temp & sal 
     883      REAL(wp), DIMENSION(:,:), INTENT(inout) ::   pt_i, pt_s, pt_su, ps_i    ! output ice/snow temp & sal 
    893884      ! 
    894885      INTEGER , DIMENSION(4) ::   itest 
     
    1005996      ! 
    1006997      ! == temperature and salinity == ! 
    1007       IF( PRESENT( pt_i  ) ) THEN 
    1008          DO jl = 1, jpl 
    1009             pt_i(:,jl) = ptmi (:) 
    1010          END DO 
    1011       ENDIF 
    1012       IF( PRESENT( pt_s  ) ) THEN 
    1013          DO jl = 1, jpl 
    1014             pt_s (:,jl) = ptms (:) 
    1015          END DO 
    1016       ENDIF 
    1017       IF( PRESENT( pt_su ) ) THEN 
    1018          DO jl = 1, jpl 
    1019             pt_su(:,jl) = ptmsu(:) 
    1020          END DO 
    1021       ENDIF 
    1022       IF( PRESENT( ps_i  ) ) THEN 
    1023          DO jl = 1, jpl 
    1024             ps_i (:,jl) = psmi (:) 
    1025          END DO 
    1026       ENDIF 
     998      DO jl = 1, jpl 
     999         pt_i(:,jl) = ptmi (:) 
     1000      END DO 
     1001      DO jl = 1, jpl 
     1002         pt_s (:,jl) = ptms (:) 
     1003      END DO 
     1004      DO jl = 1, jpl 
     1005         pt_su(:,jl) = ptmsu(:) 
     1006      END DO 
     1007      DO jl = 1, jpl 
     1008         ps_i (:,jl) = psmi (:) 
     1009      END DO 
    10271010      ! 
    10281011   END SUBROUTINE ice_var_itd_1cMc 
     
    10601043      REAL(wp), DIMENSION(:,:), INTENT(in)    ::   phti, phts, pati    ! input  ice/snow variables 
    10611044      REAL(wp), DIMENSION(:,:), INTENT(inout) ::   ph_i, ph_s, pa_i    ! output ice/snow variables 
    1062       REAL(wp), DIMENSION(:,:), INTENT(in)   , OPTIONAL ::   ptmi, ptms, ptmsu, psmi    ! input  ice/snow temp & sal 
    1063       REAL(wp), DIMENSION(:,:), INTENT(inout), OPTIONAL ::   pt_i, pt_s, pt_su, ps_i    ! output ice/snow temp & sal 
     1045      REAL(wp), DIMENSION(:,:), INTENT(in)    ::   ptmi, ptms, ptmsu, psmi    ! input  ice/snow temp & sal 
     1046      REAL(wp), DIMENSION(:,:), INTENT(inout) ::   pt_i, pt_s, pt_su, ps_i    ! output ice/snow temp & sal 
    10641047      ! 
    10651048      INTEGER , ALLOCATABLE, DIMENSION(:,:) ::   jlfil, jlfil2 
     
    10841067         ! 
    10851068         ! == temperature and salinity == ! 
    1086          IF( PRESENT( pt_i  ) )   pt_i (:,:) = ptmi (:,:) 
    1087          IF( PRESENT( pt_s  ) )   pt_s (:,:) = ptms (:,:) 
    1088          IF( PRESENT( pt_su ) )   pt_su(:,:) = ptmsu(:,:) 
    1089          IF( PRESENT( ps_i  ) )   ps_i (:,:) = psmi (:,:) 
     1069         pt_i (:,:) = ptmi (:,:) 
     1070         pt_s (:,:) = ptms (:,:) 
     1071         pt_su(:,:) = ptmsu(:,:) 
     1072         ps_i (:,:) = psmi (:,:) 
    10901073         !                              ! ---------------------- ! 
    10911074      ELSEIF( icat == 1 ) THEN          ! input cat = 1          ! 
    10921075         !                              ! ---------------------- ! 
    1093          CALL  ice_var_itd_1cMc( phti(:,1), phts(:,1), pati (:,1),            ph_i(:,:), ph_s(:,:), pa_i (:,:) ) 
    1094 !!         CALL  ice_var_itd_1cMc( phti(:,1), phts(:,1), pati (:,1),            ph_i(:,:), ph_s(:,:), pa_i (:,:), & 
    1095 !!            &                    ptmi(:,1), ptms(:,1), ptmsu(:,1), psmi(:,1), pt_i(:,:), pt_s(:,:), pt_su(:,:), ps_i(:,:) ) 
     1076         CALL  ice_var_itd_1cMc( phti(:,1), phts(:,1), pati (:,1),            ph_i(:,:), ph_s(:,:), pa_i (:,:), & 
     1077            &                    ptmi(:,1), ptms(:,1), ptmsu(:,1), psmi(:,1), pt_i(:,:), pt_s(:,:), pt_su(:,:), ps_i(:,:) ) 
    10961078         !                              ! ---------------------- ! 
    10971079      ELSEIF( jpl == 1 ) THEN           ! output cat = 1         ! 
    10981080         !                              ! ---------------------- ! 
    1099          CALL  ice_var_itd_Nc1c( phti(:,:), phts(:,:), pati (:,:),            ph_i(:,1), ph_s(:,1), pa_i (:,1) ) 
    1100 !!         CALL  ice_var_itd_Nc1c( phti(:,:), phts(:,:), pati (:,:),            ph_i(:,1), ph_s(:,1), pa_i (:,1), & 
    1101 !!            &                    ptmi(:,:), ptms(:,:), ptmsu(:,:), psmi(:,:), pt_i(:,1), pt_s(:,1), pt_su(:,1), ps_i(:,1) )          
     1081         CALL  ice_var_itd_Nc1c( phti(:,:), phts(:,:), pati (:,:),            ph_i(:,1), ph_s(:,1), pa_i (:,1), & 
     1082            &                    ptmi(:,:), ptms(:,:), ptmsu(:,:), psmi(:,:), pt_i(:,1), pt_s(:,1), pt_su(:,1), ps_i(:,1) ) 
    11021083         !                              ! ----------------------- ! 
    11031084      ELSE                              ! input cat /= output cat ! 
     
    11891170         ! == temperature and salinity == ! 
    11901171         ! 
    1191          IF( PRESENT( pt_i ) .OR. PRESENT( pt_s ) .OR. PRESENT( pt_su ) .OR. PRESENT( ps_i ) ) THEN 
    1192             ! 
    1193             ALLOCATE( z1_ai(idim), z1_vi(idim), z1_vs(idim), ztmp(idim) ) 
    1194             ! 
    1195             WHERE( SUM( pa_i(:,:), dim=2 ) /= 0._wp )               ;   z1_ai(:) = 1._wp / SUM( pa_i(:,:), dim=2 ) 
    1196             ELSEWHERE                                               ;   z1_ai(:) = 0._wp 
    1197             END WHERE 
    1198             WHERE( SUM( pa_i(:,:) * ph_i(:,:), dim=2 ) /= 0._wp )   ;   z1_vi(:) = 1._wp / SUM( pa_i(:,:) * ph_i(:,:), dim=2 ) 
    1199             ELSEWHERE                                               ;   z1_vi(:) = 0._wp 
    1200             END WHERE 
    1201             WHERE( SUM( pa_i(:,:) * ph_s(:,:), dim=2 ) /= 0._wp )   ;   z1_vs(:) = 1._wp / SUM( pa_i(:,:) * ph_s(:,:), dim=2 ) 
    1202             ELSEWHERE                                               ;   z1_vs(:) = 0._wp 
    1203             END WHERE 
    1204             ! 
    1205             ! fill all the categories with the same value 
    1206             IF( PRESENT( pt_i  ) ) THEN 
    1207                ztmp(:) = SUM( ptmi (:,:) * pati(:,:) * phti(:,:), dim=2 ) * z1_vi(:) 
    1208                DO jl = 1, jpl 
    1209                   pt_i (:,jl) = ztmp(:) 
    1210                END DO 
    1211             ENDIF 
    1212             IF( PRESENT( pt_s  ) ) THEN 
    1213                ztmp(:) =  SUM( ptms (:,:) * pati(:,:) * phts(:,:), dim=2 ) * z1_vs(:) 
    1214                DO jl = 1, jpl 
    1215                   pt_s (:,jl) = ztmp(:) 
    1216                END DO 
    1217             ENDIF 
    1218             IF( PRESENT( pt_su ) ) THEN 
    1219                ztmp(:) = SUM( ptmsu(:,:) * pati(:,:)            , dim=2 ) * z1_ai(:) 
    1220                DO jl = 1, jpl 
    1221                   pt_su(:,jl) = ztmp(:) 
    1222                END DO 
    1223             ENDIF 
    1224             IF( PRESENT( ps_i  ) ) THEN 
    1225                ztmp(:) = SUM( psmi (:,:) * pati(:,:) * phti(:,:), dim=2 ) * z1_vi(:) 
    1226                DO jl = 1, jpl 
    1227                   ps_i (:,jl) = ztmp(:) 
    1228                END DO 
    1229             ENDIF 
    1230             ! 
    1231             DEALLOCATE( z1_ai, z1_vi, z1_vs, ztmp ) 
    1232             ! 
    1233          ENDIF 
     1172         ALLOCATE( z1_ai(idim), z1_vi(idim), z1_vs(idim), ztmp(idim) ) 
     1173         ! 
     1174         WHERE( SUM( pa_i(:,:), dim=2 ) /= 0._wp )               ;   z1_ai(:) = 1._wp / SUM( pa_i(:,:), dim=2 ) 
     1175         ELSEWHERE                                               ;   z1_ai(:) = 0._wp 
     1176         END WHERE 
     1177         WHERE( SUM( pa_i(:,:) * ph_i(:,:), dim=2 ) /= 0._wp )   ;   z1_vi(:) = 1._wp / SUM( pa_i(:,:) * ph_i(:,:), dim=2 ) 
     1178         ELSEWHERE                                               ;   z1_vi(:) = 0._wp 
     1179         END WHERE 
     1180         WHERE( SUM( pa_i(:,:) * ph_s(:,:), dim=2 ) /= 0._wp )   ;   z1_vs(:) = 1._wp / SUM( pa_i(:,:) * ph_s(:,:), dim=2 ) 
     1181         ELSEWHERE                                               ;   z1_vs(:) = 0._wp 
     1182         END WHERE 
     1183         ! 
     1184         ! fill all the categories with the same value 
     1185         ztmp(:) = SUM( ptmi (:,:) * pati(:,:) * phti(:,:), dim=2 ) * z1_vi(:) 
     1186         DO jl = 1, jpl 
     1187            pt_i (:,jl) = ztmp(:) 
     1188         END DO 
     1189         ztmp(:) = SUM( ptms (:,:) * pati(:,:) * phts(:,:), dim=2 ) * z1_vs(:) 
     1190         DO jl = 1, jpl 
     1191            pt_s (:,jl) = ztmp(:) 
     1192         END DO 
     1193         ztmp(:) = SUM( ptmsu(:,:) * pati(:,:)            , dim=2 ) * z1_ai(:) 
     1194         DO jl = 1, jpl 
     1195            pt_su(:,jl) = ztmp(:) 
     1196         END DO 
     1197         ztmp(:) = SUM( psmi (:,:) * pati(:,:) * phti(:,:), dim=2 ) * z1_vi(:) 
     1198         DO jl = 1, jpl 
     1199            ps_i (:,jl) = ztmp(:) 
     1200         END DO 
     1201         ! 
     1202         DEALLOCATE( z1_ai, z1_vi, z1_vs, ztmp ) 
    12341203         ! 
    12351204      ENDIF 
  • NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src/OCE/BDY/bdy_oce.F90

    r11223 r11507  
    5757      REAL(wp), POINTER, DIMENSION(:,:) ::  h_i    !: Now ice  thickness climatology 
    5858      REAL(wp), POINTER, DIMENSION(:,:) ::  h_s    !: now snow thickness 
     59      REAL(wp), POINTER, DIMENSION(:,:) ::  t_i    !: now ice  temperature 
     60      REAL(wp), POINTER, DIMENSION(:,:) ::  t_s    !: now snow temperature 
     61      REAL(wp), POINTER, DIMENSION(:,:) ::  tsu    !: now surf temperature 
     62      REAL(wp), POINTER, DIMENSION(:,:) ::  s_i    !: now ice  salinity 
    5963#if defined key_top 
    6064      CHARACTER(LEN=20)                   :: cn_obc  !: type of boundary condition to apply 
     
    6872   !! Namelist variables 
    6973   !!---------------------------------------------------------------------- 
     74   !                                                   !!** nambdy ** 
    7075   LOGICAL, PUBLIC            ::   ln_bdy                   !: Unstructured Ocean Boundary Condition 
    7176 
     
    101106   INTEGER , DIMENSION(jp_bdy)          ::   nn_ice_dta     !: = 0 use the initial state as bdy dta ;  
    102107                                                            !: = 1 read it in a NetCDF file 
    103    REAL(wp), DIMENSION(jp_bdy) ::   rn_ice_tem              !: choice of the temperature of incoming sea ice 
    104    REAL(wp), DIMENSION(jp_bdy) ::   rn_ice_sal              !: choice of the salinity    of incoming sea ice 
    105    REAL(wp), DIMENSION(jp_bdy) ::   rn_ice_age              !: choice of the age         of incoming sea ice 
     108   !  
     109   !                                                   !!** nambdy_dta ** 
     110   REAL(wp), DIMENSION(jp_bdy) ::   rice_tem                !: temperature of incoming sea ice 
     111   REAL(wp), DIMENSION(jp_bdy) ::   rice_sal                !: salinity    of incoming sea ice 
     112   REAL(wp), DIMENSION(jp_bdy) ::   rice_age                !: age         of incoming sea ice 
    106113   ! 
    107     
    108114   !!---------------------------------------------------------------------- 
    109115   !! Global variables 
  • NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src/OCE/BDY/bdydta.F90

    r11352 r11507  
    4343   PUBLIC   bdy_dta_init     ! routine called by nemogcm.F90 
    4444 
    45    INTEGER , PARAMETER ::   jpbdyfld  = 10    ! maximum number of files to read  
     45   INTEGER , PARAMETER ::   jpbdyfld  = 14    ! maximum number of files to read  
    4646   INTEGER , PARAMETER ::   jp_bdyssh = 1     !  
    4747   INTEGER , PARAMETER ::   jp_bdyu2d = 2     !  
     
    5353   INTEGER , PARAMETER ::   jp_bdya_i = 8     !  
    5454   INTEGER , PARAMETER ::   jp_bdyh_i = 9     !  
    55    INTEGER , PARAMETER ::   jp_bdyh_S = 10    !  
     55   INTEGER , PARAMETER ::   jp_bdyh_s = 10    !  
     56   INTEGER , PARAMETER ::   jp_bdyt_i = 11    !  
     57   INTEGER , PARAMETER ::   jp_bdyt_s = 12    !  
     58   INTEGER , PARAMETER ::   jp_bdytsu = 13    !  
     59   INTEGER , PARAMETER ::   jp_bdys_i = 14    !  
    5660#if ! defined key_si3 
    5761   INTEGER , PARAMETER ::   jpl = 1 
    5862#endif 
    59                                                              ! =F => baroclinic velocities in 3D boundary conditions 
     63 
    6064!$AGRIF_DO_NOT_TREAT 
    6165   TYPE(FLD), PUBLIC, ALLOCATABLE, DIMENSION(:,:), TARGET ::   bf   ! structure of input fields (file informations, fields read) 
     
    181185                        ii = idx_bdy(jbdy)%nbi(ib,igrd) 
    182186                        ij = idx_bdy(jbdy)%nbj(ib,igrd) 
    183                         dta_bdy(jbdy)%a_i (ib,jl) =  a_i(ii,ij,jl) * tmask(ii,ij,1)  
    184                         dta_bdy(jbdy)%h_i (ib,jl) =  h_i(ii,ij,jl) * tmask(ii,ij,1)  
    185                         dta_bdy(jbdy)%h_s (ib,jl) =  h_s(ii,ij,jl) * tmask(ii,ij,1)  
     187                        dta_bdy(jbdy)%a_i(ib,jl) =  a_i (ii,ij,jl) * tmask(ii,ij,1)  
     188                        dta_bdy(jbdy)%h_i(ib,jl) =  h_i (ii,ij,jl) * tmask(ii,ij,1)  
     189                        dta_bdy(jbdy)%h_s(ib,jl) =  h_s (ii,ij,jl) * tmask(ii,ij,1)  
     190                        dta_bdy(jbdy)%t_i(ib,jl) =  SUM(t_i (ii,ij,:,jl)) * r1_nlay_i * tmask(ii,ij,1)  
     191                        dta_bdy(jbdy)%t_s(ib,jl) =  SUM(t_s (ii,ij,:,jl)) * r1_nlay_s * tmask(ii,ij,1) 
     192                        dta_bdy(jbdy)%tsu(ib,jl) =  t_su(ii,ij,jl) * tmask(ii,ij,1)  
     193                        dta_bdy(jbdy)%s_i(ib,jl) =  s_i (ii,ij,jl) * tmask(ii,ij,1)  
    186194                     END DO 
    187195                  END DO 
     
    280288 
    281289#if defined key_si3 
    282          ! ice: convert N-cat fields (input) into jpl-cat (output) 
    283290         IF( dta_alias%lneed_ice ) THEN 
    284             ipl = SIZE(bf_alias(jp_bdya_i)%fnow, 3) 
     291            ! fill temperature and salinity arrays 
     292            IF( TRIM(bf_alias(jp_bdyt_i)%clrootname) == 'NOT USED' )   bf_alias(jp_bdyt_i)%fnow(:,1,:) = rice_tem(jbdy) 
     293            IF( TRIM(bf_alias(jp_bdyt_s)%clrootname) == 'NOT USED' )   bf_alias(jp_bdyt_s)%fnow(:,1,:) = rice_tem(jbdy) 
     294            IF( TRIM(bf_alias(jp_bdytsu)%clrootname) == 'NOT USED' )   bf_alias(jp_bdytsu)%fnow(:,1,:) = rice_tem(jbdy) 
     295            IF( TRIM(bf_alias(jp_bdys_i)%clrootname) == 'NOT USED' )   bf_alias(jp_bdys_i)%fnow(:,1,:) = rice_sal(jbdy) 
     296            ! if T_su is read and not T_i, set T_i = (T_su + T_freeze)/2 
     297            IF( TRIM(bf_alias(jp_bdytsu)%clrootname) /= 'NOT USED' .AND. TRIM(bf_alias(jp_bdyt_i)%clrootname) == 'NOT USED' ) & 
     298               &   bf_alias(jp_bdyt_i)%fnow(:,1,:) = 0.5_wp * ( bf_alias(jp_bdytsu)%fnow(:,1,:) + 271.15 ) 
     299            ! if T_su is read and not T_s, set T_s = T_su 
     300            IF( TRIM(bf_alias(jp_bdytsu)%clrootname) /= 'NOT USED' .AND. TRIM(bf_alias(jp_bdyt_s)%clrootname) == 'NOT USED' ) & 
     301               &   bf_alias(jp_bdyt_s)%fnow(:,1,:) = bf_alias(jp_bdytsu)%fnow(:,1,:) 
     302            ! if T_s is read and not T_su, set T_su = T_s 
     303            IF( TRIM(bf_alias(jp_bdyt_s)%clrootname) /= 'NOT USED' .AND. TRIM(bf_alias(jp_bdytsu)%clrootname) == 'NOT USED' ) & 
     304               &   bf_alias(jp_bdytsu)%fnow(:,1,:) = bf_alias(jp_bdyt_s)%fnow(:,1,:) 
     305            ! if T_s is read and not T_i, set T_i = (T_s + T_freeze)/2 
     306            IF( TRIM(bf_alias(jp_bdyt_s)%clrootname) /= 'NOT USED' .AND. TRIM(bf_alias(jp_bdyt_i)%clrootname) == 'NOT USED' ) & 
     307               &   bf_alias(jp_bdyt_i)%fnow(:,1,:) = 0.5_wp * ( bf_alias(jp_bdyt_s)%fnow(:,1,:) + 271.15 ) 
     308             
     309            ! convert N-cat fields (input) into jpl-cat (output) 
     310            ipl = SIZE(bf_alias(jp_bdya_i)%fnow, 3)             
    285311            IF( ipl /= jpl ) THEN      ! ice: convert N-cat fields (input) into jpl-cat (output) 
    286                CALL ice_var_itd(bf_alias(jp_bdyh_i)%fnow(:,1,:), bf_alias(jp_bdyh_s)%fnow(:,1,:), bf_alias(jp_bdya_i)%fnow(:,1,:), & 
    287                   &              dta_alias%h_i               , dta_alias%h_s               , dta_alias%a_i                 ) 
     312               CALL ice_var_itd( bf_alias(jp_bdyh_i)%fnow(:,1,:), bf_alias(jp_bdyh_s)%fnow(:,1,:), bf_alias(jp_bdya_i)%fnow(:,1,:), & 
     313                  &              dta_alias%h_i                  , dta_alias%h_s                  , dta_alias%a_i                  , & 
     314                  &              bf_alias(jp_bdyt_i)%fnow(:,1,:), bf_alias(jp_bdyt_s)%fnow(:,1,:), & 
     315                  &              bf_alias(jp_bdytsu)%fnow(:,1,:), bf_alias(jp_bdys_i)%fnow(:,1,:), & 
     316                  &              dta_alias%t_i                  , dta_alias%t_s                  , & 
     317                  &              dta_alias%tsu                  , dta_alias%s_i ) 
    288318            ENDIF 
    289319         ENDIF 
     
    332362      !                                                         ! =F => baroclinic velocities in 3D boundary data 
    333363      LOGICAL                                ::   ln_zinterp    ! =T => requires a vertical interpolation of the bdydta 
     364      REAL(wp)                               ::   rn_ice_tem, rn_ice_sal, rn_ice_age 
    334365      INTEGER                                ::   ipk,ipl       ! 
    335366      INTEGER                                ::   idvar         ! variable ID 
     
    341372      LOGICAL                                ::   llneed        ! 
    342373      LOGICAL                                ::   llread        ! 
    343       TYPE(FLD_N), DIMENSION(1), TARGET ::   bn_tem, bn_sal, bn_u3d, bn_v3d   ! must be an array to be used with fld_fill 
    344       TYPE(FLD_N), DIMENSION(1), TARGET ::   bn_ssh, bn_u2d, bn_v2d           ! informations about the fields to be read 
    345       TYPE(FLD_N), DIMENSION(1), TARGET ::   bn_a_i, bn_h_i, bn_h_s       
     374      TYPE(FLD_N), DIMENSION(1), TARGET  ::   bn_tem, bn_sal, bn_u3d, bn_v3d   ! must be an array to be used with fld_fill 
     375      TYPE(FLD_N), DIMENSION(1), TARGET  ::   bn_ssh, bn_u2d, bn_v2d           ! informations about the fields to be read 
     376      TYPE(FLD_N), DIMENSION(1), TARGET  ::   bn_a_i, bn_h_i, bn_h_s, bn_t_i, bn_t_s, bn_tsu, bn_s_i        
    346377      TYPE(FLD_N), DIMENSION(:), POINTER ::   bn_alias                        ! must be an array to be used with fld_fill 
    347378      TYPE(FLD  ), DIMENSION(:), POINTER ::   bf_alias 
    348379      ! 
    349380      NAMELIST/nambdy_dta/ cn_dir, bn_tem, bn_sal, bn_u3d, bn_v3d, bn_ssh, bn_u2d, bn_v2d  
    350       NAMELIST/nambdy_dta/ bn_a_i, bn_h_i, bn_h_s 
     381      NAMELIST/nambdy_dta/ bn_a_i, bn_h_i, bn_h_s, bn_t_i, bn_t_s, bn_tsu, bn_s_i 
     382      NAMELIST/nambdy_dta/ rn_ice_tem, rn_ice_sal, rn_ice_age 
    351383      NAMELIST/nambdy_dta/ ln_full_vel, ln_zinterp 
    352384      !!--------------------------------------------------------------------------- 
     
    402434         ENDIF 
    403435 
     436         ! temp, sal and age of incoming ice 
     437         rice_tem(jbdy) = rn_ice_tem 
     438         rice_sal(jbdy) = rn_ice_sal 
     439         rice_age(jbdy) = rn_ice_age 
     440          
     441          
    404442         DO jfld = 1, jpbdyfld 
    405443 
     
    497535            !          ice 
    498536            ! ===================== 
     537            IF(  jfld == jp_bdya_i .OR. jfld == jp_bdyh_i .OR. jfld == jp_bdyh_s .OR. & 
     538               & jfld == jp_bdyt_i .OR. jfld == jp_bdyt_s .OR. jfld == jp_bdytsu .OR. jfld == jp_bdys_i ) THEN 
     539               igrd = 1                                                    ! T point 
     540               ipk = ipl                                                   ! jpl-cat data 
     541               llneed = dta_bdy(jbdy)%lneed_ice                            ! ice will be needed 
     542               llread = nn_ice_dta(jbdy) == 1                              ! get data from NetCDF file 
     543               iszdim = idx_bdy(jbdy)%nblen(igrd)                          ! length of this bdy on this MPI processus 
     544            ENDIF 
    499545            IF( jfld == jp_bdya_i ) THEN 
    500546               cl3 = 'a_i' 
    501                igrd = 1                                                    ! T point 
    502                ipk = ipl                                                   !  
    503                llneed = dta_bdy(jbdy)%lneed_ice                            ! dta_bdy(jbdy)%a_i will be needed 
    504                llread = nn_ice_dta(jbdy) == 1                              ! get data from NetCDF file 
    505                bf_alias => bf(jp_bdya_i,jbdy:jbdy)                         ! alias for ssh structure of bdy number jbdy 
    506                bn_alias => bn_a_i                                          ! alias for ssh structure of nambdy_dta  
    507                iszdim = idx_bdy(jbdy)%nblen(igrd)                          ! length of this bdy on this MPI processus 
    508            ENDIF 
     547               bf_alias => bf(jp_bdya_i,jbdy:jbdy)                         ! alias for a_i structure of bdy number jbdy 
     548               bn_alias => bn_a_i                                          ! alias for a_i structure of nambdy_dta  
     549            ENDIF 
    509550            IF( jfld == jp_bdyh_i ) THEN 
    510551               cl3 = 'h_i' 
    511                igrd = 1                                                    ! T point 
    512                ipk = ipl                                                   !  
    513                llneed = dta_bdy(jbdy)%lneed_ice                            ! dta_bdy(jbdy)%h_i will be needed 
    514                llread = nn_ice_dta(jbdy) == 1                              ! get data from NetCDF file 
    515                bf_alias => bf(jp_bdyh_i,jbdy:jbdy)                         ! alias for ssh structure of bdy number jbdy 
    516                bn_alias => bn_h_i                                          ! alias for ssh structure of nambdy_dta  
    517                iszdim = idx_bdy(jbdy)%nblen(igrd)                          ! length of this bdy on this MPI processus 
     552               bf_alias => bf(jp_bdyh_i,jbdy:jbdy)                         ! alias for h_i structure of bdy number jbdy 
     553               bn_alias => bn_h_i                                          ! alias for h_i structure of nambdy_dta  
    518554            ENDIF 
    519555            IF( jfld == jp_bdyh_s ) THEN 
    520556               cl3 = 'h_s' 
    521                igrd = 1                                                    ! T point 
    522                ipk = ipl                                                   !  
    523                llneed = dta_bdy(jbdy)%lneed_ice                            ! dta_bdy(jbdy)%h_s will be needed 
    524                llread = nn_ice_dta(jbdy) == 1                              ! get data from NetCDF file 
    525                bf_alias => bf(jp_bdyh_s,jbdy:jbdy)                         ! alias for ssh structure of bdy number jbdy 
    526                bn_alias => bn_h_s                                          ! alias for ssh structure of nambdy_dta  
    527                iszdim = idx_bdy(jbdy)%nblen(igrd)                          ! length of this bdy on this MPI processus 
     557               bf_alias => bf(jp_bdyh_s,jbdy:jbdy)                         ! alias for h_s structure of bdy number jbdy 
     558               bn_alias => bn_h_s                                          ! alias for h_s structure of nambdy_dta  
     559            ENDIF 
     560            IF( jfld == jp_bdyt_i ) THEN 
     561               cl3 = 't_i' 
     562               bf_alias => bf(jp_bdyt_i,jbdy:jbdy)                         ! alias for t_i structure of bdy number jbdy 
     563               bn_alias => bn_t_i                                          ! alias for t_i structure of nambdy_dta  
     564            ENDIF 
     565            IF( jfld == jp_bdyt_s ) THEN 
     566               cl3 = 't_s' 
     567               bf_alias => bf(jp_bdyt_s,jbdy:jbdy)                         ! alias for t_s structure of bdy number jbdy 
     568               bn_alias => bn_t_s                                          ! alias for t_s structure of nambdy_dta  
     569            ENDIF 
     570            IF( jfld == jp_bdytsu ) THEN 
     571               cl3 = 'tsu' 
     572               bf_alias => bf(jp_bdytsu,jbdy:jbdy)                         ! alias for tsu structure of bdy number jbdy 
     573               bn_alias => bn_tsu                                          ! alias for tsu structure of nambdy_dta  
     574            ENDIF 
     575            IF( jfld == jp_bdys_i ) THEN 
     576               cl3 = 's_i' 
     577               bf_alias => bf(jp_bdys_i,jbdy:jbdy)                         ! alias for s_i structure of bdy number jbdy 
     578               bn_alias => bn_s_i                                          ! alias for s_i structure of nambdy_dta  
    528579            ENDIF 
    529580 
     
    542593 
    543594               ! associate the pointer and get rid of the dimensions with a size equal to 1 
    544                IF( jfld == jp_bdyssh           ) dta_bdy(jbdy)%ssh => bf_alias(1)%fnow(:,1,1) 
    545                IF( jfld == jp_bdyu2d           ) dta_bdy(jbdy)%u2d => bf_alias(1)%fnow(:,1,1) 
    546                IF( jfld == jp_bdyv2d           ) dta_bdy(jbdy)%v2d => bf_alias(1)%fnow(:,1,1) 
    547                IF( jfld == jp_bdyu3d           ) dta_bdy(jbdy)%u3d => bf_alias(1)%fnow(:,1,:) 
    548                IF( jfld == jp_bdyv3d           ) dta_bdy(jbdy)%v3d => bf_alias(1)%fnow(:,1,:) 
    549                IF( jfld == jp_bdytem           ) dta_bdy(jbdy)%tem => bf_alias(1)%fnow(:,1,:) 
    550                IF( jfld == jp_bdysal           ) dta_bdy(jbdy)%sal => bf_alias(1)%fnow(:,1,:) 
     595               IF( jfld == jp_bdyssh )        dta_bdy(jbdy)%ssh => bf_alias(1)%fnow(:,1,1) 
     596               IF( jfld == jp_bdyu2d )        dta_bdy(jbdy)%u2d => bf_alias(1)%fnow(:,1,1) 
     597               IF( jfld == jp_bdyv2d )        dta_bdy(jbdy)%v2d => bf_alias(1)%fnow(:,1,1) 
     598               IF( jfld == jp_bdyu3d )        dta_bdy(jbdy)%u3d => bf_alias(1)%fnow(:,1,:) 
     599               IF( jfld == jp_bdyv3d )        dta_bdy(jbdy)%v3d => bf_alias(1)%fnow(:,1,:) 
     600               IF( jfld == jp_bdytem )        dta_bdy(jbdy)%tem => bf_alias(1)%fnow(:,1,:) 
     601               IF( jfld == jp_bdysal )        dta_bdy(jbdy)%sal => bf_alias(1)%fnow(:,1,:) 
    551602               IF( jfld == jp_bdya_i ) THEN 
    552603                  IF( ipk == jpl ) THEN   ;   dta_bdy(jbdy)%a_i => bf_alias(1)%fnow(:,1,:) 
     
    562613                  IF( ipk == jpl ) THEN   ;   dta_bdy(jbdy)%h_s => bf_alias(1)%fnow(:,1,:) 
    563614                  ELSE                    ;   ALLOCATE( dta_bdy(jbdy)%h_s(iszdim,jpl) ) 
     615                  ENDIF 
     616               ENDIF 
     617               IF( jfld == jp_bdyt_i ) THEN 
     618                  IF( ipk == jpl ) THEN   ;   dta_bdy(jbdy)%t_i => bf_alias(1)%fnow(:,1,:) 
     619                  ELSE                    ;   ALLOCATE( dta_bdy(jbdy)%t_i(iszdim,jpl) ) 
     620                  ENDIF 
     621               ENDIF 
     622               IF( jfld == jp_bdyt_s ) THEN 
     623                  IF( ipk == jpl ) THEN   ;   dta_bdy(jbdy)%t_s => bf_alias(1)%fnow(:,1,:) 
     624                  ELSE                    ;   ALLOCATE( dta_bdy(jbdy)%t_s(iszdim,jpl) ) 
     625                  ENDIF 
     626               ENDIF 
     627               IF( jfld == jp_bdytsu ) THEN 
     628                  IF( ipk == jpl ) THEN   ;   dta_bdy(jbdy)%tsu => bf_alias(1)%fnow(:,1,:) 
     629                  ELSE                    ;   ALLOCATE( dta_bdy(jbdy)%tsu(iszdim,jpl) ) 
     630                  ENDIF 
     631               ENDIF 
     632               IF( jfld == jp_bdys_i ) THEN 
     633                  IF( ipk == jpl ) THEN   ;   dta_bdy(jbdy)%s_i => bf_alias(1)%fnow(:,1,:) 
     634                  ELSE                    ;   ALLOCATE( dta_bdy(jbdy)%s_i(iszdim,jpl) ) 
    564635                  ENDIF 
    565636               ENDIF 
  • NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src/OCE/BDY/bdyice.F90

    r11501 r11507  
    154154            zwgt  = idx%nbw(i_bdy,jgrd) 
    155155            zwgt1 = 1.e0 - idx%nbw(i_bdy,jgrd) 
    156             a_i(ji,jj,jl) = ( a_i(ji,jj,jl) * zwgt1 + dta%a_i(i_bdy,jl) * zwgt ) * tmask(ji,jj,1)  ! Leads fraction  
    157             h_i(ji,jj,jl) = ( h_i(ji,jj,jl) * zwgt1 + dta%h_i(i_bdy,jl) * zwgt ) * tmask(ji,jj,1)  ! Ice depth  
    158             h_s(ji,jj,jl) = ( h_s(ji,jj,jl) * zwgt1 + dta%h_s(i_bdy,jl) * zwgt ) * tmask(ji,jj,1)  ! Snow depth 
    159  
     156            a_i (ji,jj,  jl) = ( a_i (ji,jj,  jl) * zwgt1 + dta%a_i(i_bdy,jl) * zwgt ) * tmask(ji,jj,1)  ! Ice  concentration  
     157            h_i (ji,jj,  jl) = ( h_i (ji,jj,  jl) * zwgt1 + dta%h_i(i_bdy,jl) * zwgt ) * tmask(ji,jj,1)  ! Ice  depth  
     158            h_s (ji,jj,  jl) = ( h_s (ji,jj,  jl) * zwgt1 + dta%h_s(i_bdy,jl) * zwgt ) * tmask(ji,jj,1)  ! Snow depth 
     159            t_i (ji,jj,:,jl) = ( t_i (ji,jj,:,jl) * zwgt1 + dta%t_i(i_bdy,jl) * zwgt ) * tmask(ji,jj,1)  ! Ice  temperature 
     160            t_s (ji,jj,:,jl) = ( t_s (ji,jj,:,jl) * zwgt1 + dta%t_s(i_bdy,jl) * zwgt ) * tmask(ji,jj,1)  ! Snow temperature 
     161            t_su(ji,jj,  jl) = ( t_su(ji,jj,  jl) * zwgt1 + dta%tsu(i_bdy,jl) * zwgt ) * tmask(ji,jj,1)  ! Surf temperature 
     162            s_i (ji,jj,  jl) = ( s_i (ji,jj,  jl) * zwgt1 + dta%s_i(i_bdy,jl) * zwgt ) * tmask(ji,jj,1)  ! Ice  salinity 
     163            sz_i(ji,jj,:,jl) =   s_i (ji,jj,  jl) 
     164            ! 
    160165            ! ----------------- 
    161166            ! Pathological case 
     
    208213            IF( a_i(ib,jb,jl) > 0._wp ) THEN   ! there is ice at the boundary 
    209214               ! 
    210                a_i(ji,jj,jl) = a_i(ib,jb,jl) ! concentration 
    211                h_i(ji,jj,jl) = h_i(ib,jb,jl) ! thickness ice 
    212                h_s(ji,jj,jl) = h_s(ib,jb,jl) ! thickness snw 
     215               a_i (ji,jj,  jl) = a_i (ib,jb,  jl) 
     216               h_i (ji,jj,  jl) = h_i (ib,jb,  jl) 
     217               h_s (ji,jj,  jl) = h_s (ib,jb,  jl) 
     218               t_i (ji,jj,:,jl) = t_i (ib,jb,:,jl) 
     219               t_s (ji,jj,:,jl) = t_s (ib,jb,:,jl) 
     220               t_su(ji,jj,  jl) = t_su(ib,jb,  jl) 
     221               s_i (ji,jj,  jl) = s_i (ib,jb,  jl) 
     222               sz_i(ji,jj,:,jl) = sz_i(ib,jb,:,jl) 
    213223               ! 
    214224               SELECT CASE( jpbound ) 
    215225                  ! 
    216226               CASE( 0 )   ! velocity is inward 
    217                   ! 
    218                   oa_i(ji,jj,  jl) = rn_ice_age(jbdy) * a_i(ji,jj,jl) ! age 
    219                   a_ip(ji,jj,  jl) = 0._wp                            ! pond concentration 
    220                   v_ip(ji,jj,  jl) = 0._wp                            ! pond volume 
    221                   t_su(ji,jj,  jl) = rn_ice_tem(jbdy)                 ! temperature surface 
    222                   t_s (ji,jj,:,jl) = rn_ice_tem(jbdy)                 ! temperature snw 
    223                   t_i (ji,jj,:,jl) = rn_ice_tem(jbdy)                 ! temperature ice 
    224                   s_i (ji,jj,  jl) = rn_ice_sal(jbdy)                 ! salinity 
    225                   sz_i(ji,jj,:,jl) = rn_ice_sal(jbdy)                 ! salinity profile 
    226                   ! 
     227                  oa_i(ji,jj,jl) = rice_age(jbdy) * a_i(ji,jj,jl)   ! age 
     228                  a_ip(ji,jj,jl) = 0._wp                            ! pond concentration 
     229                  v_ip(ji,jj,jl) = 0._wp                            ! pond volume 
    227230               CASE( 1 )   ! velocity is outward 
    228                   ! 
    229                   oa_i(ji,jj,  jl) = oa_i(ib,jb,  jl) ! age 
    230                   a_ip(ji,jj,  jl) = a_ip(ib,jb,  jl) ! pond concentration 
    231                   v_ip(ji,jj,  jl) = v_ip(ib,jb,  jl) ! pond volume 
    232                   t_su(ji,jj,  jl) = t_su(ib,jb,  jl) ! temperature surface 
    233                   t_s (ji,jj,:,jl) = t_s (ib,jb,:,jl) ! temperature snw 
    234                   t_i (ji,jj,:,jl) = t_i (ib,jb,:,jl) ! temperature ice 
    235                   s_i (ji,jj,  jl) = s_i (ib,jb,  jl) ! salinity 
    236                   sz_i(ji,jj,:,jl) = sz_i(ib,jb,:,jl) ! salinity profile 
    237                   ! 
     231                  oa_i(ji,jj,jl) = oa_i(ib,jb,jl) ! age 
     232                  a_ip(ji,jj,jl) = a_ip(ib,jb,jl) ! pond concentration 
     233                  v_ip(ji,jj,jl) = v_ip(ib,jb,jl) ! pond volume 
    238234               END SELECT 
    239235               ! 
     
    374370                     jj    = idx_bdy(jbdy)%nbj(i_bdy,jgrd) 
    375371                     zflag = idx_bdy(jbdy)%flagv(i_bdy,jgrd) 
    376                      !    ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨     !  ¨¨¨¨ïce¨¨¨(jj+1)¨¨     ! ¨¨¨¨¨¨ö¨¨¨¨(jj+1)        
     372                     !                         !      ice   (jj+1)       !       o    (jj+1) 
    377373                     !       ^    (jj  )       !       ^    (jj  )       !       ^    (jj  )        
    378374                     !      ice   (jj  )       !       o    (jj  )       !       o    (jj  )        
  • NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src/OCE/BDY/bdyini.F90

    r11356 r11507  
    6767         &             ln_tra_dmp, ln_dyn3d_dmp, rn_time_dmp, rn_time_dmp_out, & 
    6868         &             cn_ice, nn_ice_dta,                                     & 
    69          &             rn_ice_tem, rn_ice_sal, rn_ice_age,                     & 
    7069         &             ln_vol, nn_volctl, nn_rimwidth 
    7170         ! 
     
    9493      cn_ice         (2:jp_bdy) = cn_ice         (1) 
    9594      nn_ice_dta     (2:jp_bdy) = nn_ice_dta     (1) 
    96       rn_ice_tem     (2:jp_bdy) = rn_ice_tem     (1) 
    97       rn_ice_sal     (2:jp_bdy) = rn_ice_sal     (1) 
    98       rn_ice_age     (2:jp_bdy) = rn_ice_age     (1) 
    9995      REWIND( numnam_cfg )              ! Namelist nambdy in configuration namelist :Unstructured open boundaries 
    10096      READ  ( numnam_cfg, nambdy, IOSTAT = ios, ERR = 902 ) 
     
    328324            CASE DEFAULT   ;   CALL ctl_stop( 'nn_ice_dta must be 0 or 1' ) 
    329325            END SELECT 
    330             WRITE(numout,*) 
    331             WRITE(numout,*) '      tem of bdy sea-ice = ', rn_ice_tem(ib_bdy)          
    332             WRITE(numout,*) '      sal of bdy sea-ice = ', rn_ice_sal(ib_bdy)          
    333             WRITE(numout,*) '      age of bdy sea-ice = ', rn_ice_age(ib_bdy)          
    334326         ENDIF 
    335327#else 
  • NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src/OCE/DOM/dommsk.F90

    r11317 r11507  
    100100         &             ln_tra_dmp, ln_dyn3d_dmp, rn_time_dmp, rn_time_dmp_out, & 
    101101         &             cn_ice, nn_ice_dta,                                     & 
    102          &             rn_ice_tem, rn_ice_sal, rn_ice_age,                     & 
    103102         &             ln_vol, nn_volctl, nn_rimwidth 
    104103      !!--------------------------------------------------------------------- 
  • NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src/OCE/LBC/mppini.F90

    r11398 r11507  
    167167           &             ln_tra_dmp, ln_dyn3d_dmp, rn_time_dmp, rn_time_dmp_out, & 
    168168           &             cn_ice, nn_ice_dta,                                     & 
    169            &             rn_ice_tem, rn_ice_sal, rn_ice_age,                     & 
    170169           &             ln_vol, nn_volctl, nn_rimwidth 
    171170      NAMELIST/nammpp/ jpni, jpnj, ln_nnogather, ln_listonly 
Note: See TracChangeset for help on using the changeset viewer.