Ignore:
Timestamp:
06/29/17 16:27:48 (7 years ago)
Author:
aquiquet
Message:

Updating iLOVECLIM branch (calving / flottab / outputs) , working version but will be merged to trunk soon for water conservation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/iLoveclim/SOURCES/calving_frange.f90

    r90 r122  
    2121real, dimension (nx,ny) :: hmhc  ! hauteur au dessus de la coupure 
    2222real, dimension (nx,ny) :: bil_tot ! bilan surface et fond (bm-bmelt) 
    23 real :: hcoup ! epaiseur de coupure au temps time 
    24 real :: hcoup_max  ! epaisseur max 
    25 real :: hcoup_min=100.  ! epaisseur min 
     23real, dimension (nx,ny) :: hcoup ! epaiseur de coupure au temps time 
    2624real :: mass_total 
     25real :: hcoup_plateau  ! coupure points peu profonds 
     26real :: hcoup_abysses  ! coupure points ocean profond 
     27real :: prof_plateau  ! profondeur max des points peu profonds 
     28real :: prof_abysses  ! profondeur min des points ocean profond 
    2729integer :: meth_hcoup  ! pour avoir hcoup dépendant du coefbmshelf 
    2830integer :: ifrange        !  0 pas de traitement particulier pres du bord, 1 -> franges 
     
    3941subroutine init_calving 
    4042 
    41 namelist/calving/Hcoup,ifrange,meth_hcoup 
     43namelist/calving/Hcoup_plateau,Hcoup_abysses,prof_plateau,prof_abysses,ifrange,meth_hcoup 
    4244 
    4345 
     
    5961write(num_rep_42,428) '&calving              ! nom du bloc calving méthode Vincent ' 
    6062write(num_rep_42,*) 
    61 write(num_rep_42,*)   'Hcoup      = ', Hcoup 
     63write(num_rep_42,*)   'Hcoup_plateau  = ', Hcoup_plateau 
     64write(num_rep_42,*)   'Hcoup_abysses  = ', Hcoup_abysses 
     65write(num_rep_42,*)   'prof_plateau  = ', prof_plateau 
     66write(num_rep_42,*)   'prof_abysses  = ', prof_abysses 
    6267write(num_rep_42,*)   'ifrange    = ',ifrange 
    6368write(num_rep_42,*)   'meth_hcoup = ', meth_hcoup 
    6469write(num_rep_42,*)'/' 
    65                              
    66 write(num_rep_42,428) '! Hcoup epaisseur de coupure, le max si attache a coefbmshelf ' 
     70 
     71write(num_rep_42,428) '! Hcoup epaisseurs de coupure pour les zones peu prodondes et profondes' 
     72write(num_rep_42,428) '! Hcoup_plateau<Hcoup_abysses && prof_plateau<prof_abysses' 
     73write(num_rep_42,428) '! prof profondeur delimitant les zones peu prodondes et profondes' 
    6774write(num_rep_42,428) '! ifrange=0 -> pas de traitement particulier sur les bords' 
    6875write(num_rep_42,428) '! ifrange=1 -> traitement de Vincent avec ice shelves frangeants partout' 
    6976write(num_rep_42,428) '! ifrange=2 -> ice shelves frangeants seulement si bm-bmelt positif' 
    7077write(num_rep_42,*)   '! meth_hcoup pour faire eventuellement varier Hcoup avec le climat' 
    71 write(num_rep_42,*)   '! Hcoup_min=',Hcoup_min 
     78write(num_rep_42,*)   '! Hcoup_plateau=',Hcoup_plateau 
     79write(num_rep_42,*)   '! Hcoup_abysses=',Hcoup_abysses 
     80write(num_rep_42,*)   '! prof_plateau=',prof_plateau 
     81write(num_rep_42,*)   '! prof_abysses=',prof_abysses 
    7282write(num_rep_42,*) 
    7383 
    74 Hcoup_max=Hcoup 
     84 
     85! afq -- coupure depend de la profondeur: 
     86! 
     87!  hcoup                       prof_abysses 
     88!   ^                               v  
     89!   |                                _______ hcoup_abysses 
     90!   |                               / 
     91!   |                              / 
     92!   |                             / 
     93!   |                            / 
     94!   |      hcoup_plateau _______/ 
     95!                               ^ 
     96!                          prof_plateau      
     97 
     98Hcoup(:,:) = min ( max(                                         & 
     99     (-(Bsoc0(:,:)-sealevel) - prof_plateau)/(prof_abysses-prof_plateau)    & 
     100     *(hcoup_abysses-hcoup_plateau)+hcoup_plateau               & 
     101     , hcoup_plateau), hcoup_abysses ) 
     102 
     103if (meth_hcoup.eq.1) then 
     104   Hcoup(:,:)=coefbmshelf*Hcoup(:,:) 
     105   Hcoup(:,:)=min( max(Hcoup (:,:),Hcoup_plateau),Hcoup_abysses) 
     106else if (meth_hcoup.eq.2) then 
     107   Hcoup(:,:)=coefbmshelf*Hcoup(:,:) 
     108   Hcoup(:,:)=max(Hcoup(:,:),Hcoup_plateau) 
     109endif 
     110 
    75111 
    76112end subroutine init_calving 
     
    93129 
    94130! coupure 
    95 if (meth_hcoup.eq.0) then 
    96    Hcoup=Hcoup_max 
    97 else if (meth_hcoup.eq.1) then 
    98    Hcoup=coefbmshelf*Hcoup_max 
    99    Hcoup=min(Hcoup,Hcoup_max) 
    100    Hcoup=max(Hcoup,Hcoup_min) 
    101  
     131Hcoup(:,:) = min ( max(                                         & 
     132     (-(Bsoc(:,:)-sealevel) - prof_plateau)/(prof_abysses-prof_plateau)    & 
     133     *(hcoup_abysses-hcoup_plateau)+hcoup_plateau               & 
     134     , hcoup_plateau), hcoup_abysses ) 
     135 
     136if (meth_hcoup.eq.1) then 
     137   Hcoup(:,:)=coefbmshelf*Hcoup(:,:) 
     138   Hcoup(:,:)=min( max(Hcoup (:,:),Hcoup_plateau),Hcoup_abysses) 
    102139else if (meth_hcoup.eq.2) then 
    103    Hcoup=coefbmshelf*Hcoup_max 
    104    Hcoup=max(Hcoup,Hcoup_min) 
     140   Hcoup(:,:)=coefbmshelf*Hcoup(:,:) 
     141   Hcoup(:,:)=max(Hcoup(:,:),Hcoup_plateau) 
    105142endif 
    106143 
    107144! hauteur au dessus de la coupure 
    108 hmhc(:,:)=H(:,:)-Hcoup 
     145hmhc(:,:)=H(:,:)-Hcoup(:,:) 
    109146 
    110147! coupure de l'ice shelf 
     
    117154 
    118155 
    119 ifext:  if((flot(i,j)).and.(h(i,j).le.hcoup))  then 
     156ifext:  if((flot(i,j)).and.(h(i,j).le.hcoup(i,j)))  then 
    120157! ifext: pour les noeuds flottants avec h < hcoup  
    121158 
     
    373410   if (testipj) testH=testH + abs(uybar(i,j+1))*H(i,j+1) 
    374411    
    375    if (testH.gt.Hcoup) then 
     412   if (testH.gt.Hcoup(i,j)) then 
    376413      testmij=.true. 
    377414   else 
     
    446483! mab: copy the calving in the right format for coupling                      
    447484! calvin_GRIS =  volume flux per year (m3/a) 
    448                      calvin_GRIS(i,j)=calvin_GRIS(i,j)+(-calv(i,j)*dx*dy) 
     485                     calvingGRIS(i,j)=calvingGRIS(i,j)+(-calv(i,j)*dx*dy) 
    449486!                     calvin_GRIS(i,j)=-calv(i,j)*40000.*40000. 
    450487!                     write(15,*) 'calvheight:',h(i,j),calv(i,j),i,j,dtt,dt,calvin_GRIS(i,j)          
Note: See TracChangeset for help on using the changeset viewer.