Changeset 111


Ignore:
Timestamp:
06/09/17 10:26:41 (7 years ago)
Author:
dumas
Message:

Update water cycle : iceberg found in determin_tache are removed in calving

Location:
trunk/SOURCES
Files:
5 edited

Legend:

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

    r110 r111  
    490490  logical,dimension(nx,ny) :: new_flotmy !< pour signaler les points qui deviennent flottantmy entre 2 dtt  
    491491  logical,dimension(nx,ny) :: flot_marais  !< afq -- vrai si flottant et coince entre points poses 'o' 
     492  logical,dimension(nx,ny) :: iceberg   !< point iceberg 
    492493 
    493494  ! ===================== File id ========================================= 
  • trunk/SOURCES/bilan_eau.f90

    r102 r111  
    5050 
    5151sum_H = sum(H(2:nx-1,2:ny-1),mask=ice(2:nx-1,2:ny-1)==1) 
    52 diff_H = diff_H + (sum_H - sum_H_old) ! on calcul la variation de volume à chaque dt 
     52 
     53if (nt.eq.1) then 
     54  diff_H=0. 
     55else 
     56  diff_H = diff_H + (sum_H - sum_H_old) ! on calcul la variation de volume a chaque dt 
     57endif 
    5358 
    5459diff_H_2D(2:nx-1,2:ny-1)=H(2:nx-1,2:ny-1)-H_beau_old(2:nx-1,2:ny-1) 
  • trunk/SOURCES/calving_frange.f90

    r102 r111  
    399399!cdc 1m                     H(i,j)=min(1.,max(0.,(sealevel - Bsoc(i,j))*row/ro-0.01)) 
    400400                     H(i,j)=0. 
     401                     S(i,j)=H(i,j)*(1.-ro/row) + sealevel 
     402                     B(i,j)=S(i,j) - H(i,j) 
    401403                   endif   
    402404 
     
    405407         end do 
    406408      end do 
     409       
     410! on met en calving les points detectes iceberg : 
     411       where (iceberg(:,:))    
     412             ice(:,:)=0 
     413             H(:,:)=0. 
     414             S(:,:)=H(:,:)*(1.-ro/row) + sealevel 
     415             B(:,:)=S(:,:) - H(:,:) 
     416       endwhere    
    407417       
    408418       where (front.le.0) 
  • trunk/SOURCES/flottab2-0.7.f90

    r110 r111  
    4949 integer,dimension(0:n_ta_max)     :: compt        !< contient les equivalence entre les taches 
    5050 integer,dimension(0:n_ta_max)     :: nb_pts_tache !< indique le nombre de points par tache 
    51  logical,dimension(0:n_ta_max)     :: iceberg      !< T si iceberg, F si calotte posee 
     51 logical,dimension(0:n_ta_max)     :: iceberg1D      !< T si iceberg, F si calotte posee 
    5252  
    5353 logical,dimension(nx,ny)        :: mask_tache_ij !< masque de travail  
     
    153153    frontfacex(:,:)=0 
    154154    frontfacey(:,:)=0 
    155     isolx(:,:)=.FALSE. 
    156     isoly(:,:)=.FALSE. 
     155    isolx(:,:)=.false. 
     156    isoly(:,:)=.false. 
    157157    cotemx(:,:)=.false. 
    158158    cotemy(:,:)=.false. 
    159159    boost=.false. 
     160    iceberg(:,:)=.false. 
    160161    !$OMP END WORKSHARE 
    161162 
     
    643644    do j=3,ny-2 
    644645       do i=3,nx-2 
    645     test1:  if (.not.iceberg(table_out(i,j))) then ! on est pas sur un iceberg  
     646    test1:  if (.not.iceberg1D(table_out(i,j))) then ! on est pas sur un iceberg  
    646647             if (nb_pts_tache(table_out(i,j)).ge.1) then 
    647648                 ice(i,j)=1 
     
    696697                endif test2  
    697698             end if                                             ! endif deplace 
    698               
    699           else ! on est sur un iceberg                          !   test1 
    700              ice(i,j)=0 
    701              h(i,j)=0. !1. afq, we should put everything in calving! 
    702              surnet=H(i,j)*(1.-ro/row) 
    703              S(i,j)=surnet+sealevel 
    704              B(i,j)=S(i,j)-H(i,j) 
     699!cdc transfere dans calving :              
     700           else ! on est sur un iceberg                          !   test1 
     701                iceberg(i,j)=iceberg1D(table_out(i,j)) 
     702!~              ice(i,j)=0 
     703!~              h(i,j)=0. !1. afq, we should put everything in calving! 
     704!~              surnet=H(i,j)*(1.-ro/row) 
     705!~              S(i,j)=surnet+sealevel 
     706!~              B(i,j)=S(i,j)-H(i,j) 
    705707              
    706708          endif test1 
     
    740742    !read(5,*) 
    741743 
    742     call determin_front 
    743     !call determin_front_tof ! version simplifiee 
     744    !call determin_front ! cette version ne conserve pas la masse !!! 
     745    call determin_front_tof ! version simplifiee 
    744746 
    745747    call determin_marais 
     
    777779!$OMP WORKSHARE 
    778780table_out(:,:) = 0 
    779 iceberg(:)  = .true. 
     781iceberg1D(:)  = .true. 
    780782icetrim (:) = .true. 
    781783nb_pts_tache(:) = 0 
     
    810812           !si ce noeud est posé, alors la tache n'est pas un iceberg et iceberg=.F. 
    811813           if (.not.FLOT(I,J)) then 
    812               iceberg(label)=.false. 
     814              iceberg1D(label)=.false. 
    813815           endif 
    814816 
     
    835837           !si ce noeud est posé, alors la ache n'est pas un iceberg et iceberg=.F. 
    836838           if (.not.FLOT(I,J)) then 
    837               iceberg(label_max)=.false. 
     839              iceberg1D(label_max)=.false. 
    838840           endif 
    839841 
     
    867869   if (compt(indice).lt.0) then  
    868870      compt(indice)= compt(-vartemp) 
    869       if (.not.iceberg(indice)) iceberg(-vartemp)=.false. 
     871      if (.not.iceberg1D(indice)) iceberg1D(-vartemp)=.false. 
    870872      if (.not.icetrim(indice)) icetrim(-vartemp)=.false. 
    871873   endif     
  • trunk/SOURCES/steps_time_loop.f90

    r102 r111  
    110110  !------------------------------------------------------------------ 
    111111  if ((mod(abs(TIME),NDISP*1.).lt.dtmin).or.(isynchro.eq.1).or.(nt.eq.1)) then 
    112  
    113      call shortoutput() 
    114  
     112     call bilan_eau 
     113     call shortoutput 
    115114  endif 
    116115 
Note: See TracChangeset for help on using the changeset viewer.