Changeset 288
- Timestamp:
- 11/15/19 17:32:31 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SOURCES/Ant16_files/climat_InitMIP_years_perturb_mod.f90
r283 r288 62 62 integer :: nb_snap !> nombre de snapshots 63 63 64 real,dimension(nx,ny) :: smb_anom_last20years !> anomalie de smb des 20 dernieres annees du forcage 65 real,dimension(nx,ny) :: tann_anom_last20years !> anomalie de Tann des 20 dernieres annees du forcage 64 66 65 67 contains … … 79 81 80 82 integer :: err ! recuperation d'erreur 81 integer :: i 83 integer :: i,k 82 84 83 85 !aurel for Tafor: … … 281 283 282 284 endif 283 285 ! calcul de la moyenne des 20 dernieres annees du forcage 286 do k=nb_snap,nb_snap-19,-1 287 smb_anom_last20years(:,:) = smb_anom_last20years(:,:) + smb_anom(:,:,k) 288 tann_anom_last20years(:,:) = tann_anom_last20years(:,:) + tann_anom(:,:,k) 289 enddo 290 smb_anom_last20years(:,:) = smb_anom_last20years(:,:)/20. 291 tann_anom_last20years(:,:) = tann_anom_last20years(:,:)/20. 284 292 endif 285 293 … … 331 339 332 340 implicit none 333 integer :: k, k_snap ! pour calculer les indices de temps 334 real :: time_prec 341 integer :: k ! pour calculer les indices de temps 335 342 real,dimension(nx,ny) :: bm_time, tann_time ! pour calcul Bm et Tann 336 343 real,dimension(nx,ny) :: grad_smb_time, grad_tann_time ! pour calcul Bm et Tann avec correction verticale … … 346 353 bm_time(:,:) = bm_0(:,:) 347 354 tann_time(:,:) = ta0(:,:) 348 k_snap = 1349 ! S_ref(:,:) = S(:,:) ! du coup sera la surface de reference avant le forcage 350 t ime_prec = time355 else if (time.ge.time_snap(nb_snap)) then ! time apres le forcage : constant = derniere année nb_snap 356 bm_time(:,:) = bm_0(:,:) + smb_anom (:,:,nb_snap) 357 tann_time(:,:) = ta0(:,:) + tann_anom(:,:,nb_snap) 351 358 if (massb_time == 3 ) then 352 359 grad_smb_time(:,:) = grad_smb (:,:,1) 353 360 grad_tann_time(:,:) = grad_tann(:,:,1) 354 361 endif 355 else if (time.ge.time_snap(nb_snap)) then ! time apres le forcage 356 bm_time(:,:) = bm_0(:,:) + smb_anom (:,:,nb_snap) 357 tann_time(:,:) = ta0(:,:) + tann_anom(:,:,nb_snap) 358 if (abs(time-time_prec-1.).lt.dt) then ! 359 time_prec = time_prec + 1 360 endif 361 if (massb_time == 3 ) then 362 grad_smb_time(:,:) = grad_smb (:,:,nb_snap) 363 grad_tann_time(:,:) = grad_tann(:,:,nb_snap) 364 endif 362 !~ else if (time.ge.time_snap(nb_snap)) then ! time apres le forcage : constant moy 20 dernieres années 363 !~ bm_time(:,:) = bm_0(:,:) + smb_anom_last20years(:,:) 364 !~ tann_time(:,:) = ta0(:,:) + tann_anom_last20years(:,:) 365 365 else ! cas general 366 366 do k = 1 , nb_snap-1 367 367 if((time.ge.time_snap(k)).and.(time.lt.time_snap(k+1))) then ! entre k et k+1 368 bm_time(:,:) = bm_0(:,:) + smb_anom(:,:,k) + (smb_anom(:,:,k+1)-smb_anom(:,:,k)) * & 369 (time-time_snap(k))/(time_snap(k+1)-time_snap(k)) 370 tann_time(:,:) = ta0(:,:) + tann_anom(:,:,k) + (tann_anom(:,:,k+1)-tann_anom(:,:,k)) * & 371 (time-time_snap(k))/(time_snap(k+1)-time_snap(k)) 372 ! exactement sur le snapshot et avec un ecart 1 an par rapport au precedent stockage 373 ! write(6,*) 'time,tests',k,time,time-time_snap(k),time-time_prec-1. 374 if ((abs(time-time_snap(k)).le.dt).and.(abs(time-time_prec-1.).lt.dt)) then 375 k_snap = k 376 time_prec = time_snap(k) ! time_prec est le temps du precedent 377 endif 368 !cdc version avec interpolation lineaire entre 2 années 369 !~ bm_time(:,:) = bm_0(:,:) + smb_anom(:,:,k) + (smb_anom(:,:,k+1)-smb_anom(:,:,k)) * & 370 !~ (time-time_snap(k))/(time_snap(k+1)-time_snap(k)) 371 !~ tann_time(:,:) = ta0(:,:) + tann_anom(:,:,k) + (tann_anom(:,:,k+1)-tann_anom(:,:,k)) * & 372 !~ (time-time_snap(k))/(time_snap(k+1)-time_snap(k)) 373 !cdc version ISMIP : forcage annee n pendant un an sans interpolation. 374 bm_time(:,:) = bm_0(:,:) + smb_anom(:,:,k) 375 tann_time(:,:) = ta0(:,:) + tann_anom(:,:,k) 378 376 if (massb_time == 3 ) then 379 377 grad_smb_time(:,:) = grad_smb(:,:,k) + (grad_smb(:,:,k+1)-grad_smb(:,:,k)) * & … … 396 394 endif 397 395 398 !~ ! garde les 10 dernieres annees et calcule la moyenne399 !~ if (icum.eq.1) then ! stockage dans le tableau bm_ref_10400 !~ do k = 9,1,-1401 !~ bm_ref_10(:,:,k+1) = bm_ref_10(:,:,k) ! on decale tous les elements402 !~ end do403 !~ bm_ref_10(:,:,k+1) = bm(:,:) ! le plus recent est en position 1404 !~ i_moy = i_moy +1 ! compte combien il y en a pour la moyenne405 !~ i_moy = min(i_moy,10)406 !~ bm_ref_t(:,:) = 0.407 !~ do k = 1,i_moy408 !~ bm_ref_t(:,:) = bm_ref_t(:,:) + bm_ref_10(:,:,k)409 !~ end do410 !~ bm_ref_t(:,:) = bm_ref_t(:,:)/i_moy411 !~ write(6,898) time, time_prec, icum, i_moy412 !~ 898 format('cumul pour gradient ',2(f0.3,1x),2(i0,1x))413 !~ end if414 396 end subroutine massb_ISMIP_RCM 415 397
Note: See TracChangeset
for help on using the changeset viewer.