Changeset 27


Ignore:
Timestamp:
12/15/15 23:56:34 (8 years ago)
Author:
dumas
Message:

Ant-40 : Antarctique 40km valide

Location:
trunk/SOURCES
Files:
3 added
1 deleted
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/SOURCES/Ant40_files/lect-anteis_mod.f90

    r4 r27  
    1414 
    1515  use module3D_phy 
    16    
    17 character(len=80) :: filin 
    18 real,dimension(nx,ny) ::  xcc , ycc      !< coordeonnes en m 
    19 real, dimension(nx,ny,5) :: bidon          !< pour l'appel a courbure 
     16  use interface_input 
     17  use io_netcdf_grisli 
     18 
     19  implicit none 
     20 
     21  character(len=100) :: topo_dep       ! Topo de départ 
     22  character(len=100) :: topo_ref       ! Topo de référence 
     23  character(len=100) :: grid_topo      ! fichier grille 
     24  character(len=100) :: ghf_fich       ! fichier grille 
     25  character(len=100) :: filin 
     26  character(len=100) :: file_ncdf      !< fichier netcdf issue des fichiers .dat 
     27 
     28!  character(len=100) :: file1 
     29!  character(len=100) :: file2 
     30 
     31  real, dimension(nx,ny,5) :: bidon          ! pour l'appel a courbure 
     32  real :: sealevel0 
     33 
    2034contains 
    2135  
    2236  subroutine input_topo 
    2337 
    24     !====================================== La reponse est 42 =========== 
     38    integer :: ios 
     39 
     40    namelist/topo_file/topo_ref,topo_dep,grid_topo,ghf_fich 
     41    rewind(num_param)        ! pour revenir au debut du fichier param_list.dat 
     42    read(num_param,topo_file) 
     43    ! formats pour les ecritures dans 42 
     44428 format(A) 
     45    write(num_rep_42,428)'!___________________________________________________________'  
     46    write(num_rep_42,428) '&topo_file                                  !  input_topo  ' 
     47    write(num_rep_42,'(A,A)') 'topo_ref = ', topo_ref 
     48    write(num_rep_42,'(A,A)') 'topo_dep = ', topo_dep 
     49    write(num_rep_42,'(A,A)') 'grid_topo =', grid_topo 
     50    write(num_rep_42,'(A,A)') 'ghf_fich = ', ghf_fich 
     51    write(num_rep_42,*)'/'                       
     52    write(num_rep_42,428) '! topo_ref= topo ref isostasie' 
     53    write(num_rep_42,428) '! topo_dep= topo de depart' 
     54    write(num_rep_42,428) '! grid_topo : fichier i,j,x,y,lon,lat' 
     55    write(num_rep_42,428) '! ghf_fich  : fichier flux geothermique'   
    2556    write(num_rep_42,*) 
    26     write(num_rep_42,*)' Fichiers en entree' 
    27     write(num_rep_42,*)'----------------------' 
    28     !====================================================================  
     57 
     58    topo_ref=trim(dirnameinp)//trim(topo_ref)  
     59    topo_dep=trim(dirnameinp)//trim(topo_dep)  
     60    grid_topo=trim(dirnameinp)//trim(grid_topo) 
     61    ghf_fich=trim(dirnameinp)//trim(ghf_fich) 
     62 
    2963 
    3064    ! lecture adaptee aux fichiers intercomparaison EISMINT 
    3165    nxx=nx 
    3266    nyy=ny 
    33     ! socle 
    34     !       filin=TRIM(DIRNAMEINP)//'bedelev-2000-40km.dat' 
    35     filin='bedelev-2000-40km.dat' 
    36     call lect_eis(nx,ny,BSOC,filin,DIRNAMEINP) 
    37     write(num_rep_42,*) 'fichier BSOC (socle) : ', filin  
    38     Bsoc0(:,:)=Bsoc(:,:) 
    39     !  surface 
    40     filin='surface-2000-40km.dat' 
    41     call lect_eis(nx,ny,S,filin,DIRNAMEINP) 
    42     write(num_rep_42,*) 'fichier surface : ', filin  
    43  
    44     !     epaisseur 
    45     filin='icethic-2000-40km.dat' 
    46     call lect_eis(nx,ny,H,filin,DIRNAMEINP) 
    47     write(num_rep_42,*) 'fichier epaisseur : ', filin  
    48     H0(:,:)=H(:,:) 
    49  
    50 !!$    !     coupure du shelf 
    51 !!$    filin=TRIM(DIRNAMEINP)//'coupe.ijz' 
    52 !!$    open(11,file=filin) 
    53 !!$    !     distcent devient la condition de coupure 
    54 !!$    do k=1,nx*ny 
    55 !!$       read(11,*) i,j,distcent(i,j) 
     67 
     68!!$!     lecture de la topo actuelle 
     69!!$!     --------------------------- 
     70!!$     open (20,file=TRIM(DIRNAMEINP)//file2,status='old') 
     71!!$        
     72!!$     read(20,'(A80)') TITRE 
     73!!$     read(20,*) NI,NJ,NXX,NYY,STEP 
     74!!$     read(20,*) 
     75!!$         do J=1,ny  
     76!!$          do I=1,nx 
     77!!$             read (20,*)  S0(I,J),H0(I,J),BSOC0(I,J) 
     78!!$             S0(i,j)=max(S0(i,j),0.) 
     79!!$          end do 
     80!!$        end do 
     81!!$     close(20) 
     82!!$ 
     83!!$      
     84!!$!     lecture de la topo de depart 
     85!!$!     --------------------------- 
     86!!$     open (20,file=TRIM(DIRNAMEINP)//file1,status='old') 
     87!!$!         open (20,file='../INPUT-DATA/hemin.g50') 
     88!!$     read(20,'(A80)') TITRE 
     89!!$     read(20,*) NI,NJ,NXX,NYY,STEP 
     90!!$     read(20,*) 
     91!!$         do J=1,ny  
     92!!$          do I=1,nx 
     93!!$             read (20,*) S(I,J),H(I,J),BSOC(I,J) 
     94!!$          end do 
     95!!$        end do 
     96!!$     close(20) 
     97 
     98    !     lecture de la topo de référence 
     99    !     ------------------------------- 
     100    ! Cette topo sert a calculer le socle de reference pour l'isostasie 
     101    ! voir init_iso et a avoir une surface de reference pour les temperatures 
     102    ! lecture adaptee aux fichiers ZBL.dat ou netcdf ou grd 
     103    call lect_input(1,'Bsoc',1,Bsoc0,topo_ref,file_ncdf)    ! socle 
     104    call lect_input(1,'S',1,S0,topo_ref,file_ncdf)          ! surface 
     105    call lect_input(1,'H',1,H0,topo_ref,file_ncdf)          ! epaisseur 
     106!cdc correction point pole sud : 
     107!    S0(71,71)=(S0(71,70)+S0(71,72)+S0(70,71)+S0(72,71))/4. 
     108!    Bsoc0(71,71)=(Bsoc0(71,70)+Bsoc0(71,72)+Bsoc0(70,71)+Bsoc0(72,71))/4. 
     109 
     110 
     111!    where (S0(:,:).GT.0) 
     112!       H0(:,:)=S0(:,:)-BSOC0(:,:) 
     113!    elsewhere 
     114!       H0(:,:)=1. 
     115!    endwhere 
     116 
     117    sealevel0=0.  ! voir a passer dans le fichier parametre 
     118    S0(:,:)=max(S0(:,:),sealevel0)   ! pour etre au niveau des mers : ATTENTION si SEALEV <0 
     119    mk0(:,:) = 1                   ! mk0=0 pour les zones interdites 
     120 
     121    !     lecture de la topo de depart 
     122    !     --------------------------- 
     123    ! lecture adaptee aux fichiers ZBL.dat ou netcdf ou grd 
     124    call lect_input(1,'Bsoc',1,Bsoc,topo_dep,file_ncdf)    ! socle 
     125    call lect_input(1,'S',1,S,topo_dep,file_ncdf)          ! surface 
     126    call lect_input(1,'H',1,H,topo_dep,file_ncdf)          ! epaisseur 
     127!    S(71,71)=(S(71,70)+S(71,72)+S(70,71)+S(72,71))/4. 
     128!    Bsoc(71,71)=(Bsoc(71,70)+Bsoc(71,72)+Bsoc(70,71)+Bsoc(72,71))/4. 
     129!    where (S(:,:).GT.0) 
     130!       H(:,:)=S(:,:)-BSOC(:,:) 
     131!    elsewhere 
     132!       H(:,:)=1. 
     133!    endwhere 
     134    S(:,:)=max(S(:,:),0.)   ! pour etre au niveau des mers : ATTENTION si SEALEV <0 
     135    H(:,:)=max(H(:,:),1.)   ! pour avoir au moins 1 m 
     136 
     137 
     138 
     139!!$ 
     140!!$    ! socle 
     141!!$    filin='bedelev-2000-40km.dat' 
     142!!$    call lect_eis(nx,ny,BSOC,filin,DIRNAMEINP) 
     143!!$    write(num_rep_42,*) 'fichier BSOC (socle) : ', filin  
     144!!$    Bsoc0(:,:)=Bsoc(:,:) 
     145!!$    !  surface 
     146!!$    filin='surface-2000-40km.dat' 
     147!!$    call lect_eis(nx,ny,S,filin,DIRNAMEINP) 
     148!!$    write(num_rep_42,*) 'fichier surface : ', filin  
     149!!$ 
     150!!$    !     epaisseur 
     151!!$    filin='icethic-2000-40km.dat' 
     152!!$    call lect_eis(nx,ny,H,filin,DIRNAMEINP) 
     153!!$    write(num_rep_42,*) 'fichier epaisseur : ', filin  
     154!!$    H0(:,:)=H(:,:) 
     155!!$ 
     156!!$ 
     157!!$    !     masque 
     158!!$    filin='maskHUY40km.dat' 
     159!!$    call lect_ieis(nx,ny,MK0,filin,DIRNAMEINP) 
     160!!$    write(num_rep_42,*) 'fichier masque : ', filin  
     161!!$ 
     162!!$    !     enlever les epaisseurs fictives de Philippe 
     163!!$    do I=1,NX 
     164!!$       do J=1,NY 
     165!!$          !     attention les valeurs de masque de Philippe sont differentes 
     166!!$          if ((MK0(I,J).gt.1).and.(H(i,j).le.218.00)) then ! mer libre 
     167!!$             H(i,j)=1.  
     168!!$             S(I,J)=H(i,j)-(RO/ROW)*H(i,j) 
     169!!$          endif 
     170!!$       end do 
    56171!!$    end do 
    57 !!$    close(11) 
    58 !!$    write(num_rep_42,*) 'coupure du shelf (pas activé ?) : ', filin  
    59  
    60     !     masque 
    61     filin='maskHUY40km.dat' 
    62     call lect_ieis(nx,ny,MK0,filin,DIRNAMEINP) 
    63     write(num_rep_42,*) 'fichier masque : ', filin  
    64  
    65 !!$ 
    66 !!$    !------------------------------------------------------- juillet 2007 ---- 
    67 !!$    ! corrections du socle pour favoriser les fleuves . A mettre aussi apres lect cptr 
    68 !!$ 
    69 !!$    filin=DIRNAMEINP//'corrections-bsoc.dat' 
    70 !!$ 
    71 !!$    write(num_rep_42,*) 'correction du socle dans',filin 
    72 !!$ 
    73 !!$    open(777,file=filin) 
    74 !!$    read(777,*,end=778) 
    75 !!$    read(777,*,end=778) 
    76 !!$    do k=1,nx*ny 
    77 !!$       read(777,*,end=778) i,j,bsoc(i,j) 
    78 !!$       H(i,j)=S(i,j)-Bsoc(i,j) 
    79 !!$       B(i,j)=S(i,j)-H(i,j) 
    80 !!$       write(166,*) i,j,bsoc(i,j) 
    81 !!$    end do 
    82 !!$778 continue 
    83 !!$    write(num_rep_42,*) k,'points corriges' 
    84 !!$    close(777) 
    85     !------------------------------------------------------------------------ 
    86  
    87  
    88     !     enlever les epaisseurs fictives de Philippe 
    89     do I=1,NX 
    90        do J=1,NY 
    91           !     attention les valeurs de masque de Philippe sont differentes 
    92           if ((MK0(I,J).gt.1).and.(H(i,j).le.218.00)) then ! mer libre 
    93              H(i,j)=1.  
    94              S(I,J)=H(i,j)-(RO/ROW)*H(i,j) 
    95           endif 
    96        end do 
    97     end do 
    98     S0(:,:)=S(:,:) 
    99  
    100  
     172 
     173 
     174!    S0(:,:)=S(:,:) 
    101175 
    102176    ! pour l'Antarctique masque mko vrai partout (version 2006) 
     
    115189 
    116190 
    117     ! calcul des courbures du socle 
    118  
    119     call courbure(nx,ny,dx,Bsoc,bidon(:,:,1),bidon(:,:,2),bidon(:,:,3), & 
    120          bidon(:,:,4),socle_cry,bidon(:,:,5)) 
    121  
    122     socle_cry(:,:)=socle_cry(:,:)*dx*dx 
     191! calcul des courbures du socle 
     192 
     193     call courbure(nx,ny,dx,Bsoc,bidon(:,:,1),bidon(:,:,2),bidon(:,:,3), & 
     194          bidon(:,:,4),socle_cry,bidon(:,:,5)) 
     195     socle_cry(:,:)=socle_cry(:,:)*dx*dx 
    123196 
    124197    ! lecture des coordonnées geographiques 
    125  
    126     filin=TRIM(DIRNAMEINP)//'coord-Ant-40km.dat' 
     198!    filin=TRIM(DIRNAMEINP)//'coord-Ant-40km.dat' 
    127199 
    128200    ! les coordonnees sont calculees en °dec avec GMT, 
    129201    ! les longitudes sont comprises entre -180 et +180 (negative a l'Ouest de 
    130202    ! Greenwich et positive a l'Est) 
    131     open(unit=2004,file=filin,iostat=ios) 
     203    open(unit=2004,file=grid_topo,iostat=ios) 
    132204    do k=1,nx*ny 
    133        read(2004,*) i,j,XCC(i,j),YCC(i,j),XLONG(i,j),YLAT(i,j) 
     205       read(2004,*) i,j,xcc(i,j),ycc(i,j),Xlong(i,j),Ylat(i,j) 
    134206    enddo 
    135207    close(2004) 
    136     write(num_rep_42,*) 'fichier grille: ', filin  
    137208 
    138209    xmin=xcc(1,1)/1000. 
     
    141212    ymax=ycc(nx,ny)/1000. 
    142213 
    143     !     lecture du fichier de reference pour le calcul du niveau des mers : etat actuel 
    144     open(88,file=TRIM(DIRNAMEINP)//'grzone56-k000.pl') 
    145  
    146     read(88,*) 
    147     read(88,*) 
    148     read(88,*) 
    149     do j=1,ny 
    150        do i=1,nx 
    151           read(88,*) S_sealev(i,j),H_sealev(i,j),B_sealev(i,j),M_sealev(i,j) 
    152        enddo 
    153     enddo 
    154     close(88) 
    155  
    156     write(num_rep_42,*) 'fichier reference pour le niveau des mers : ', &  
    157          TRIM(DIRNAMEINP)//'grzone56-k000.pl' 
     214!!$    !     lecture du fichier de reference pour le calcul du niveau des mers : etat actuel 
     215!!$    open(88,file=TRIM(DIRNAMEINP)//'grzone56-k000.pl') 
     216!!$ 
     217!!$    read(88,*) 
     218!!$    read(88,*) 
     219!!$    read(88,*) 
     220!!$    do j=1,ny 
     221!!$       do i=1,nx 
     222!!$          read(88,*) S_sealev(i,j),H_sealev(i,j),B_sealev(i,j),M_sealev(i,j) 
     223!!$       enddo 
     224!!$    enddo 
     225!!$    close(88) 
     226!!$ 
     227!!$    write(num_rep_42,*) 'fichier reference pour le niveau des mers : ', &  
     228!!$         TRIM(DIRNAMEINP)//'grzone56-k000.pl' 
    158229 
    159230    ! lecture du flux geothermique de Shapiro 
    160     open(88,file=TRIM(DIRNAMEINP)//'ijphi-40km-ant.dat') 
     231    open(88,file=ghf_fich) 
    161232 
    162233    write(num_rep_42,*) 'flux geothermique Shapiro : ', TRIM(DIRNAMEINP)//'ijphi-40km-ant.dat' 
     
    165236       read(88,*) i,j,ghf(i,j) 
    166237    end do 
     238    close(88) 
    167239 
    168240    ! pour passer les flux des mW/m2 au J/m2/an       
    169241    ghf(:,:)=-SECYEAR/1000.*ghf(:,:) 
    170242 
    171  
     243!------------------------------------------------ 
     244! mko vrai partout (version 2006) 
     245    MK0(:,:)=1 
     246 
     247!------------------------------------------------  
    172248 
    173249 
  • trunk/SOURCES/Ant40_files/massb-ant_perturb_Tparam.f90

    r4 r27  
    2525 
    2626 
    27 use module3D_phy 
    28 use climat_perturb_mod 
     27use module3D_phy,only:nx,ny,tann,tjuly,ta0,precip,acc,s,s0,tafor,retroac,rappact 
     28!use climat_perturb_mod 
    2929implicit none 
    3030 
     
    6060 
    6161       
    62 debug_3D(:,:,29)=Tann(:,:)-Ta0(:,:) 
    63 debug_3D(:,:,30)=Acc(:,:)-precip(:,:) 
     62!debug_3D(:,:,29)=Tann(:,:)-Ta0(:,:) 
     63!debug_3D(:,:,30)=Acc(:,:)-precip(:,:) 
    6464!debug_3D(:,:,31)=Acc(:,:)-bmelt(:,:) 
    6565       
  • trunk/SOURCES/Ant40_files/module_choix-antar40-0.4.f90

    r25 r27  
    4040 
    4141!--------------Lecture climat ref ------------------ 
    42 use lect_clim_act_anteis 
    43 ! use lect_clim_act_nord40 ! pour l'hemisphere nord et l'eurasie 
    44 ! use  climat_heino 
     42! Le climat de ref si necessaire est maintenant lu par le module de climat directement 
     43!use lect_clim_act_anteis 
     44 
    4545 
    4646!--------------Lecture climat forcage--------------- 
     47!use climat_forcage_mois_mod ! forcage mensuel GCM 1 Snapshot Fev 2015 
     48use climat_perturb_mod   ! climat perturbe a reverifier Dec 2015 
    4749 
    48 use climat_perturb_mod 
    4950!use climat_forcage_mod 
    5051!use climat_synthes_mod 
     
    5253!use climat_regions_delta 
    5354 
     55use ablation_mod ! calcul de l'ablation (PDD ou autre methode) 
     56!use no_ablation  ! pas de calcul de l'ablation => lecture fichier SMB (necessaire avec climat_Grice2sea_years_mod) 
     57 
    5458! pas de lacs proglaciaires 
    5559use no_lakes 
     60 
     61! suivi des traceurs ou pas ? 
     62!use tracer_mod  ! probablement pas compatible avec Hemin-40 actuellement 
     63use notracer_mod 
    5664 
    5765!--------------Choix isostasie---------------------- 
     
    7482 
    7583!use dragging_vitbil 
    76 ! use dragging_hwatstream 
    77  
     84!use dragging_hwatstream 
    7885!use dragging_hwat_cont 
    7986 
    80 use dragging_hwat_contmaj 
     87use dragging_hwat_contmaj ! frottement basal catherine grisliv8 ice stream peu actifs 
     88! use dragging_hwat_sedim version sediment HN 
    8189 
    82 ! module concernant l'eq. elliptique (pour les streams et shelves) 
     90!------------ spinup ----------------------------------- 
     91use no_spinup           ! spinup=0 
     92!use spinup_vitbil         ! plusieurs variantes de spinup : inclue le dragging 
     93                          ! enlever le use dragging dans ce cas là 
    8394 
    8495! use eq_elliptique_mod ! ancienne version (remplimat-5) 
     
    95106!--------------Fusion basale------------------------ 
    96107use bmelt_ant_regions ! pour l'Antarctique avec régions 
    97 ! USE BMELT_NOR_REGIONS ! pour le nord avec régions 
    98 ! use BMELT_NOR_DEPTH   ! pour le nord avec profondeur d'eau 
     108!use bmelt_nor_regions ! pour le nord avec régions 
     109!use bmelt_nor_depth   ! pour le nord avec profondeur d'eau 
    99110 
    100111 
  • trunk/SOURCES/Ant40_files/paradim-ant40_mod.f90

    r4 r27  
    2020! character 
    2121character(len=7),  parameter  ::  geoplace='anteis1' 
    22 character(len=17), parameter  :: dirnameinp='../INPUT/ANTEIS1/' !< input directory 
    23 character(len=17), parameter  :: dirforcage='../INPUT/Forcage/' !< input directory 
     22character(len=20), parameter  :: dirnameinp='../../INPUT/ANTEIS1/' !< input directory 
     23character(len=20), parameter  :: dirforcage='../../INPUT/Forcage/' !< input directory 
    2424 
    2525! dimensionnement grilles 
  • trunk/SOURCES/Greeneem_files/lect-greeneem_mod.f90

    r15 r27  
    66use interface_input 
    77use io_netcdf_grisli 
     8 
     9implicit none 
    810 
    911character(len=100) :: topo_dep       ! Topo de départ 
     
    2123 
    2224integer :: n1,n2,ndx 
     25real :: sealevel0 
    2326 
    2427contains 
     
    4245    write(num_rep_42,*)'/'                       
    4346    write(num_rep_42,428) '! topo_ref= topo actuelle' 
    44     write(num_rep_42,428) '! ghf0 flux geothermique en mW/m2' 
     47    write(num_rep_42,428) '! topo_dep= topo de depart' 
    4548    write(num_rep_42,428) '! grid_topo : fichier i,j,x,y,lon,lat' 
    4649    write(num_rep_42,428) '! ghf_fich  : fichier flux geothermique' 
  • trunk/SOURCES/Hemin40_files/lect-hemin40_mod.f90

    r9 r27  
    33  use module3D_phy 
    44   
    5     character(len=50) :: FILE1 ! CHARACTER(LEN=30) :: FILE1, FILE2,  FILE3 
     5    character(len=50) :: FILE1 
    66    character(len=50) :: FILE2 
    77    character(len=80) :: filin 
  • trunk/SOURCES/Makefile.grisli.inc

    r25 r27  
    4343mod_clim_tof = climat_forcage_mois_mod.o climat-forcage-insolation_mod_oneway.o \ 
    4444        climat-forcage-insolation_mod.o climat_GrIce2sea_years_mod.o \ 
     45        climat-perturb_mod-0.4.o \ 
    4546        ablation_mod.o no_ablation_mod.o  
    4647 
     
    210211        track_greeneem_mod.o  
    211212 
     213Liste_Ant40 = output_anta40_mod-0.4.o \ 
     214        lect-anteis_mod.o \ 
     215        bmelt-ant-regions_mod.o \ 
     216        fake-routines-ant_mod.o module_choix-antar40-0.4.o \ 
     217        track_ant40_mod.o 
     218 
    212219Liste_eura40 = output_eurasie40_mod-0.1.o \ 
    213220        lect-eurasie_mod.o lakes-prescribed_mod-0.1.o \ 
     
    268275 
    269276Dim_hemin15 = paradim-hemin15_mod.o geography-hemin15_mod.o 
     277 
     278Dim_Ant40 = paradim-ant40_mod.o geography-ant40_mod.o 
    270279 
    271280Dim_eura40 = paradim-euras40_mod.o geography-euras40_mod.o 
     
    603612        $(F_NETCDF) climat-forcage-insolation_mod.f90 
    604613 
     614climat-perturb_mod-0.4.o : climat-perturb_mod-0.4.f90 
     615        $(F_NETCDF) climat-perturb_mod-0.4.f90 
     616 
    605617ablation_mod.o : ablation_mod.f90 
    606618        $(FT) ablation_mod.f90 
     
    647659        $(FT) accum_month_lapsecouche.f90 
    648660 
    649 climat-perturb_mod-0.4.o : climat-perturb_mod-0.4.f90 
    650         $(FT) climat-perturb_mod-0.4.f90 
    651  
    652661climat-perturb-mois_mod.o : climat-perturb-mois_mod.f90 
    653662        $(FT) climat-perturb-mois_mod.f90 
     
    815824output_anta_mod-0.4.o : Antarctique_general_files/output_anta_mod-0.4.f90 
    816825        $(FT) Antarctique_general_files/output_anta_mod-0.4.f90 
     826 
     827output_anta40_mod-0.4.o : Ant40_files/output_anta40_mod-0.4.f90 
     828        $(FT) Ant40_files/output_anta40_mod-0.4.f90 
    817829 
    818830output_global_mod.o :output_global_mod.f90 
     
    16801692        $(routine_elliptiques) $(NCDF_LIB)  $(MKL_LIB) 
    16811693 
     1694Ant-40 : $(Dim_Ant40) $(mod_dim_communs) \ 
     1695        $(toy_recul)  \ 
     1696        $(mod_communs) \ 
     1697        $(mod_clim_tof) \ 
     1698        $(mod_no_tracers) \ 
     1699        $(mod_ell) $(Liste_Ant40) \ 
     1700        $(diagnoshelf) \ 
     1701        $(Liste_Netcdf) \ 
     1702        $(routines_communes) steps_time_loop.o \ 
     1703        $(routine_elliptiques) \ 
     1704        $(Liste_BLAS) 
     1705 
     1706        $(LK) -o  ../bin/Ant-40 \ 
     1707        $(Dim_Ant40) $(mod_dim_communs) \ 
     1708        $(toy_recul)  \ 
     1709        $(mod_communs) \ 
     1710        $(mod_clim_tof) \ 
     1711        $(mod_no_tracers) \ 
     1712        $(mod_ell) $(Liste_Ant40) \ 
     1713        $(diagnoshelf) \ 
     1714        $(Liste_Netcdf) \ 
     1715        $(routines_communes) steps_time_loop.o \ 
     1716        $(routine_elliptiques) $(NCDF_LIB)  $(MKL_LIB) $(Liste_BLAS) 
     1717 
    16821718 
    16831719 
  • trunk/SOURCES/climat-forcage_mod-0.4.f90

    r4 r27  
    8181 
    8282       !     atmospheric temperature gradient 
    83        tempgrad=0.008 
     83       tempgrad=0.0065   ! 0.0085 
    8484       tempgrjul=0.0065 
    8585 
     
    109109 
    110110       !     atmospheric temperature gradient 
    111        tempgrad=0.0085 
    112        tempgrjul=0.0085 
    113  
    114        ! fichiers snapshots pour forcage 
    115        !---------------------------------- 
    116        filtr(1)='../input-data/Snapshots-GCM/forcage-ant-20k.g40' 
    117        filtr(2)='../input-data/Snapshots-GCM/forcage-ant-00k.g40' 
    118        print*,'lecture de ',filin,filtr 
     111       tempgrad=0.0065   ! 0.0085 
     112       tempgrjul=0.0065 
     113 
     114       !cdc forcage modele IPSL LSCE Cycle 
     115       !            filtr(1)=TRIM(DIRNAMEINP)//'Snapshots-GCM/forcage_IPSL-21k.g40' 
     116       !            filtr(2)=TRIM(DIRNAMEINP)//'Snapshots-GCM/no_forcage_hn40-0k.g40' !climat act a 0ka 
     117       filtr(1)=TRIM(DIRNAMEINP)//'Snapshots-GCM/'//TRIM(forcage_file1) 
     118       filtr(2)=TRIM(DIRNAMEINP)//'Snapshots-GCM/'//TRIM(forcage_file2) 
     119       print*,'fichier de forcage 1',TRIM(DIRNAMEINP)//'Snapshots-GCM/'//TRIM(forcage_file1) 
     120       print*,'fichier de forcage 2',TRIM(DIRNAMEINP)//'Snapshots-GCM/'//TRIM(forcage_file2) 
     121 
    119122       ! fichiers donnant l'evolution temporelle 
    120123       ! ---------------------------- ------------ 
    121        filin=trim(dirforcage)//'forcmodif4cycles.dat' !forcage vostok en rapport : a creer 
     124       filin=trim(dirforcage)//'signal-cycle-hemin.dat' !forcage vostok en rapport : a creer 
    122125 
    123126    endif !fin du test sur geoplace 
  • trunk/SOURCES/climat-perturb_mod-0.4.f90

    r4 r27  
    55!> \namespace  climat_perturb_mod 
    66!!Module pour les variations temporelles des variables climatiques 
    7 !! \author ... 
    8 !! \date ... 
     7!! \author C. Dumas 
     8!! \date 12/2015 
    99!! @note Used modules: 
    1010!! @note   - use module3D_phy 
     
    1313 
    1414 
    15 use module3d_phy 
     15use module3d_phy,only:nx,ny,S,S0,Tann,Tjuly,precip,acc,Ylat,num_forc,num_param,num_rep_42,dirforcage,dirnameinp,tafor,time,sealevel,coefbmshelf 
     16 
    1617implicit none 
    1718 
     
    2021real,dimension(:),allocatable :: tpert          !< temperature for climate forcing 
    2122real,dimension(:),allocatable :: spert          !< sea surface perturbation 
     23 
     24real,dimension(nx,ny) :: ta0          !< initial air temperature at sea level annual 
    2225 
    2326real :: coefT                   !< pour modifier l'amplitude de la perturb. T 
     
    4346    character(len=8) :: control      !label to check clim. forc. file (filin) is usable 
    4447    character(len=80):: filin 
    45  
     48    integer ::  err                       !< pour l'allocation des tableaux 
     49    integer :: i 
    4650 
    4751    ! Lecture du forcage 
     
    106110subroutine init_forclim 
    107111 
     112 
     113  character(len=80):: filin 
     114  integer :: i,j 
     115  integer :: ivo,jvo 
    108116 
    109117namelist/clim_pert/coefT,rappact,retroac,rapbmshelf,mincoefbmelt,maxcoefbmelt,filforc 
     
    127135write(num_rep_42,*)'/'                             
    128136write(num_rep_42,*) 
     137 
     138 
     139 
     140!!!!!!!! ATTENTION AJOUTE POUR TEST MAIS A REMETTRE AU PROPRE PLUS TARD C. DUMAS !!!!!!!!!! 
     141!!!!!!!! ancien input_climat_ref de lect_clim_act_anteis 
     142!     accumulation de Philippe 
     143      filin='accumHUY40km.dat' 
     144      call lect_eis(nx,ny,precip,filin,DIRNAMEINP) 
     145!====================================== La reponse est 42 =========== 
     146      write(num_rep_42,*) 'fichier accum : ', filin  
     147 
     148!     cas particulier de Vostok 
     149      ivo=101 
     150      jvo=62 
     151      do j=jvo-1,jvo+1 
     152        do i=ivo-1,ivo+1 
     153            precip(i,j)=0.02         ! valeur plus faible a Vostok. 
     154        end do 
     155      end do 
     156      acc(:,:)=precip(:,:) 
     157 
     158!    temperature en surface : 
     159!    parametrisation de Fortuin pour la temperature annuelle. 
     160      do j=1,ny 
     161        do i=1,nx 
     162 
     163            if (s0(i,j).le.200.) then   ! shelfs 
     164               tann(i,j)=49.642-0.943*abs(ylat(i,j)) 
     165            else if ((s0(i,j).gt.200.).and.(s0(i,j).lt.1500.)) then ! pente 
     166               tann(i,j)=36.689-0.005102*s0(i,j)-0.725*abs(ylat(i,j)) 
     167            else if (s0(i,j).ge.1500.) then        ! plateau 
     168               tann(i,j)=7.405-0.014285*s0(i,j)-0.180*abs(ylat(i,j)) 
     169            endif 
     170 
     171            ta0(i,j)=tann(i,j) 
     172!           pour la temperature d'ete, idem parametrisation huybrechts 
     173            tjuly(i,j)=tann(i,j)-17.65+0.00222*s0(i,j)& 
     174                         +0.40802*abs(ylat(i,j)) 
     175        end do 
     176      end do 
     177!!!!!!!! FIN MODIF  TEMPORAIRE !!!!!!!!!! 
     178 
    129179 
    130180return 
     
    145195  !  coefbmelt : forcage fusion basale ice shelves  
    146196 
    147   use module3d_phy 
     197!  use module3d_phy 
    148198  implicit none 
     199  integer :: i,j,ift 
    149200 
    150201  !       time en dehors des limites du fichier forcage 
     
    192243  coefbmshelf=min(coefbmshelf,maxcoefbmelt) 
    193244 
    194   !      call massb_anteis_perturb()   
     245        call massb_perturb_Tparam   
    195246  !  massb_perturb_Tparam remplace desormais massb_anteis_perturb  
    196247  !  le code est le meme pour l'Antarctique (simplement passe en format libre) 
     
    198249 
    199250 
    200   call massb_perturb_Tparam 
    201  
    202  
    203  
    204  
    205  
    206251end subroutine forclim 
    207252 
     253subroutine massb_perturb_Tparam               ! calcule le mass balance en mode perturbation 
     254                                              ! avec la temperature parametree 
     255                                              ! version pour l'antarctique 
     256                                              ! simple copie nettoyee de massb_anteis_perturb 
     257  implicit none 
     258 
     259  integer :: i,j 
     260 
     261!     surface temperature et accumulation 
     262 
     263  do j=1,ny 
     264     do i=1,nx 
     265 
     266        if(retroac.eq.1) then 
     267 
     268           tann(i,j)=ta0(i,j)-0.00914*(s(i,j)-s0(i,j))+tafor 
     269           tjuly(i,j)=tann(i,j)-17.65+0.00222*s(i,j)  & 
     270                +0.40802*abs(ylat(i,j)) 
     271          
     272           acc(i,j)=precip(i,j)*exp(rappact*(tann(i,j)-ta0(i,j))) 
     273 
     274        else if(retroac.eq.0) then 
     275 
     276           tann(i,j)=ta0(i,j) 
     277           tjuly(i,j)=tann(i,j) 
     278           acc(i,j)=precip(i,j)*exp(rappact*(tann(i,j)-ta0(i,j))) 
     279        endif 
     280     end do 
     281  end do 
     282 
     283end subroutine massb_perturb_Tparam 
     284 
     285 
    208286end module  climat_perturb_mod 
  • trunk/SOURCES/climat_forcage_mois_mod.f90

    r22 r27  
    9999! Fichier ERA' en mm/jour 
    100100! FIchier NCEP2 en mm/s 
    101   do mo=1,nbmois 
    102      if (mo.eq.1.or.mo.eq.3.or.mo.eq.5.or.mo.eq.7.or.mo.eq.8.or.mo.eq.10.or.mo.eq.12) then 
    103 !        Pm(:,:,mo)= Pm(:,:,mo)*31.  ! ERA int 
    104         Pm(:,:,mo)= Pm(:,:,mo)*86400.*31./1000. ! NCEP2 
    105      elseif (mo.eq.4.or.mo.eq.6.or.mo.eq.9.or.mo.eq.11) then 
    106 !        Pm(:,:,mo)= Pm(:,:,mo)*30.  ! ERA int 
    107         Pm(:,:,mo)= Pm(:,:,mo)*86400.*30./1000. ! NCEP2 
    108      elseif (mo.eq.2) then 
    109 !        Pm(:,:,mo)= Pm(:,:,mo)*28.25  ! ERA int 
    110         Pm(:,:,mo)= Pm(:,:,mo)*86400.*28.25/1000. ! NCEP2 
    111      else 
    112         print*,'ERREUR CONVERSION Precip input_clim climat_forcage_mois_mod' 
    113      endif 
    114   enddo 
     101!!$  do mo=1,nbmois 
     102!!$     if (mo.eq.1.or.mo.eq.3.or.mo.eq.5.or.mo.eq.7.or.mo.eq.8.or.mo.eq.10.or.mo.eq.12) then 
     103!!$!        Pm(:,:,mo)= Pm(:,:,mo)*31.  ! ERA int 
     104!!$        Pm(:,:,mo)= Pm(:,:,mo)*86400.*31./1000. ! NCEP2 
     105!!$     elseif (mo.eq.4.or.mo.eq.6.or.mo.eq.9.or.mo.eq.11) then 
     106!!$!        Pm(:,:,mo)= Pm(:,:,mo)*30.  ! ERA int 
     107!!$        Pm(:,:,mo)= Pm(:,:,mo)*86400.*30./1000. ! NCEP2 
     108!!$     elseif (mo.eq.2) then 
     109!!$!        Pm(:,:,mo)= Pm(:,:,mo)*28.25  ! ERA int 
     110!!$        Pm(:,:,mo)= Pm(:,:,mo)*86400.*28.25/1000. ! NCEP2 
     111!!$     else 
     112!!$        print*,'ERREUR CONVERSION Precip input_clim climat_forcage_mois_mod' 
     113!!$     endif 
     114!!$  enddo 
    115115 
    116116 
  • trunk/SOURCES/lect-eis.F

    r4 r27  
    1818 
    1919      implicit none 
    20       character(len=17)  :: DIRNAMEINP 
     20      character(len=20)  :: DIRNAMEINP 
    2121      integer nx,ny,i,j,kdum 
    2222      real data(nx,ny) 
     
    2727 
    2828      filin = TRIM(DIRNAMEINP)//TRIM(filin) 
    29  
    3029 
    3130      open(num_coupe,file=filin) 
     
    4544 
    4645       implicit none 
    47       character(len=17)  :: DIRNAMEINP 
     46      character(len=20)  :: DIRNAMEINP 
    4847       integer nx,ny,i,j,kdum 
    4948       integer data(nx,ny) 
Note: See TracChangeset for help on using the changeset viewer.