Changeset 122 for branches/iLoveclim/SOURCES/calving_frange.f90
- Timestamp:
- 06/29/17 16:27:48 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/iLoveclim/SOURCES/calving_frange.f90
r90 r122 21 21 real, dimension (nx,ny) :: hmhc ! hauteur au dessus de la coupure 22 22 real, 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 23 real, dimension (nx,ny) :: hcoup ! epaiseur de coupure au temps time 26 24 real :: mass_total 25 real :: hcoup_plateau ! coupure points peu profonds 26 real :: hcoup_abysses ! coupure points ocean profond 27 real :: prof_plateau ! profondeur max des points peu profonds 28 real :: prof_abysses ! profondeur min des points ocean profond 27 29 integer :: meth_hcoup ! pour avoir hcoup dépendant du coefbmshelf 28 30 integer :: ifrange ! 0 pas de traitement particulier pres du bord, 1 -> franges … … 39 41 subroutine init_calving 40 42 41 namelist/calving/Hcoup ,ifrange,meth_hcoup43 namelist/calving/Hcoup_plateau,Hcoup_abysses,prof_plateau,prof_abysses,ifrange,meth_hcoup 42 44 43 45 … … 59 61 write(num_rep_42,428) '&calving ! nom du bloc calving méthode Vincent ' 60 62 write(num_rep_42,*) 61 write(num_rep_42,*) 'Hcoup = ', Hcoup 63 write(num_rep_42,*) 'Hcoup_plateau = ', Hcoup_plateau 64 write(num_rep_42,*) 'Hcoup_abysses = ', Hcoup_abysses 65 write(num_rep_42,*) 'prof_plateau = ', prof_plateau 66 write(num_rep_42,*) 'prof_abysses = ', prof_abysses 62 67 write(num_rep_42,*) 'ifrange = ',ifrange 63 68 write(num_rep_42,*) 'meth_hcoup = ', meth_hcoup 64 69 write(num_rep_42,*)'/' 65 66 write(num_rep_42,428) '! Hcoup epaisseur de coupure, le max si attache a coefbmshelf ' 70 71 write(num_rep_42,428) '! Hcoup epaisseurs de coupure pour les zones peu prodondes et profondes' 72 write(num_rep_42,428) '! Hcoup_plateau<Hcoup_abysses && prof_plateau<prof_abysses' 73 write(num_rep_42,428) '! prof profondeur delimitant les zones peu prodondes et profondes' 67 74 write(num_rep_42,428) '! ifrange=0 -> pas de traitement particulier sur les bords' 68 75 write(num_rep_42,428) '! ifrange=1 -> traitement de Vincent avec ice shelves frangeants partout' 69 76 write(num_rep_42,428) '! ifrange=2 -> ice shelves frangeants seulement si bm-bmelt positif' 70 77 write(num_rep_42,*) '! meth_hcoup pour faire eventuellement varier Hcoup avec le climat' 71 write(num_rep_42,*) '! Hcoup_min=',Hcoup_min 78 write(num_rep_42,*) '! Hcoup_plateau=',Hcoup_plateau 79 write(num_rep_42,*) '! Hcoup_abysses=',Hcoup_abysses 80 write(num_rep_42,*) '! prof_plateau=',prof_plateau 81 write(num_rep_42,*) '! prof_abysses=',prof_abysses 72 82 write(num_rep_42,*) 73 83 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 98 Hcoup(:,:) = min ( max( & 99 (-(Bsoc0(:,:)-sealevel) - prof_plateau)/(prof_abysses-prof_plateau) & 100 *(hcoup_abysses-hcoup_plateau)+hcoup_plateau & 101 , hcoup_plateau), hcoup_abysses ) 102 103 if (meth_hcoup.eq.1) then 104 Hcoup(:,:)=coefbmshelf*Hcoup(:,:) 105 Hcoup(:,:)=min( max(Hcoup (:,:),Hcoup_plateau),Hcoup_abysses) 106 else if (meth_hcoup.eq.2) then 107 Hcoup(:,:)=coefbmshelf*Hcoup(:,:) 108 Hcoup(:,:)=max(Hcoup(:,:),Hcoup_plateau) 109 endif 110 75 111 76 112 end subroutine init_calving … … 93 129 94 130 ! 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 131 Hcoup(:,:) = min ( max( & 132 (-(Bsoc(:,:)-sealevel) - prof_plateau)/(prof_abysses-prof_plateau) & 133 *(hcoup_abysses-hcoup_plateau)+hcoup_plateau & 134 , hcoup_plateau), hcoup_abysses ) 135 136 if (meth_hcoup.eq.1) then 137 Hcoup(:,:)=coefbmshelf*Hcoup(:,:) 138 Hcoup(:,:)=min( max(Hcoup (:,:),Hcoup_plateau),Hcoup_abysses) 102 139 else if (meth_hcoup.eq.2) then 103 Hcoup =coefbmshelf*Hcoup_max104 Hcoup =max(Hcoup,Hcoup_min)140 Hcoup(:,:)=coefbmshelf*Hcoup(:,:) 141 Hcoup(:,:)=max(Hcoup(:,:),Hcoup_plateau) 105 142 endif 106 143 107 144 ! hauteur au dessus de la coupure 108 hmhc(:,:)=H(:,:)-Hcoup 145 hmhc(:,:)=H(:,:)-Hcoup(:,:) 109 146 110 147 ! coupure de l'ice shelf … … 117 154 118 155 119 ifext: if((flot(i,j)).and.(h(i,j).le.hcoup )) then156 ifext: if((flot(i,j)).and.(h(i,j).le.hcoup(i,j))) then 120 157 ! ifext: pour les noeuds flottants avec h < hcoup 121 158 … … 373 410 if (testipj) testH=testH + abs(uybar(i,j+1))*H(i,j+1) 374 411 375 if (testH.gt.Hcoup ) then412 if (testH.gt.Hcoup(i,j)) then 376 413 testmij=.true. 377 414 else … … 446 483 ! mab: copy the calving in the right format for coupling 447 484 ! 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) 449 486 ! calvin_GRIS(i,j)=-calv(i,j)*40000.*40000. 450 487 ! 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.