Changeset 3785
- Timestamp:
- 2013-02-10T08:53:27+01:00 (11 years ago)
- Location:
- branches/2012/dev_MERGE_2012/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2012/dev_MERGE_2012/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90
r3764 r3785 14 14 15 15 !!---------------------------------------------------------------------- 16 !! 'key_asminc' : Switch on the assimilation increment interface16 !! 'key_asminc' : Switch on the assimilation increment interface 17 17 !!---------------------------------------------------------------------- 18 !! asm_inc_init : Initialize the increment arrays and IAU weights19 !! calc_date : Compute the calendar date YYYYMMDD on a given step20 !! tra_asm_inc : Apply the tracer (T and S) increments21 !! dyn_asm_inc : Apply the dynamic (u and v) increments22 !! ssh_asm_inc : Apply the SSH increment23 !! seaice_asm_inc 18 !! asm_inc_init : Initialize the increment arrays and IAU weights 19 !! calc_date : Compute the calendar date YYYYMMDD on a given step 20 !! tra_asm_inc : Apply the tracer (T and S) increments 21 !! dyn_asm_inc : Apply the dynamic (u and v) increments 22 !! ssh_asm_inc : Apply the SSH increment 23 !! seaice_asm_inc : Apply the seaice increment 24 24 !!---------------------------------------------------------------------- 25 25 USE wrk_nemo ! Memory Allocation 26 26 USE par_oce ! Ocean space and time domain variables 27 27 USE dom_oce ! Ocean space and time domain 28 USE domvvl ! domain: variable volume level 28 29 USE oce ! Dynamics and active tracers defined in memory 29 30 USE ldfdyn_oce ! ocean dynamics: lateral physics … … 35 36 USE in_out_manager ! I/O manager 36 37 USE lib_mpp ! MPP library 37 #if defined key_lim338 USE ice ! LIM339 #endif40 38 #if defined key_lim2 41 39 USE ice_2 ! LIM2 42 40 #endif 43 41 USE sbc_oce ! Surface boundary condition variables. 44 USE domvvl45 42 46 43 IMPLICIT NONE … … 95 92 # include "ldfdyn_substitute.h90" 96 93 # include "vectopt_loop_substitute.h90" 97 98 94 !!---------------------------------------------------------------------- 99 95 !! NEMO/OPA 3.3 , NEMO Consortium (2010) … … 113 109 !! ** Action : 114 110 !!---------------------------------------------------------------------- 115 !! 116 !! 117 INTEGER :: ji,jj,jk 111 INTEGER :: ji, jj, jk 118 112 INTEGER :: jt 119 113 INTEGER :: imid … … 961 955 END SUBROUTINE ssh_asm_inc 962 956 957 963 958 SUBROUTINE seaice_asm_inc( kt, kindic ) 964 959 !!---------------------------------------------------------------------- … … 971 966 !! ** Action : 972 967 !! 973 !! History : 974 !! ! 07-2011 (D. Lea) Initial version based on ssh_asm_inc 975 !!---------------------------------------------------------------------- 976 968 !!---------------------------------------------------------------------- 977 969 IMPLICIT NONE 978 979 !! * Arguments 980 INTEGER, INTENT(IN) :: kt ! Current time step 981 INTEGER, OPTIONAL, INTENT(IN) :: kindic ! flag for disabling the deallocation 982 983 !! * Local declarations 984 INTEGER :: it 985 REAL(wp) :: zincwgt ! IAU weight for current time step 986 987 #if defined key_lim3 || defined key_lim2 988 REAL(wp), DIMENSION(jpi,jpj) :: zofrld, zohicif, zseaicendg, zhicifinc ! LIM 989 REAL(wp) :: zhicifmin=0.5_wp ! ice minimum depth in metres 990 991 #endif 992 970 ! 971 INTEGER, INTENT(in) :: kt ! Current time step 972 INTEGER, INTENT(in), OPTIONAL :: kindic ! flag for disabling the deallocation 973 ! 974 INTEGER :: it 975 REAL(wp) :: zincwgt ! IAU weight for current time step 976 #if defined key_lim2 977 REAL(wp), DIMENSION(jpi,jpj) :: zofrld, zohicif, zseaicendg, zhicifinc ! LIM 978 REAL(wp) :: zhicifmin = 0.5_wp ! ice minimum depth in metres 979 #endif 980 !!---------------------------------------------------------------------- 993 981 994 982 IF ( ln_asmiau ) THEN … … 1011 999 ENDIF 1012 1000 1013 #if defined key_lim3 || defined key_lim2 1014 1015 zofrld(:,:)=frld(:,:) 1016 zohicif(:,:)=hicif(:,:) 1017 1018 frld = MIN( MAX( frld(:,:) - seaice_bkginc(:,:) * zincwgt, 0.0_wp), 1.0_wp) 1001 ! Sea-ice : LIM-3 case (to add) 1002 1003 #if defined key_lim2 1004 ! Sea-ice : LIM-2 case 1005 zofrld (:,:) = frld(:,:) 1006 zohicif(:,:) = hicif(:,:) 1007 ! 1008 frld = MIN( MAX( frld (:,:) - seaice_bkginc(:,:) * zincwgt, 0.0_wp), 1.0_wp) 1019 1009 pfrld = MIN( MAX( pfrld(:,:) - seaice_bkginc(:,:) * zincwgt, 0.0_wp), 1.0_wp) 1020 1010 fr_i(:,:) = 1.0_wp - frld(:,:) ! adjust ice fraction 1021 1022 zseaicendg(:,:) =zofrld(:,:) - frld(:,:)! find out actual sea ice nudge applied1023 1011 ! 1012 zseaicendg(:,:) = zofrld(:,:) - frld(:,:) ! find out actual sea ice nudge applied 1013 ! 1024 1014 ! Nudge sea ice depth to bring it up to a required minimum depth 1025 1026 1015 WHERE( zseaicendg(:,:) > 0.0_wp .AND. hicif(:,:) < zhicifmin ) 1027 1016 zhicifinc(:,:) = (zhicifmin - hicif(:,:)) * zincwgt … … 1029 1018 zhicifinc(:,:) = 0.0_wp 1030 1019 END WHERE 1031 1032 ! nudge ice depth 1033 hicif(:,:)=hicif(:,:) + zhicifinc(:,:) 1034 phicif(:,:)=phicif(:,:) + zhicifinc(:,:) 1035 1036 ! seaice salinity balancing (to add) 1037 1020 ! 1021 ! nudge ice depth 1022 hicif (:,:) = hicif (:,:) + zhicifinc(:,:) 1023 phicif(:,:) = phicif(:,:) + zhicifinc(:,:) 1024 ! 1025 ! seaice salinity balancing (to add) 1038 1026 #endif 1039 1027 1040 1028 #if defined key_cice 1041 1042 ! Pass ice increment tendency into CICE 1029 ! Sea-ice : CICE case. Pass ice increment tendency into CICE 1043 1030 ndaice_da(:,:) = seaice_bkginc(:,:) * zincwgt / rdt 1044 1045 1031 #endif 1046 1032 … … 1052 1038 1053 1039 #if defined key_cice 1054 1055 ! Zero ice increment tendency into CICE 1040 ! Sea-ice : CICE case. Zero ice increment tendency into CICE 1056 1041 ndaice_da(:,:) = 0.0_wp 1057 1058 1042 #endif 1059 1043 … … 1070 1054 neuler = 0 ! Force Euler forward step 1071 1055 1072 #if defined key_lim3 || defined key_lim2 1073 1056 ! Sea-ice : LIM-3 case (to add) 1057 1058 #if defined key_lim2 1059 ! Sea-ice : LIM-2 case. 1074 1060 zofrld(:,:)=frld(:,:) 1075 1061 zohicif(:,:)=hicif(:,:) 1076 1062 ! 1077 1063 ! Initialize the now fields the background + increment 1078 1079 frld(:,:) = MIN( MAX( frld(:,:) - seaice_bkginc(:,:), 0.0_wp), 1.0_wp) 1064 frld (:,:) = MIN( MAX( frld(:,:) - seaice_bkginc(:,:), 0.0_wp), 1.0_wp) 1080 1065 pfrld(:,:) = frld(:,:) 1081 fr_i(:,:) = 1.0_wp - frld(:,:) ! adjust ice fraction 1082 1083 zseaicendg(:,:)=zofrld(:,:) - frld(:,:) ! find out actual sea ice nudge applied 1084 1066 fr_i (:,:) = 1.0_wp - frld(:,:) ! adjust ice fraction 1067 zseaicendg(:,:) = zofrld(:,:) - frld(:,:) ! find out actual sea ice nudge applied 1068 ! 1085 1069 ! Nudge sea ice depth to bring it up to a required minimum depth 1086 1087 1070 WHERE( zseaicendg(:,:) > 0.0_wp .AND. hicif(:,:) < zhicifmin ) 1088 1071 zhicifinc(:,:) = (zhicifmin - hicif(:,:)) * zincwgt … … 1090 1073 zhicifinc(:,:) = 0.0_wp 1091 1074 END WHERE 1092 1093 ! nudge ice depth 1094 hicif(:,:)=hicif(:,:) + zhicifinc(:,:) 1095 phicif(:,:)=phicif(:,:) 1096 1097 ! seaice salinity balancing (to add) 1098 1075 ! 1076 ! nudge ice depth 1077 hicif (:,:) = hicif (:,:) + zhicifinc(:,:) 1078 phicif(:,:) = phicif(:,:) 1079 ! 1080 ! seaice salinity balancing (to add) 1099 1081 #endif 1100 1082 1101 1083 #if defined key_cice 1102 1103 ! Pass ice increment tendency into CICE - is this correct? 1084 ! Sea-ice : CICE case. Pass ice increment tendency into CICE - is this correct? 1104 1085 ndaice_da(:,:) = seaice_bkginc(:,:) / rdt 1105 1106 1086 #endif 1107 1087 IF ( .NOT. PRESENT(kindic) ) THEN … … 1112 1092 1113 1093 #if defined key_cice 1114 1115 ! Zero ice increment tendency into CICE 1094 ! Sea-ice : CICE case. Zero ice increment tendency into CICE 1116 1095 ndaice_da(:,:) = 0.0_wp 1117 1118 1096 #endif 1119 1097 1120 1098 ENDIF 1121 1099 1122 !#if defined key_lim3 ||defined key_lim2 || defined key_cice1100 !#if defined defined key_lim2 || defined key_cice 1123 1101 ! 1124 1102 ! IF (ln_seaicebal ) THEN … … 1195 1173 !#endif 1196 1174 1197 1198 1175 ENDIF 1199 1176 1200 1177 END SUBROUTINE seaice_asm_inc 1178 1201 1179 !!====================================================================== 1202 1180 END MODULE asminc -
branches/2012/dev_MERGE_2012/NEMOGCM/NEMO/OPA_SRC/ICB/icbini.F90
r3614 r3785 1 1 MODULE icbini 2 3 2 !!====================================================================== 4 3 !! *** MODULE icbini *** … … 19 18 USE in_out_manager ! IO routines and numout in particular 20 19 USE lib_mpp ! mpi library and lk_mpp in particular 21 USE sbc_oce ! ocean: surface boundary condition 20 USE sbc_oce ! ocean : surface boundary condition 21 USE sbc_ice ! sea-ice: surface boundary condition 22 22 USE iom ! IOM library 23 23 USE fldread ! field read … … 267 267 END SUBROUTINE icb_init 268 268 269 269 270 SUBROUTINE icb_ini_gen() 270 271 !!---------------------------------------------------------------------- … … 333 334 END SUBROUTINE icb_ini_gen 334 335 336 335 337 SUBROUTINE icb_nam 336 338 !!---------------------------------------------------------------------- … … 377 379 IF( zfact < 1._wp ) THEN 378 380 IF( zfact <= 0._wp ) THEN 379 CALL ctl_stop( 'icb_nam: sum of berg distribution equal to zero' )381 380 382 ELSE 381 383 rn_distribution(:) = rn_distribution(:) / zfact 382 384 CALL ctl_warn( 'icb_nam: sum of berg input distribution not equal to one and so RESCALED' ) 383 385 ENDIF 386 ENDIF 387 388 IF( lk_lim3 .AND. ln_icebergs ) THEN 389 CALL ctl_stop( 'icb_nam: the use of ICB with LIM3 not allowed. ice thickness missing in ICB' ) 384 390 ENDIF 385 391 … … 430 436 431 437 !!====================================================================== 432 433 438 END MODULE icbini -
branches/2012/dev_MERGE_2012/NEMOGCM/NEMO/OPA_SRC/ICB/icbutl.F90
r3614 r3785 1 1 MODULE icbutl 2 3 2 !!====================================================================== 4 3 !! *** MODULE icbutl *** … … 139 138 puo = icb_utl_bilin_h( uo_e, pi, pj, 'U' ) ! ocean velocities 140 139 pvo = icb_utl_bilin_h( vo_e, pi, pj, 'V' ) 141 psst = icb_utl_bilin( sst_m, pi, pj, 'T' ) ! SST142 pcn = icb_utl_bilin( fr_i , pi, pj, 'T' ) ! ice concentration140 psst = icb_utl_bilin( sst_m, pi, pj, 'T' ) ! SST 141 pcn = icb_utl_bilin( fr_i , pi, pj, 'T' ) ! ice concentration 143 142 pff = icb_utl_bilin_h( ff_e , pi, pj, 'F' ) ! Coriolis parameter 144 143 ! … … 153 152 pui = icb_utl_bilin_h( ui_e, pi, pj, 'U' ) ! sea-ice velocities 154 153 pvi = icb_utl_bilin_h( vi_e, pi, pj, 'V' ) 155 phi = icb_utl_bilin(hicif, pi, pj, 'T' ) ! ice thickness 154 # if defined key_lim3 155 phi = 0._wp ! LIM-3 case (to do) 156 # else 157 phi = icb_utl_bilin(hicif, pi, pj, 'T' ) ! ice thickness 158 # endif 156 159 #else 157 160 pui = 0._wp
Note: See TracChangeset
for help on using the changeset viewer.