Ignore:
Timestamp:
03/15/18 14:18:24 (6 years ago)
Author:
aquiquet
Message:

Grisli-iloveclim branch merged to trunk at revision 185

Location:
branches/iLoveclim
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/iLoveclim

  • branches/iLoveclim/SOURCES/GrIce2sea_files/climat_GrIce2sea_years_perturb_mod.f90

    r88 r187  
    6262real,dimension(:),allocatable :: tpert          !> temperature for climate forcing 
    6363real,dimension(:),allocatable :: spert          !> sea surface perturbation 
     64real,dimension(:),allocatable :: bpert          !> basal melt index perturbation 
    6465real :: coefT                    !> pour modifier l'amplitude de la perturb. T 
    65 character(len=120) :: filforc    !> nom du fichier forcage 
     66character(len=150) :: filforc    !> nom du fichier forcage 
    6667integer :: pertsmb               !> boolean: do we modify the smb? 
    6768real    :: rapsmb                !> if we modify the smb this is the equivalent of rappact 
     69integer :: pertbmb               !> boolean: do we modify the bmelt under ice shelves? 
     70real    :: coefbmb               !> if we modify the bmelt, we read a perturbation (based on dD, insolation, etc.) and apply this coefficient 
    6871 
    6972 
     
    99102  !aurel for Tafor: 
    100103  character(len=8) :: control      !label to check clim. forc. file (filin) is usable 
    101   character(len=80):: filin 
     104  character(len=100):: filin 
    102105 
    103106  namelist/clim_smb_T_gen/smb_file,coef_smb_unit,temp_annual_file 
     
    129132  !   bm(:,:) = bm(:,:) - 5.                     ! pour faire un masque a l'exterieur du Groenland actuel 
    130133  !end where 
    131   where ((H(:,:).lt.1.).and.(Bsoc(:,:).gt.0.).and.(bm(:,:).gt.0.)) 
    132      bm(:,:) = -0.1 
    133   end where 
     134  !where ((H(:,:).lt.1.).and.(Bsoc(:,:).gt.0.).and.(bm(:,:).gt.0.)) 
     135  !   bm(:,:) = -0.1 
     136  !end where 
    134137!cdc test debug Hemin15 et Greeneem15 
    135138!  where (bm(:,:).lt.-1000) bm(:,:)=0. 
     
    278281  end if 
    279282   
     283  if (.not.allocated(bpert)) then 
     284     allocate(bpert(nft),stat=err) 
     285     if (err/=0) then 
     286        print *,"erreur a l'allocation du tableau Bpert",err 
     287        stop 4 
     288     end if 
     289  end if 
     290   
    280291  do i=1,nft 
    281      read(num_forc,*) tdate(i),spert(i),tpert(i) 
     292     if (pertbmb==1) then 
     293        read(num_forc,*) tdate(i),spert(i),tpert(i),bpert(i) 
     294     else 
     295        read(num_forc,*) tdate(i),spert(i),tpert(i) 
     296        bpert(i)=0. 
     297     endif 
    282298  end do 
    283299  close(num_forc) 
    284300   
    285301  tpert(:)=tpert(:)*coefT 
    286    
     302  bpert(:)=max(1.+bpert(:)*coefbmb,0.01) !freezing is not allowed 
    287303 
    288304   
     
    325341  implicit none 
    326342  namelist/lapse_rates/T_lapse_rate 
    327   namelist/clim_pert_massb/coefT,filforc,pertsmb,rapsmb 
     343  namelist/clim_pert_massb/coefT,filforc,pertsmb,rapsmb,pertbmb,coefbmb 
    328344   
    329345  rewind(num_param)        ! pour revenir au debut du fichier param_list.dat 
     
    353369  write(num_rep_42,*) 'pertsmb        = ', pertsmb 
    354370  write(num_rep_42,*) 'rapsmb         = ', rapsmb 
     371  write(num_rep_42,*) 'pertbmb        = ', pertbmb 
     372  write(num_rep_42,*) 'coefbmb         = ', coefbmb 
    355373  write(num_rep_42,*)'/' 
    356374  write(num_rep_42,*) 
     
    388406           tafor=tpert(1) 
    389407           sealevel=spert(1) 
     408           coefbmshelf=bpert(1) 
    390409           ift=1 
    391410 
     
    393412           tafor=tpert(nft) 
    394413           sealevel=spert(nft) 
     414           coefbmshelf=bpert(nft) 
    395415           ift=nft 
    396416            
     
    402422                 sealevel=spert(i)+(spert(i+1)-spert(i))*    & 
    403423                      (time-tdate(i))/(tdate(i+1)-tdate(i)) 
     424                 coefbmshelf=bpert(i)+(bpert(i+1)-bpert(i))*    & 
     425                      (time-tdate(i))/(tdate(i+1)-tdate(i)) 
    404426                 ift=i 
    405427                 goto 100 
     
    409431100     continue 
    410432 
    411          
    412433        Tann (:,:) = Ta0 (:,:) + T_lapse_rate * (S(:,:)-S0(:,:)) +Tafor 
    413434        Ts(:,:)    = Tann(:,:) 
     
    420441           end if 
    421442        end if 
     443 
     444        !afq -- as in Pollard and Deconto, melt is more efficient at high temperature... -> 
     445        if (coefbmshelf.gt.1.) then 
     446           coefbmshelf = 1. + ( coefbmshelf - 1. ) * 1.5 !afq.... tuning for the degla?... 
     447        end if 
    422448         
    423         ! coefmshelf est un coefficient qui fait varier bmgrz et bmshelf en fonction de tafor 
    424         coefbmshelf=(1.+tafor/10.)       ! coefbmshelf=0 pour tafor=-10deg 
    425         coefbmshelf=max(coefbmshelf,0.)   
    426         coefbmshelf=min(coefbmshelf,2.) 
     449!afq --old:        ! coefmshelf est un coefficient qui fait varier bmgrz et bmshelf en fonction de tafor 
     450!afq --old:        coefbmshelf=(1.+tafor/10.)       ! coefbmshelf=0 pour tafor=-10deg 
     451!afq --old:        coefbmshelf=max(coefbmshelf,0.)   
     452!afq --old:        coefbmshelf=min(coefbmshelf,2.) 
    427453         
    428454!        coefbmshelf=1.  !afq for calibration Greenland 
     
    441467  implicit none 
    442468  integer             :: k_snap               ! pour calculer les indices de temps 
    443   real                :: time_bis             ! pour repliquer les dernieres annees 
    444469  integer             :: k 
    445470 
Note: See TracChangeset for help on using the changeset viewer.