- Timestamp:
- 2017-07-25T19:44:54+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90
r8369 r8373 95 95 INTEGER :: iconv_max = 50 ! max number of iterations in iterative procedure 96 96 97 INTEGER, POINTER, DIMENSION(:) :: numeqmin ! reference number of top equation98 INTEGER, POINTER, DIMENSION(:) :: numeqmax ! reference number of bottom equation97 INTEGER, DIMENSION(jpij) :: numeqmin ! reference number of top equation 98 INTEGER, DIMENSION(jpij) :: numeqmax ! reference number of bottom equation 99 99 100 100 REAL(wp) :: zg1s = 2._wp ! for the tridiagonal system … … 110 110 REAL(wp) :: zdti_bnd = 1.e-4_wp ! maximal authorized error on temperature 111 111 112 REAL(wp), POINTER, DIMENSION(:) :: isnow ! switch for presence (1) or absence (0) of snow113 REAL(wp), POINTER, DIMENSION(:) :: ztsub ! old surface temperature (before the iterative procedure )114 REAL(wp), POINTER, DIMENSION(:) :: ztsubit ! surface temperature at previous iteration115 REAL(wp), POINTER, DIMENSION(:) :: zh_i ! ice layer thickness116 REAL(wp), POINTER, DIMENSION(:) :: zh_s ! snow layer thickness117 REAL(wp), POINTER, DIMENSION(:) :: zfsw ! solar radiation absorbed at the surface118 REAL(wp), POINTER, DIMENSION(:) :: zqns_ice_b ! solar radiation absorbed at the surface119 REAL(wp), POINTER, DIMENSION(:) :: zf ! surface flux function120 REAL(wp), POINTER, DIMENSION(:) :: dzf ! derivative of the surface flux function121 REAL(wp), POINTER, DIMENSION(:) :: zdti ! current error on temperature122 REAL(wp), POINTER, DIMENSION(:) :: zdifcase ! case of the equation resolution (1->4)123 REAL(wp), POINTER, DIMENSION(:) :: zftrice ! solar radiation transmitted through the ice124 REAL(wp), POINTER, DIMENSION(:) :: zihic112 REAL(wp), DIMENSION(jpij) :: isnow ! switch for presence (1) or absence (0) of snow 113 REAL(wp), DIMENSION(jpij) :: ztsub ! old surface temperature (before the iterative procedure ) 114 REAL(wp), DIMENSION(jpij) :: ztsubit ! surface temperature at previous iteration 115 REAL(wp), DIMENSION(jpij) :: zh_i ! ice layer thickness 116 REAL(wp), DIMENSION(jpij) :: zh_s ! snow layer thickness 117 REAL(wp), DIMENSION(jpij) :: zfsw ! solar radiation absorbed at the surface 118 REAL(wp), DIMENSION(jpij) :: zqns_ice_b ! solar radiation absorbed at the surface 119 REAL(wp), DIMENSION(jpij) :: zf ! surface flux function 120 REAL(wp), DIMENSION(jpij) :: dzf ! derivative of the surface flux function 121 REAL(wp), DIMENSION(jpij) :: zdti ! current error on temperature 122 REAL(wp), DIMENSION(jpij) :: zdifcase ! case of the equation resolution (1->4) 123 REAL(wp), DIMENSION(jpij) :: zftrice ! solar radiation transmitted through the ice 124 REAL(wp), DIMENSION(jpij) :: zihic 125 125 126 REAL(wp), POINTER, DIMENSION(:,:) :: ztcond_i ! Ice thermal conductivity 127 REAL(wp), POINTER, DIMENSION(:,:) :: zradtr_i ! Radiation transmitted through the ice 128 REAL(wp), POINTER, DIMENSION(:,:) :: zradab_i ! Radiation absorbed in the ice 129 REAL(wp), POINTER, DIMENSION(:,:) :: zkappa_i ! Kappa factor in the ice 130 REAL(wp), POINTER, DIMENSION(:,:) :: ztib ! Old temperature in the ice 131 REAL(wp), POINTER, DIMENSION(:,:) :: zeta_i ! Eta factor in the ice 132 REAL(wp), POINTER, DIMENSION(:,:) :: ztitemp ! Temporary temperature in the ice to check the convergence 133 REAL(wp), POINTER, DIMENSION(:,:) :: zspeche_i ! Ice specific heat 134 REAL(wp), POINTER, DIMENSION(:,:) :: z_i ! Vertical cotes of the layers in the ice 135 REAL(wp), POINTER, DIMENSION(:,:) :: zradtr_s ! Radiation transmited through the snow 136 REAL(wp), POINTER, DIMENSION(:,:) :: zradab_s ! Radiation absorbed in the snow 137 REAL(wp), POINTER, DIMENSION(:,:) :: zkappa_s ! Kappa factor in the snow 138 REAL(wp), POINTER, DIMENSION(:,:) :: zeta_s ! Eta factor in the snow 139 REAL(wp), POINTER, DIMENSION(:,:) :: ztstemp ! Temporary temperature in the snow to check the convergence 140 REAL(wp), POINTER, DIMENSION(:,:) :: ztsb ! Temporary temperature in the snow 141 REAL(wp), POINTER, DIMENSION(:,:) :: z_s ! Vertical cotes of the layers in the snow 142 REAL(wp), POINTER, DIMENSION(:,:) :: zindterm ! 'Ind'ependent term 143 REAL(wp), POINTER, DIMENSION(:,:) :: zindtbis ! Temporary 'ind'ependent term 144 REAL(wp), POINTER, DIMENSION(:,:) :: zdiagbis ! Temporary 'dia'gonal term 145 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrid ! Tridiagonal system terms 146 147 ! diag errors on heat 148 REAL(wp), POINTER, DIMENSION(:) :: zdq, zq_ini, zhfx_err 126 REAL(wp), DIMENSION(jpij,0:nlay_i) :: ztcond_i ! Ice thermal conductivity 127 REAL(wp), DIMENSION(jpij,0:nlay_i) :: zradtr_i ! Radiation transmitted through the ice 128 REAL(wp), DIMENSION(jpij,0:nlay_i) :: zradab_i ! Radiation absorbed in the ice 129 REAL(wp), DIMENSION(jpij,0:nlay_i) :: zkappa_i ! Kappa factor in the ice 130 REAL(wp), DIMENSION(jpij,0:nlay_i) :: ztib ! Old temperature in the ice 131 REAL(wp), DIMENSION(jpij,0:nlay_i) :: zeta_i ! Eta factor in the ice 132 REAL(wp), DIMENSION(jpij,0:nlay_i) :: ztitemp ! Temporary temperature in the ice to check the convergence 133 REAL(wp), DIMENSION(jpij,0:nlay_i) :: zspeche_i ! Ice specific heat 134 REAL(wp), DIMENSION(jpij,0:nlay_i) :: z_i ! Vertical cotes of the layers in the ice 135 REAL(wp), DIMENSION(jpij,0:nlay_s) :: zradtr_s ! Radiation transmited through the snow 136 REAL(wp), DIMENSION(jpij,0:nlay_s) :: zradab_s ! Radiation absorbed in the snow 137 REAL(wp), DIMENSION(jpij,0:nlay_s) :: zkappa_s ! Kappa factor in the snow 138 REAL(wp), DIMENSION(jpij,0:nlay_s) :: zeta_s ! Eta factor in the snow 139 REAL(wp), DIMENSION(jpij,0:nlay_s) :: ztstemp ! Temporary temperature in the snow to check the convergence 140 REAL(wp), DIMENSION(jpij,0:nlay_s) :: ztsb ! Temporary temperature in the snow 141 REAL(wp), DIMENSION(jpij,0:nlay_s) :: z_s ! Vertical cotes of the layers in the snow 142 REAL(wp), DIMENSION(jpij,nlay_i+3) :: zindterm ! 'Ind'ependent term 143 REAL(wp), DIMENSION(jpij,nlay_i+3) :: zindtbis ! Temporary 'ind'ependent term 144 REAL(wp), DIMENSION(jpij,nlay_i+3) :: zdiagbis ! Temporary 'dia'gonal term 145 REAL(wp), DIMENSION(jpij,nlay_i+3,3) :: ztrid ! Tridiagonal system terms 146 REAL(wp), DIMENSION(jpij) :: zdq, zq_ini, zhfx_err ! diag errors on heat 147 REAL(wp), DIMENSION(jpij) :: zghe ! G(he), th. conduct enhancement factor, mono-cat 149 148 150 149 ! Mono-category 151 REAL(wp) :: zepsilon ! determines thres. above which computation of G(h) is done 152 REAL(wp) :: zratio_s ! dummy factor 153 REAL(wp) :: zratio_i ! dummy factor 154 REAL(wp) :: zh_thres ! thickness thres. for G(h) computation 155 REAL(wp) :: zhe ! dummy factor 156 REAL(wp) :: zkimean ! mean sea ice thermal conductivity 157 REAL(wp) :: zfac ! dummy factor 158 REAL(wp) :: zihe ! dummy factor 159 REAL(wp) :: zheshth ! dummy factor 160 161 REAL(wp), POINTER, DIMENSION(:) :: zghe ! G(he), th. conduct enhancement factor, mono-cat 162 150 REAL(wp) :: zepsilon ! determines thres. above which computation of G(h) is done 151 REAL(wp) :: zratio_s ! dummy factor 152 REAL(wp) :: zratio_i ! dummy factor 153 REAL(wp) :: zh_thres ! thickness thres. for G(h) computation 154 REAL(wp) :: zhe ! dummy factor 155 REAL(wp) :: zkimean ! mean sea ice thermal conductivity 156 REAL(wp) :: zfac ! dummy factor 157 REAL(wp) :: zihe ! dummy factor 158 REAL(wp) :: zheshth ! dummy factor 163 159 !!------------------------------------------------------------------ 164 !165 CALL wrk_alloc( jpij, numeqmin, numeqmax )166 CALL wrk_alloc( jpij, isnow, ztsub, ztsubit, zh_i, zh_s, zfsw )167 CALL wrk_alloc( jpij, zf, dzf, zqns_ice_b, zdti, zdifcase, zftrice, zihic, zghe )168 CALL wrk_alloc( jpij,nlay_i+1, ztcond_i, zradtr_i, zradab_i, zkappa_i, ztib, zeta_i, ztitemp, z_i, zspeche_i, kjstart=0 )169 CALL wrk_alloc( jpij,nlay_s+1, zradtr_s, zradab_s, zkappa_s, ztsb, zeta_s, ztstemp, z_s, kjstart=0 )170 CALL wrk_alloc( jpij,nlay_i+3, zindterm, zindtbis, zdiagbis )171 CALL wrk_alloc( jpij,nlay_i+3,3, ztrid )172 173 CALL wrk_alloc( jpij, zdq, zq_ini, zhfx_err )174 160 175 161 ! --- diag error on heat diffusion - PART 1 --- ! … … 808 794 END DO 809 795 ! 810 CALL wrk_dealloc( jpij, numeqmin, numeqmax )811 CALL wrk_dealloc( jpij, isnow, ztsub, ztsubit, zh_i, zh_s, zfsw )812 CALL wrk_dealloc( jpij, zf, dzf, zqns_ice_b, zdti, zdifcase, zftrice, zihic, zghe )813 CALL wrk_dealloc( jpij,nlay_i+1, ztcond_i, zradtr_i, zradab_i, zkappa_i, ztib, zeta_i, ztitemp, z_i, zspeche_i, kjstart = 0 )814 CALL wrk_dealloc( jpij,nlay_s+1, zradtr_s, zradab_s, zkappa_s, ztsb, zeta_s, ztstemp, z_s, kjstart = 0 )815 CALL wrk_dealloc( jpij,nlay_i+3, zindterm, zindtbis, zdiagbis )816 CALL wrk_dealloc( jpij,nlay_i+3,3, ztrid )817 CALL wrk_dealloc( jpij, zdq, zq_ini, zhfx_err )818 819 796 END SUBROUTINE lim_thd_dif 820 797
Note: See TracChangeset
for help on using the changeset viewer.