Changeset 126


Ignore:
Timestamp:
07/11/17 18:36:38 (7 years ago)
Author:
aquiquet
Message:

iLoveclim branch, further additions for water conservation

Location:
branches/iLoveclim
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • branches/iLoveclim/SOURCES/3D-physique-gen_mod.f90

    r123 r126  
    253253  !hassine 
    254254  real, dimension(nx,ny) :: beta_centre !< beta on major node (average) 
    255   real (kind = 8),dimension(nx,ny) :: calvingGRIS 
    256   real (kind = 8),dimension(nx,ny),target :: calvin_GRIS ! calving flux[m3/s] given to CLIO 
     255!afq for CONSEAU  real (kind = 8),dimension(nx,ny) :: calvingGRIS 
     256!afq for CONSEAU  real (kind = 8),dimension(nx,ny),target :: calvin_GRIS ! calving flux[m3/s] given to CLIO 
    257257  real (kind = 8),dimension(nx,ny,20),target :: bmshelfCLIO  ! basal melting given by CLIO   
    258258  real, dimension(nx,ny) :: coef_drag   !< coefficient de la loi de friction non lineaire : depend de la valeur de alpha_drag 
     
    330330  real,dimension(nx,ny) :: NEFFMX       !< pression effective '>' 
    331331  real,dimension(nx,ny) :: NEFFMY       !< pression effective '^' 
    332   real(kind=8),dimension(nx,ny),target :: RUNOF_OC ! Continental runoff (grounded part) 
    333   real(kind=8),dimension(nx,ny),target :: BMELT_OC ! Shelf runoff (floating part) 
     332!afq for CONSEAU  real(kind=8),dimension(nx,ny),target :: RUNOF_OC ! Continental runoff (grounded part) 
     333!afq for CONSEAU  real(kind=8),dimension(nx,ny),target :: BMELT_OC ! Shelf runoff (floating part) 
    334334  real,dimension(nx,ny) :: TOBMX        !< cisaillement basal '>' 
    335335  real,dimension(nx,ny) :: TOBMY        !< cisaillement basal '^' 
     
    410410  real,dimension(nx,ny) :: slid_my        !< geographiques eventuelles dans le glissement 
    411411 
     412  ! afq -- iLOVECLIM coupling -- water conservation 
     413  real (kind = 8),target                  :: trendWAC    ! the global trend in ice volume 
     414  real (kind = 8),dimension(nx,ny),target :: smbWAC      ! smb+ablbord 
     415  real (kind = 8),dimension(nx,ny),target :: bmeltWAC    ! bmelt 
     416  real (kind = 8),dimension(nx,ny),target :: calvingWAC  ! calving 
    412417 
    413418 
  • branches/iLoveclim/SOURCES/Hemin40_files/output_hemin40_mod.f90

    r123 r126  
    2828!real ::  pdfmean                      ! moyenne PDF 
    2929logical,dimension(nx,ny,13) :: mask_cal ! masque regions calotte  
    30 REAL, dimension(nx,ny) :: old_H_dtt      ! Epaisseur de glace au pas de temps precedent 
     30! afq for CONSEAU REAL, dimension(nx,ny) :: old_H_dtt      ! Epaisseur de glace au pas de temps precedent 
    3131integer, dimension(nx,ny) :: write_mask 
    3232 
     
    3939mask_cal(:,:,:)=.false. 
    4040mask_cal(:,:,1)=.true. 
    41 old_H_dtt(:,:)=H(:,:) ! afq missing in mab? 
     41! afq for CONSEAU old_H_dtt(:,:)=H(:,:) ! afq missing in mab? 
    4242! calcul d'un masque pour les regions des calottes 
    4343do j=1,ny 
     
    182182!      REAL ABLA(NX,NY) 
    183183      REAL DELTAVOL 
    184       REAL, dimension(nx,ny) :: delta_H_dtt 
     184! afq for CONSEAU      REAL, dimension(nx,ny) :: delta_H_dtt 
    185185 
    186186 
     
    198198      BDOTMEAN=0. 
    199199 
    200       runof_oc(:,:)    = 0. 
    201       bmelt_oc(:,:)    = 0. 
    202       delta_H_dtt(:,:) = 0. 
     200! afq for CONSEAU      runof_oc(:,:)    = 0. 
     201! afq for CONSEAU      bmelt_oc(:,:)    = 0. 
     202! afq for CONSEAU      delta_H_dtt(:,:) = 0. 
    203203       
    204204      DO kk = 1,13 
     
    239239     enddo 
    240240 
    241 ! afq -- thickness variation  
    242      delta_H_dtt(:,:) = old_H_dtt(:,:) - H(:,:) 
    243 ! afq -- continental runoff      
    244 !        this goes to ECBilt, will be sum up, then routed to CLIO 
    245 !     where (mask_cal(:,:,1).and.((H(:,:).gt.1.).or.(old_H_dtt(:,:).gt.1.)).and..not.flot(:,:)) 
    246 !     afq I think we do not need the H condition: 
    247      where  (mask_cal(:,:,1).and..not.flot(:,:)) 
    248         runof_oc(:,:) = runof_oc(:,:) + DBLE(delta_H_dtt(:,:))*DX*DY 
    249      endwhere 
    250 ! afq -- shelf runoff 
    251 !        this goes to bilinear interpolation, then put to CLIO 
    252 !        we have to make sure that we are not considering a "calved" point 
    253      where (mask_cal(:,:,1).and.(H(:,:).gt.1.).and.flot(:,:).and.(calv(:,:).eq.0.)) 
    254         bmelt_oc(:,:) = bmelt_oc(:,:) + DBLE(delta_H_dtt(:,:))*DX*DY 
    255      endwhere 
    256  
    257 ! afq -- old_h_dtt has to be reset 
    258      old_H_dtt(:,:)  = H(:,:) 
    259  
    260 ! afq -- the accumulated calving need to be reset, BUT not here because of coupling freq.     
    261      calvin_GRIS(:,:) = calvin_GRIS(:,:)+calvingGRIS(:,:) 
    262      calvingGRIS(:,:) = 0. 
     241! afq for CONSEAU! afq -- thickness variation  
     242! afq for CONSEAU     delta_H_dtt(:,:) = old_H_dtt(:,:) - H(:,:) 
     243! afq for CONSEAU! afq -- continental runoff      
     244! afq for CONSEAU!        this goes to ECBilt, will be sum up, then routed to CLIO 
     245! afq for CONSEAU!     where (mask_cal(:,:,1).and.((H(:,:).gt.1.).or.(old_H_dtt(:,:).gt.1.)).and..not.flot(:,:)) 
     246! afq for CONSEAU!     afq I think we do not need the H condition: 
     247! afq for CONSEAU     where  (mask_cal(:,:,1).and..not.flot(:,:)) 
     248! afq for CONSEAU        runof_oc(:,:) = runof_oc(:,:) + DBLE(delta_H_dtt(:,:))*DX*DY 
     249! afq for CONSEAU     endwhere 
     250! afq for CONSEAU! afq -- shelf runoff 
     251! afq for CONSEAU!        this goes to bilinear interpolation, then put to CLIO 
     252! afq for CONSEAU!        we have to make sure that we are not considering a "calved" point 
     253! afq for CONSEAU     where (mask_cal(:,:,1).and.(H(:,:).gt.1.).and.flot(:,:).and.(calv(:,:).eq.0.)) 
     254! afq for CONSEAU        bmelt_oc(:,:) = bmelt_oc(:,:) + DBLE(delta_H_dtt(:,:))*DX*DY 
     255! afq for CONSEAU     endwhere 
     256 
     257! afq for CONSEAU! afq -- old_h_dtt has to be reset 
     258! afq for CONSEAU     old_H_dtt(:,:)  = H(:,:) 
     259 
     260! afq for CONSEAU ! afq -- the accumulated calving need to be reset, BUT not here because of coupling freq.     
     261! afq for CONSEAU     calvin_GRIS(:,:) = calvin_GRIS(:,:)+calvingGRIS(:,:) 
     262! afq for CONSEAU    calvingGRIS(:,:) = 0. 
    263263      
    264264 
     
    329329      BDOTMEAN=BDOTMEAN/NX/NY   
    330330 
     331! afq -- iLOVECLIM water conservation:  
     332      trendWAC        = diff_H*dx*dy !or water_bilan 
     333      smbWAC(:,:)     = (ablbord_dtt(:,:)+ Bm_dtt(:,:))*dx*dy/dtt 
     334      bmeltWAC(:,:)   = Bmelt_dtt(:,:)*dx*dy/dtt 
     335      calvingWAC(:,:) = Calv_dtt(:,:)*dx*dy/dtt 
     336!check-> 
     337      if (abs(1-diff_H/(water_bilan+1e-20)).gt.0.01) then 
     338         write(*,*) "Water is not conserved in GRISLI", diff_H, water_bilan, abs(1-diff_H/(water_bilan+1e-20)) 
     339      endif 
     340 
    331341! 2_writing outputs 
    332342!------------------ 
  • branches/iLoveclim/SOURCES/bilan_eau_mod.f90

    r123 r126  
    4747        bm_dt(:,:)=0. 
    4848        bmelt_dt(:,:)=0. 
     49! iLOVECLIM initialisation of water conservation related variables 
     50        trendWAC=0. 
     51        smbWAC(:,:)=0. 
     52        bmeltWAC(:,:)=0. 
     53        calvingWAC(:,:)=0. 
    4954end subroutine init_bilan_eau 
    5055 
  • branches/iLoveclim/SOURCES/calving_frange.f90

    r123 r126  
    4747 
    4848mass_total = 0d0 
    49 calvingGRIS=0d0 
     49!afq for CONSEAU calvingGRIS=0d0 
    5050calv(:,:)=0.  
    5151calv_dtt(:,:)=0. 
     
    116116subroutine calving 
    117117 
    118   real :: calvtest 
     118!afq for CONSEAU  real :: calvtest 
    119119   
    120120! initialisation calving 
    121121  calv(:,:)=0.  
    122122  mass_total=0d0 
    123   calvtest=0. 
     123!afq for CONSEAU  calvtest=0. 
    124124  mass_total=0d0 
    125125 
     
    483483                   !if(h(i,j).gt.1) then 
    484484                     calv(i,j)=-h(i,j)  
    485 ! mab: copy the calving in the right format for coupling                      
    486 ! calvin_GRIS =  volume flux per year (m3/a) 
    487                      calvingGRIS(i,j)=calvingGRIS(i,j)+(-calv(i,j)*dx*dy) 
     485!afq for CONSEAU ! mab: copy the calving in the right format for coupling                      
     486!afq for CONSEAU ! calvin_GRIS =  volume flux per year (m3/a) 
     487!afq for CONSEAU                     calvingGRIS(i,j)=calvingGRIS(i,j)+(-calv(i,j)*dx*dy) 
    488488!cdc                     H(i,j)=1.  
    489489!cdc 1m                     H(i,j)=min(1.,max(0.,(sealevel - Bsoc(i,j))*row/ro-0.01)) 
     
    500500      end do 
    501501          
    502     calvtest=sum(-calv(:,:)*dx*dy) 
    503     mass_total=sum(calvingGRIS(:,:)) 
    504  
    505     calvtest = 0. 
     502!afq for CONSEAU    calvtest=sum(-calv(:,:)*dx*dy) 
     503!afq for CONSEAU    mass_total=sum(calvingGRIS(:,:)) 
     504 
     505!afq for CONSEAU    calvtest = 0. 
    506506       
    507507! on met en calving les points detectes iceberg : 
  • branches/iLoveclim/SOURCES/main3D-0.4-40km.f90

    r123 r126  
    132132  PRINT*,'TIME = ',TIME,' TEND = ',TEND 
    133133 
    134 !afq -- reset the GRISLI fluxes to CLIO: 
    135      calvin_GRIS(:,:) = 0.   
    136      runof_oc(:,:) = 0.  
    137      bmelt_oc(:,:) = 0. 
     134!afq for CONSEAU!afq -- reset the GRISLI fluxes to CLIO: 
     135!afq for CONSEAU     calvin_GRIS(:,:) = 0.   
     136!afq for CONSEAU     runof_oc(:,:) = 0.  
     137!afq for CONSEAU     bmelt_oc(:,:) = 0. 
    138138      
    139139  time_loop: DO WHILE (time.LT.tend)  !____________________________ debut boucle temporelle 
     
    145145!afq -- reset the CLIO fluxes to GRISLI: 
    146146  bmshelfCLIO(:,:,:) = 0d0 
    147 !afq -- put the right units for GRISLI fluxes to CLIO: 
    148      calvin_GRIS(:,:) = calvin_GRIS(:,:)/timCplGRISyr 
    149      runof_oc(:,:) = runof_oc(:,:)/timCplGRISyr 
    150      bmelt_oc(:,:) = bmelt_oc(:,:)/timCplGRISyr 
     147!afq for CONSEAU!afq -- put the right units for GRISLI fluxes to CLIO: 
     148!afq for CONSEAU     calvin_GRIS(:,:) = calvin_GRIS(:,:)/timCplGRISyr 
     149!afq for CONSEAU     runof_oc(:,:) = runof_oc(:,:)/timCplGRISyr 
     150!afq for CONSEAU     bmelt_oc(:,:) = bmelt_oc(:,:)/timCplGRISyr 
    151151 
    152152  if (itracebug.eq.1)  call tracebug('dans main avant call out_recovery ') 
Note: See TracChangeset for help on using the changeset viewer.