Changeset 77 for branches


Ignore:
Timestamp:
07/05/16 11:20:52 (8 years ago)
Author:
dumas
Message:

Merge branche iLOVECLIM sur rev 76

Location:
branches/iLoveclim
Files:
43 deleted
70 edited
48 copied

Legend:

Unmodified
Added
Removed
  • branches/iLoveclim

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

    r38 r77  
    254254  real, dimension(nx,ny) :: coef_drag   !< coefficient de la loi de friction non lineaire : depend de la valeur de alpha_drag 
    255255                                        !< si alpha_drag = 1, coef_drag = drag_centre   
     256  real, dimension(nx,ny) :: betamax_2d  !< (Pa) frottement maxi sous les streams 
    256257  ! 
    257258  real,dimension(nx,ny),target :: BM           !< mass balance   'o' 
     
    470471  logical,dimension(nx,ny) :: cotemx    !< points cotiers ">" 
    471472  logical,dimension(nx,ny) :: cotemy    !< points cotiers "^" 
     473  logical,dimension(nx,ny) :: fleuvemx  !< actual grounded stream 
     474  logical,dimension(nx,ny) :: fleuvemy  !< actual grounded stream 
    472475  logical,dimension(nx,ny) :: isolx     !< designe un point sans voisin sur ses faces x 
    473476  logical,dimension(nx,ny) :: isoly     !< designe un point sans voisin sur ses faces y 
  • branches/iLoveclim/SOURCES/ANT15-LBq_files/module_choix_antar15_LBq.f90

    r4 r77  
    3636! use lect_topo_anteis    ! pour l'antarctique 40 km 
    3737 
    38 use lect_topo_ant_gen    ! read antarctic topo with .dat files 
     38!use lect_topo_ant_gen    ! read antarctic topo with .dat files Catherine 
     39use lect_topo_anteis    ! pour l'antarctique 40 km ou 15km Christophe 
    3940!use lect_topo_ant_CISM_gen 
    4041!use lect_topo_nord40    ! pour l'hemisphere nord 40 km 
     
    4546 
    4647! use lect_clim_act_ant_gen 
    47 use lect_clim_acc_T_ant_gen 
     48! use lect_clim_acc_T_ant_gen ! module Catherine climat Antarctique 
     49 
     50!--------------Module climat --------------- 
     51!use climat_forcage_mois_mod ! forcage mensuel GCM 1 Snapshot Fev 2015 
     52!use climat_Grice2sea_years_mod  ! climat force par fichier SMB directement (grice2sea) 
     53use climat_Grice2sea_years_perturb_mod ! forcage avec SMB type MAR et evolutionn temporelle (futur ou carotte) 
    4854 
    4955! use lect_clim_act_nord40 ! pour l'hemisphere nord et l'eurasie 
     
    5157 
    5258!--------------Lecture climat forcage--------------- 
    53 use climat_perturb_mod 
     59!use climat_perturb_mod 
    5460!use climat_forcage_mod 
    5561!use climat_synthes_mod 
    5662!use climat_profil_mod 
    5763!use climat_regions_delta 
     64 
     65!use ablation_mod ! calcul de l'ablation (PDD ou autre methode) 
     66use no_ablation  ! pas de calcul de l'ablation => lecture fichier SMB (necessaire avec climat_Grice2sea_years_mod) 
    5867 
    5968! pas de lacs proglaciaires 
     
    6473! attention tracer fait appel a un modele climat qui doit etre compatible avec celui choisi  
    6574! dans modile choix. 
    66  
    6775use notracer_mod 
    6876 
     
    7583!use deformation_mod  ! module concernant les lois de deformation 
    7684use deformation_mod_2lois   ! module concernant les lois de deformation 
    77  
    78 !--------------Module propriete thermique de la glace 
    79 use  prop_thermiques_ice 
    80 ! use prop_therm_ice_heino 
    8185 
    8286! eau basale 
     
    104108! use dragging_beta_buoy     ! beta fonction de la flottaison 
    105109 
    106 use dragging_beta_nolin      ! beta non lineaire 
     110!use dragging_beta_nolin      ! beta non lineaire 
     111 
     112use dragging_neff_slope ! dragging Aurelien et Christophe 
    107113 
    108114!use beta_iter_vitbil_mod 
     
    111117!use dragging_plastic_LGM 
    112118!------------ spinup ----------------------------------- 
    113  use no_spinup           ! spinup=0 ou spinup=1  
     119use no_spinup           ! spinup=0 ou spinup=1  
    114120! use spinup_vitbil      ! plusieurs variantes de spinup : inclue le dragging 
    115121                         ! enlever le use dragging dans ce cas là 
     
    133139!use bmelt_ant_regions ! pour l'Antarctique avec régions 
    134140 
    135 use bmelt_seuil_prof 
     141!use bmelt_seuil_prof 
     142use bmelt_ant_regions ! pour l'Antarctique avec régions 
    136143 
    137 ! USE BMELT_NOR_REGIONS ! pour le nord avec régions 
     144! use BMELT_NOR_REGIONS ! pour le nord avec régions 
    138145! use BMELT_NOR_DEPTH   ! pour le nord avec profondeur d'eau 
    139146 
  • branches/iLoveclim/SOURCES/ANT15-LBq_files/paradim-ant15_LBq_mod.f90

    r4 r77  
    1616! character 
    1717character(len=7),  parameter  :: geoplace='A-LBq15' 
    18 character(len=23), parameter  :: dirnameinp='../INPUT/ANT-LBq-15km/' !< input directory 
    19 character(len=17), parameter  :: dirforcage='../INPUT/Forcage/'      !< input directory 
     18character(len=25), parameter  :: dirnameinp='../../INPUT/ANT-LBq-15km/' !< input directory 
     19character(len=20), parameter  :: dirforcage='../../INPUT/Forcage/'      !< input directory 
    2020 
    2121! dimensionnement grilles 
  • branches/iLoveclim/SOURCES/Ant40_files/bmelt-ant-regions_mod.f90

    r52 r77  
    1414MODULE  BMELT_ANT_REGIONS         ! cat juillet 2005 
    1515 
    16   USE module3D_phy 
    17  
    18  
     16  use module3D_phy 
     17  use netcdf 
     18  use io_netcdf_grisli 
     19   
    1920  implicit none 
    2021 
     
    2627  !< utilises pour moduler la fusion sous le shelf 
    2728  integer, dimension(10) :: region      !< pour écrire dans le fichier param 
    28   character(len=30),dimension(10) :: regname !< nom des régions  
     29  character(len=30),dimension(10) :: regname !< nom des régions 
     30  character(len=100) :: file_number_shelves ! fichier avec les zones ice-shelves 
    2931  real :: bsupshelf 
    3032  integer :: grd                        !< pour une sortie  
     
    3840  real :: bmelt_talus,bmgrz_talus       !< Au dela du talus continental 
    3941  real :: bmelt_coef                    !< Coef pour corriger les valeurs std de bmelt (lu dans namelist) 
     42  real, parameter :: depth_talus=-2500. !< Profondeur du talus continental 
    4043 
    4144CONTAINS 
     
    4649    ! Cette routine fait l'initialisation pour la fusion basale. 
    4750    ! Elle est appelée par inputfile-vec-0.5.f90 
    48  
     51         
     52    real*8, dimension(:,:),   pointer    :: tab               !< tableau 2d real pointer 
    4953 
    5054    namelist/bmelt_ant_reg/bmelt_Ross,bmgrz_Ross,bmelt_FRis,bmgrz_FRis,  &  
    5155         bmelt_Amery,bmgrz_Amery,bmelt_PIG,bmgrz_PIG,  & 
    5256         bmelt_Pen,bmgrz_Pen,bmelt_other,bmgrz_other,  &        
    53          bmelt_talus,bmgrz_talus,bmelt_coef       
     57         bmelt_talus,bmgrz_talus,bmelt_coef,file_number_shelves       
    5458 
    5559 
     
    7882    write(num_rep_42,*) 'bmgrz_talus     = ',bmgrz_talus 
    7983    write(num_rep_42,*) 'bmelt_coef      = ',bmelt_coef 
     84    write(num_rep_42,*) 'file_numer_shelves = ',file_number_shelves 
    8085    write(num_rep_42,*)'/'                             
    8186    write(num_rep_42,428) '! bmelt_Ross & bmgrz_Ross    :  fonte basale secteur Ross' 
     
    8792    write(num_rep_42,428) '! bmelt_talus & bmgrz_talus  :  fonte basale apres talus cont' 
    8893    write(num_rep_42,428) '! bmelt_coef                 :  coef fonte (1 pour conserver val)' 
     94    write(num_rep_42,428) '! file_numer_ice-shelves     : fichier zones ice shelves' 
    8995    write(num_rep_42,*) 
    9096 
    9197 
    92     !    ecriture dans le fichier parametres 
    93     write(num_rep_42,*)'fusion basale sous les ice shelves : bmelt-ant-regions_mod' 
    94     write(num_rep_42,*)'----------------------------------------------------------' 
    95  
    96  
    97     ! lecture du fichier contenant les distances au talu continental (m) 
    98     open(88,file=TRIM(DIRNAMEINP)//'distance_talu-40km.xy') 
    99  
    100     do j=1,ny 
    101        do i=1,nx 
    102           read(88,'(i3,1x,i3,1x,f10.2)') k,k,dist_talu(i,j) 
    103        enddo 
    104     enddo 
    105     close(88) 
    106  
    107     ! les bords de la grille sont mis a dist_talus=0 de force 
    108  
    109  
    110     dist_talu(1,:)=0.   !a gauche 
    111     dist_talu(2,:)=0. 
    112  
    113     dist_talu(nx-1,:)=0. !  a droite  
    114     dist_talu(nx,:)=0.   
    115  
    116     dist_talu(:,1)=0.    ! en bas    
    117     dist_talu(:,2)=0. 
    118  
    119     dist_talu(:,ny-1)=0.    ! en haut 
    120     dist_talu(:,ny)=0. 
    121  
    122  
    123     debug_3D(:,:,32)=dist_talu(:,:) 
    12498 
    12599    ! lecture du fichier contenant les types de shelves Ronne-Flichner 
    126100    !  ->1, Ross -> 2 , Amery -> 3, PIG-> 4, les petits shelves au dessus de PIG -> 5 
    127  
    128     open(88,file=TRIM(DIRNAMEINP)//'numer-ice-shelves-juil07.dat',status='OLD') 
    129101    typeshelf(:,:)=100 
    130     do k=1,nx*ny 
    131        read(88,*,end=36) i,j,typeshelf(i,j) 
    132     end do 
    133 36  close(88) 
    134  
    135  
     102    file_number_shelves=TRIM(DIRNAMEINP)//trim(file_number_shelves) 
     103!    call lect_input(1,'z',1,typeshelf,file_number_shelves,file_ncdf) 
     104        call Read_Ncdf_var('z',file_number_shelves,tab) 
     105        typeshelf(:,:)  = tab(:,:) 
     106!    open(88,file=TRIM(DIRNAMEINP)//'numer-ice-shelves-juil07.dat',status='OLD') 
     107!    open(88,file=TRIM(file_number_shelves),status='OLD') 
     108!       do j=1,ny 
     109!               do i=1,nx 
     110!                       read(88,*) typeshelf(i,j) 
     111!       enddo    
     112!       enddo 
     113!       close(88) 
    136114 
    137115    region(:)=0 
     
    147125       do i=1,nx 
    148126 
    149           talus:    if (dist_talu(i,j).GT.5000.) then 
     127          talus:    if (Bsoc(i,j).GT.depth_talus) then 
    150128             if (nint(typeshelf(i,j)).eq.1) then ! Ronne-Filchner FRis 
    151129                bmshelf(i,j)=bmelt_FRis          
     
    227205       enddo 
    228206    enddo bms_init 
     207     
    229208 
    230209    bmshelf(:,:)=bmshelf(:,:)*bmelt_coef 
     
    247226       do i=2,nx-1 
    248227 
    249           talus_nochange : if (typeshelf(i,j).lt.10) then  
     228          talus_nochange : if (Bsoc(i,j).GT.depth_talus) then  
    250229             coef_talus = coefbmshelf 
    251230          else 
    252              coef_talus = 1         ! pas de changement au dela du talus continental 
     231             coef_talus = 1         ! pas de changement au dela du talus continental                
    253232          endif talus_nochange 
    254233 
  • branches/iLoveclim/SOURCES/Ant40_files/lect-anteis_mod.f90

    r52 r77  
    3737 
    3838    integer :: ios 
     39    ! pour les lectures ncdf 
     40    real*8, dimension(:,:),   pointer    :: tab               !< tableau 2d real pointer 
    3941 
    4042    namelist/topo_file/topo_ref,topo_dep,grid_topo,ghf_fich 
     
    101103    ! voir init_iso et a avoir une surface de reference pour les temperatures 
    102104    ! 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 
     105!    call lect_input(1,'Bsoc',1,Bsoc0,topo_ref,file_ncdf)    ! socle 
     106!    call lect_input(1,'S',1,S0,topo_ref,file_ncdf)          ! surface 
     107!    call lect_input(1,'H',1,H0,topo_ref,file_ncdf)          ! epaisseur 
     108 
     109! lecture pour eviter plantage avec compile -O0 
     110     call Read_Ncdf_var('Bsoc',topo_ref,tab) 
     111     Bsoc0(:,:)  = tab(:,:) 
     112     call Read_Ncdf_var('S',topo_ref,tab) 
     113     S0(:,:)  = tab(:,:) 
     114     call Read_Ncdf_var('H',topo_ref,tab) 
     115     H0(:,:)  = tab(:,:) 
    106116!cdc correction point pole sud : 
    107117!    S0(71,71)=(S0(71,70)+S0(71,72)+S0(70,71)+S0(72,71))/4. 
     
    127137    !     --------------------------- 
    128138    ! lecture adaptee aux fichiers ZBL.dat ou netcdf ou grd 
    129     call lect_input(1,'Bsoc',1,Bsoc,topo_dep,file_ncdf)    ! socle 
    130     call lect_input(1,'S',1,S,topo_dep,file_ncdf)          ! surface 
    131     call lect_input(1,'H',1,H,topo_dep,file_ncdf)          ! epaisseur 
     139!    call lect_input(1,'Bsoc',1,Bsoc,topo_dep,file_ncdf)    ! socle 
     140!    call lect_input(1,'S',1,S,topo_dep,file_ncdf)          ! surface 
     141!    call lect_input(1,'H',1,H,topo_dep,file_ncdf)          ! epaisseur 
     142    ! lecture pour eviter plantage avec compile -O0 
     143     call Read_Ncdf_var('Bsoc',topo_dep,tab) 
     144     Bsoc(:,:)  = tab(:,:) 
     145     call Read_Ncdf_var('S',topo_dep,tab) 
     146     S(:,:)  = tab(:,:) 
     147     call Read_Ncdf_var('H',topo_dep,tab) 
     148     H(:,:)  = tab(:,:) 
     149     
    132150!    S(71,71)=(S(71,70)+S(71,72)+S(70,71)+S(72,71))/4. 
    133151!    Bsoc(71,71)=(Bsoc(71,70)+Bsoc(71,72)+Bsoc(70,71)+Bsoc(72,71))/4. 
     
    242260!    close(88) 
    243261 
    244     call lect_input(1,'ghf',1,ghf,ghf_fich,file_ncdf) 
     262!    call lect_input(1,'ghf',1,ghf,ghf_fich,file_ncdf) 
     263    ! pour eviter plantage -O0 
     264    call Read_Ncdf_var('ghf',ghf_fich,tab) 
     265    ghf(:,:)  = tab(:,:) 
    245266 
    246267    ! pour passer les flux des mW/m2 au J/m2/an       
  • branches/iLoveclim/SOURCES/Ant40_files/module_choix-antar40-0.4.f90

    r45 r77  
    4545 
    4646!--------------Lecture climat forcage--------------- 
    47 use climat_forcage_mois_mod ! forcage mensuel GCM 1 Snapshot Fev 2015 
     47!use climat_forcage_mois_mod ! forcage mensuel GCM 1 Snapshot Fev 2015 
    4848!use climat_perturb_mod   ! climat perturbe a reverifier Dec 2015 
    4949!use climat_Grice2sea_years_mod  ! climat force par fichier SMB directement (grice2sea) 
     50use climat_Grice2sea_years_perturb_mod ! climat force par fichier SMB directement (grice2sea) + index temperature carotte de glace 
     51 
    5052 
    5153!use climat_forcage_mod 
     
    5456!use climat_regions_delta 
    5557 
    56 use ablation_mod ! calcul de l'ablation (PDD ou autre methode) 
    57 !use no_ablation  ! pas de calcul de l'ablation => lecture fichier SMB (necessaire avec climat_Grice2sea_years_mod) 
     58!use ablation_mod ! calcul de l'ablation (PDD ou autre methode) 
     59use no_ablation  ! pas de calcul de l'ablation => lecture fichier SMB (necessaire avec climat_Grice2sea_years_mod) 
    5860 
    5961! pas de lacs proglaciaires 
     
    7880! sliding- dragging 
    7981! use module sliding_vitbal 
    80 use sliding_Bindschadler 
     82! use sliding_Bindschadler 
     83use no_sliding 
    8184! use sliding_dragging_heino    ! loi de glissement heino : mis dans diffusiv :  
    8285 
     
    8689!use dragging_hwat_cont 
    8790 
    88 use dragging_hwat_contmaj ! frottement basal catherine grisliv8 ice stream peu actifs 
    89 ! use dragging_neff_contmaj ! dragging Aurelien et Christophe Fev 2016 
     91!use dragging_hwat_contmaj ! frottement basal catherine grisliv8 ice stream peu actifs 
     92use dragging_neff_slope ! dragging Aurelien et Christophe 
    9093! use dragging_hwat_sedim version sediment HN 
    9194 
     
    107110 
    108111!--------------Fusion basale------------------------ 
    109 !use bmelt_ant_regions ! pour l'Antarctique avec régions 
    110 use bmelt_ant_regions_oce ! pour Ant region et temp ocean 
     112use bmelt_ant_regions ! pour l'Antarctique avec régions 
     113!use bmelt_ant_regions_oce ! pour Ant region et temp ocean 
    111114!use bmelt_nor_regions ! pour le nord avec régions 
    112115!use bmelt_nor_depth   ! pour le nord avec profondeur d'eau 
  • branches/iLoveclim/SOURCES/Antarctique_general_files/output_anta_mod-0.4.f90

    r4 r77  
    123123     
    124124    filout   = runname//'_vol_regions.dat' 
    125     filout    = TRIM(DIRNAMEOUT)//'time-series/'//TRIM(filout) 
     125    filout    = TRIM(DIRNAMEOUT)//TRIM(filout) 
    126126    open(nvol,file=filout) 
    127127     
    128128    filout   = runname// '_volbuoy_regions.dat' 
    129     filout    = TRIM(DIRNAMEOUT)//'time-series/'//TRIM(filout) 
     129    filout    = TRIM(DIRNAMEOUT)//TRIM(filout) 
    130130    open(nvolbuoy,file=filout) 
    131131     
    132132    filout   = runname//'_meanhdot_regions.dat' 
    133     filout    = TRIM(DIRNAMEOUT)//'time-series/'//TRIM(filout) 
     133    filout    = TRIM(DIRNAMEOUT)//TRIM(filout) 
    134134    open(nhdot,file=filout) 
    135135     
    136136    filout   = runname//'_sigmahdot_regions.dat' 
    137     filout    = TRIM(DIRNAMEOUT)//'time-series/'//TRIM(filout) 
     137    filout    = TRIM(DIRNAMEOUT)//TRIM(filout) 
    138138    open(nsigma_hdot,file=filout) 
    139139     
    140140    filout   = runname//'_nbpoints_regions.dat' 
    141     filout    = TRIM(DIRNAMEOUT)//'time-series/'//TRIM(filout) 
     141    filout    = TRIM(DIRNAMEOUT)//TRIM(filout) 
    142142    open(npoints,file=filout) 
    143143     
  • branches/iLoveclim/SOURCES/Draggings_modules/beta_iter_vitbil_mod.f90

    r8 r77  
    9999    betamy_file = trim(dirnameinp)//trim(betamy_file) 
    100100    betamax = beta_limgz 
    101  
     101    betamax_2d(:,:) = betamax 
    102102 
    103103!    call lect_input(1,'beta_c',1,drag_centre,beta_c_file,'') 
     
    345345    end where 
    346346 
     347        fleuvemx(:,:)=gzmx(:,:) 
     348        fleuvemy(:,:)=gzmy(:,:) 
    347349    
    348350  end subroutine gzm_beta_prescr 
  • branches/iLoveclim/SOURCES/Draggings_modules/dragging_prescr_beta_buoyency_mod.f90

    r4 r77  
    100100    betamy_file = trim(dirnameinp)//trim(betamy_file) 
    101101    betamax = beta_limgz 
     102    betamax_2d(:,:) = betamax 
    102103 
    103104!  read the beta value on centered and staggered grids 
     
    327328    end where 
    328329 
     330        fleuvemx(:,:)=gzmx(:,:) 
     331        fleuvemy(:,:)=gzmy(:,:) 
    329332 
    330333     
  • branches/iLoveclim/SOURCES/Draggings_modules/dragging_prescr_beta_mod.f90

    r4 r77  
    8282    betamy_file = trim(dirnameinp)//trim(betamy_file) 
    8383    betamax = beta_limgz 
     84    betamax_2d(:,:) = betamax 
    8485 
    8586!  read the beta value on centered and staggered grids 
     
    336337    end where 
    337338 
    338  
     339        fleuvemx(:,:)=gzmx(:,:) 
     340        fleuvemy(:,:)=gzmy(:,:) 
    339341     
    340342  end subroutine gzm_beta_prescr 
  • branches/iLoveclim/SOURCES/Draggings_modules/dragging_prescr_beta_nolin_mod.f90

    r4 r77  
    169169    betamy_file = trim(dirnameinp)//trim(betamy_file) 
    170170    betamax = beta_limgz 
     171    betamax2d(:,:) = betamax 
    171172 
    172173 
     
    434435    end where 
    435436 
    436  
     437        fleuvemx(:,:)=gzmx(:,:) 
     438        fleuvemy(:,:)=gzmy(:,:) 
    437439     
    438440  end subroutine gzm_beta_prescr 
  • branches/iLoveclim/SOURCES/Fichiers-parametres/A-LBq15_LISTE-VAR-NETCDF.dat

    r4 r77  
    8282~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fin du header commentaire                                                                    
    8383============================================ classe 1  
    84 1       100     4           ! class 1 nombre de snapmax 100 4 type de noeud  
     841       220     4           ! class 1 nombre de snapmax 100 4 type de noeud  
    8585'o'     '>'       '^'       'x'                                         
    8686----------------------------------------------------------- 
     
    114114Bm               
    11511510 
    116 1       0       -1                               
     1161       1       1                                
    117117----------------------------------------------------------- 
    118118Acc              
    11911911       
    120 0       4       0                                
     1201       1       1                                
    121121----------------------------------------------------------- 
    122122Abl              
    12312312 
    124 1       0       -1               
     1241       1       1                
    125125----------------------------------------------------------- 
    126126Calv             
    12712713 
    128 0       1       -1                               
     1280       1       1                                
    129129----------------------------------------------------------- 
    130130dHdt             
     
    134134Tann             
    13513518 
    136 1       0       -1                       
     1361       1       1                        
    137137----------------------------------------------------------- 
    138138Tjja             
    13913919 
    140 1       0       -1                       
     1401       1       1                        
    141141----------------------------------------------------------- 
    142142Tb               
     
    1441441       1       1                        
    145145----------------------------------------------------------- 
     146ghf 
     14723 
     1481       1      -1 
     149----------------------------------------------------------- 
    146150phid             
    14715124       
    148 1       0       -1                               
     1521       1       1                                
    149153----------------------------------------------------------- 
    150154Bmelt            
    15115525 
    152 1       0       -1                               
     1561       1       1                                
    153157----------------------------------------------------------- 
    154158Uxbar_maj                
    15515930 
    156 0       1       1                                
     1601       1       1                                
    157161----------------------------------------------------------- 
    158162Uybar_maj                
    15916331 
    160 0       1       1                        
     1641       1       1                        
    161165----------------------------------------------------------- 
    162166Umag             
     
    1681721       1       1                                
    169173----------------------------------------------------------- 
    170  
    171  
     174bm_ref_t 
     175197 
     1761       1       1 
     177----------------------------------------------------------- 
     178grad_bm 
     179198 
     1801       1       1 
     181----------------------------------------------------------- 
     182bm_time 
     183199 
     1841       1       1 
     185----------------------------------------------------------- 
    172186============================================ classe 2  
    173 2       100     3  ! class 2 nombre de snapmax 100  3 type de noeud a sortir 
     1872       220     3  ! class 2 nombre de snapmax 100  3 type de noeud a sortir 
    174188'>'     '^'     'o'      
    175189----------------------------------------------------------- 
     
    204218frtmx            
    20521940 
    206 0       0       -1                               
     2201       1       1                                
    207221----------------------------------------------------------- 
    208222frtmy            ! sur noeud mineur      
    20922341 
    210 0       0       -1                               
     2241       1       1                                
    211225----------------------------------------------------------- 
    212226tobmx            ! sur noeud mineur      
    21322742 
    214 0       1       1                                        
     2281       1       1                                        
    215229----------------------------------------------------------- 
    216230tobmy            
    21723143 
    218 0       1       1                                        
     2321       1       1                                        
    219233----------------------------------------------------------- 
    220234toshe            
     
    224238epsxx           !'o'     
    22523945 
    226 1       0       -1                                       
     2401       3       -1                                       
    227241----------------------------------------------------------- 
    228242epsyy           !'o'     
    22924346 
    230 1       0       -1                                       
     2441       3       -1                                       
    231245----------------------------------------------------------- 
    232246epsxy           !'x'     
    23324747 
    234 1       0       1                                        
     2481       3       1                                        
    235249----------------------------------------------------------- 
    236250eps             'o'      
    23725148 
    238 1       0       1 
    239 ----------------------------------------------------------- 
    240 Abar            'o'      
    241 49 
    242 1       1       1                                        
     2521       3       1                                        
    243253----------------------------------------------------------- 
    244254pvi              ! 'o'   
     
    264274Hwat             
    26527560 
    266 0       1       1                                        
     2761       1       1                                        
    267277----------------------------------------------------------- 
    268278Hdw              
     
    292302Nefmx            
    29330368 
    294 0       1       1                                        
     3041       1       1                                        
    295305----------------------------------------------------------- 
    296306Nefmy            
    29730769 
    298 0       2       1                                        
     3081       2       1                                        
    299309----------------------------------------------------------- 
    300310posx             
     
    316326H_uw_x 
    317327192 
    318 0       1       1 
     3281       1       1 
    319329----------------------------------------------------------- 
    320330H_uw_y 
    321331193 
    322 0       1       1 
    323 ----------------------------------------------------------- 
    324 time_float 
    325 194 
    3263321       1       1 
    327333----------------------------------------------------------- 
  • branches/iLoveclim/SOURCES/Fichiers-parametres/A-LBq15_TEMPS-NETCDF.dat

    r4 r77  
    1515----------------------------------------------------------------------- 
    16164       ndtsortie      lecture de dtncdf de sortie 
    17 10. 
     175000. 
    181810000. 
    191920000. 
    20201.e10 
    2121------------------------------------------------------------------------------------------- 
    22 24      npredeft        lecture de predef_tsort 
    23 1990 
    24 1991 
    25 1992 
    26 1993 
    27 1994 
    28 1995 
    29 1996 
    30 1997 
    31 1998 
    32 1999 
     229       npredeft        lecture de predef_tsort 
     23-21000 
     2410 
     25100 
     26200 
     27500 
     281000 
    33292000 
    34 2001 
    35 2002 
    36 2003 
    37 2004 
    38 2005 
    39 2006 
    40 2007 
    41 2008 
    42 2008 
    43 2010 
    44 2011 
    45 2012 
    46 2015 
    47 2 
    48 6 
    49 7 
    50 8 
    51 9 
    52 10. 
    53 11 
    54 12 
    55 13 
    56 14 
    57 16 
    58 17 
    59 18 
    60 19 
    61 15. 
    62 20. 
    63 30. 
    64 40. 
    65 50. 
    66 150 
    67 20. 
    68 100. 
    69 500. 
    70 5. 
    71 10. 
    72 ======= 
    73 20. 
    74 50. 
    75 100. 
    76 200. 
    77 500. 
    78 1000. 
    79 10000. 
    80 20000. 
    81 70. 
    82 80. 
    83 90. 
    84 1000 
    85 10000 
    86 50000 
    87 25 
    88 35 
    89 66 
    90 100 
    91 150 
    92 200 
    93 250 
    94 300 
    95 350 
    96 400 
    97 450 
    98 500 
    99 300 
    100 400 
    101 3000 
    102 4000 
    103305000 
    104 5010 
    105 5020 
    106 5050 
    107 5100 
    108 5200 
    109 5300 
    110 5400 
    111 5500 
    112 5600 
    113 5700 
    114 5800 
    115 5900 
    116 6000 
    117 6500 
    118317000 
    119 7500 
    120 8000 
    121  
    12232------------------------------------------------------------------------------------------- 
    123  
  • branches/iLoveclim/SOURCES/Fichiers-parametres/Makefile.tof-lsce3130.inc

    r22 r77  
    1919 
    2020# lit le nom du fichier param pour lancer sur r2d2 par une commande :   echo jobparam | LBQ.... 
    21  
    2221JOB = 'job' 
    2322 
     23# mettre debug à 1 pour compiler avec options strictes 
     24debug ?= 0 
     25 
     26# compilation avec ifort : 
     27ifeq ($(ifort),1) 
    2428 
    2529# librairies 
     30        NCDF_INC  = -I$(NETCDFHOME)/include 
     31        NCDF_LIB  = -L$(NETCDFHOME)/lib -lnetcdf -lnetcdff 
    2632 
    27 NCDF_INC  = $(NETCDFHOME)/include 
    28 NCDF_LIB  = -L$(NETCDFHOME)/lib -lnetcdf -lnetcdff 
     33# utilisation de MKL : 
     34        ifeq ($(mkl_c), 1) 
     35                MKL_LIB = -L$(MKLROOT)/lib/intel64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm  # MKL parallele 
     36#               MKL_LIB =  -L$(MKLROOT)/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm           # MKL sequentiel 
     37                MKL_INC = -I$(MKLROOT)/include 
     38        endif 
    2939 
     40        IFORT= ifort 
    3041 
    31 #MKL_LIB   = -L$(DIRLOCAL)/intel/mkl9/lib/32 -lmkl_lapack -lmkl_ia32 -lguide -lpthread 
    32 #MKL_LIB  = -L$(DIRLOCAL)/intel/mkl10/lib/32  -lmkl -lguide -lpthread #  -lmklapack 
    33  
    34 ifeq ($(mkl_c), 1) 
    35     MKL_LIB = -L$MKLROOT/lib/em64t -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread 
    36     export $MKL_LIB 
    37 endif 
    38  
    39 IFORT= ifort 
    40  
    41 ARITHM    = -O2 -fp-model precise  -heap-arrays -traceback -diag-disable warn -mcmodel=medium # -traceback   -CB  -g  # options pour une meilleure arithmetique 
     42        ARITHMi = -O2 -fp-model precise  #-openmp 
    4243                                                                      # (normalement reproductible) 
     44    ifeq ($(debug), 1) 
     45                ARITHM    = $(ARITHMi) -CB -g -p -traceback -warn all  #-openmp 
     46        else 
     47                ARITHM    = $(ARITHMi) -diag-disable warn 
     48        endif 
     49                 
    4350#ARITHM    =  -fp-model precise -warn all -CU -CA # options pour une meilleure arithmetique (normalement reproductible) 
    4451# ARITHM = -03                    # trop brutal ne pas utiliser 
    4552 
     53        FT        = $(IFORT) $(ARITHM) $(MKL_INC) #-traceback   -CB  #-g #-pg  # -g # -pg -ipo !aurel : j'ai enleve -CB 
     54        LK        = $(IFORT) $(ARITHM) -i_dynamic # -traceback   -CB # -g  #-pg   #-g #  -pg 
     55        F_NETCDF  = $(IFORT) $(ARITHM) -c -I$(NCDF_INC) # -traceback  -CB   #-g #-pg -ipo # -g 
     56        #FT        = $(IFORT) $(ARITHM) -c -I$(NCDF_INC) # -traceback  -CB  #-g #-pg -ipo # -g 
     57         
     58# compilation avec gfortran et librairie BLAS 
     59else 
    4660 
     61# librairies 
     62        LIBSYS = /usr/lib 
     63#       INCSYS = /usr/include  # Ubuntu 
     64        INCSYS = /usr/lib64/gfortran/modules  # Fedora 
     65        NCDF_INC  = $(INCSYS) 
     66        NCDF_LIB  = -L$(LIBSYS) -lnetcdff -lnetcdf 
    4767 
    48 FT        = $(IFORT) $(ARITHM) -c    #-traceback   -CB  #-g #-pg  # -g # -pg -ipo !aurel : j'ai enleve -CB 
    49 LK        = $(IFORT) $(ARITHM)  -i_dynamic   # -traceback   -CB # -g  #-pg   #-g #  -pg 
    50 F_NETCDF  = $(IFORT) $(ARITHM) -c  -I$(NCDF_INC) # -traceback  -CB   #-g #-pg -ipo # -g 
    51 FT        = $(IFORT) $(ARITHM) -c  -I$(NCDF_INC) # -traceback  -CB  #-g #-pg -ipo # -g 
    52 F_90      = -w90 
     68        IFORT= gfortran 
     69 
     70        ARITHMi    = -O2 -ffree-line-length-none -mtune=native -mfpmath=sse 
     71 
     72        ifeq ($(debug), 1) 
     73                ARITHM  = $(ARITHMi) -g -pg -Wall -fno-align-commons -p -ggdb -ffpe-trap=invalid,zero,overflow,underflow -fbacktrace -fcheck=all 
     74        else 
     75                ARITHM = $(ARITHMi) 
     76        endif 
     77 
     78# debug : -g -CB -fp-stack-check -check all 
     79        FT        = $(IFORT) $(ARITHM) -c 
     80        LK        = $(IFORT) $(ARITHM) 
     81        F_NETCDF  = $(IFORT) $(ARITHM) -c -I$(NCDF_INC) 
     82endif 
    5383 
    5484 
    5585 
    56  
  • branches/iLoveclim/SOURCES/Fichiers-parametres/hemin40_TEMPS-NETCDF.dat

    r9 r77  
    1515------------------------------------------------------------------------------------------- 
    16164       ndtsortie      lecture de dtsortie_hz 
    17 10000. 
     171000. 
    181850000. 
    1919100000. 
  • branches/iLoveclim/SOURCES/GrIce2sea_files/climat_GrIce2sea_years_mod.f90

    r35 r77  
    116116!cdc test debug Hemin15 et Greeneem15 
    117117!  where (bm(:,:).lt.-1000) bm(:,:)=0. 
    118  
     118  where (bm(:,:).eq.0) bm(:,:)=-10. !afq 
    119119 
    120120  acc(:,:) = 0. 
     
    138138!cdc test debug Hemin15 
    139139!  where (Tann(:,:).lt.-100.) Tann(:,:)=10. 
    140  
     140  where (Tann(:,:).lt.-100.) Tann(:,:)=10. !afq 
    141141 
    142142  ta0(:,:)   = Tann(:,:) 
  • branches/iLoveclim/SOURCES/GrIce2sea_files/climat_GrIce2sea_years_perturb_mod.f90

    r52 r77  
    1616 
    1717 
    18 use module3d_phy,only: nx,ny,S,S0,H,Bsoc,acc,abl,BM,Tann,Tjuly,Ts,time,dt,num_param,num_rep_42,num_forc,dirforcage,dirnameinp,tafor,time,sealevel 
     18use module3d_phy,only: nx,ny,S,S0,H,Bsoc,acc,abl,BM,Tann,Tjuly,Ts,time,dt,num_param,num_rep_42,num_forc,dirforcage,dirnameinp,tafor,time,sealevel,coefbmshelf 
    1919!use lect_climref_Ice2sea 
    2020use netcdf 
     
    5858 
    5959! aurel, pour climat type perturb: 
    60 integer nft             !< nombre de lignes a lire dans le fichier forcage climatique 
    61 real,dimension(:),allocatable :: tdate          !< time for climate forcing 
    62 real,dimension(:),allocatable :: tpert          !< temperature for climate forcing 
    63 real,dimension(:),allocatable :: spert          !< sea surface perturbation 
    64 real :: coefT                   !< pour modifier l'amplitude de la perturb. T 
    65 character(len=120) :: filforc    !< nom du fichier forcage 
     60integer nft             !> nombre de lignes a lire dans le fichier forcage climatique 
     61real,dimension(:),allocatable :: tdate          !> time for climate forcing 
     62real,dimension(:),allocatable :: tpert          !> temperature for climate forcing 
     63real,dimension(:),allocatable :: spert          !> sea surface perturbation 
     64real :: coefT                    !> pour modifier l'amplitude de la perturb. T 
     65character(len=120) :: filforc    !> nom du fichier forcage 
     66integer :: pertsmb               !> boolean: do we modify the smb? 
     67real    :: rapsmb                !> if we modify the smb this is the equivalent of rappact 
    6668 
    6769 
     
    124126  bm(:,:)  = tab(:,:) * coef_smb_unit 
    125127 
    126 !  where ((H(:,:).lt.1.).and.(Bsoc(:,:).gt.0.)) 
    127 !     bm(:,:) = bm(:,:) - 5.                     ! pour faire un masque a l'exterieur du Groenland actuel 
    128 !  end where 
    129  
     128  !where ((H(:,:).lt.1.).and.(Bsoc(:,:).gt.0.)) 
     129  !   bm(:,:) = bm(:,:) - 5.                     ! pour faire un masque a l'exterieur du Groenland actuel 
     130  !end where 
     131  where ((H(:,:).lt.1.).and.(Bsoc(:,:).gt.0.).and.(bm(:,:).gt.0.)) 
     132     bm(:,:) = -0.1 
     133  end where 
    130134!cdc test debug Hemin15 et Greeneem15 
    131135!  where (bm(:,:).lt.-1000) bm(:,:)=0. 
    132  
     136  where (bm(:,:).eq.0) bm(:,:)=-5. !afq 
     137   
    133138  acc(:,:) = 0. 
    134139  abl(:,:) = 0. 
     
    151156!cdc test debug Hemin15 
    152157!  where (Tann(:,:).lt.-100.) Tann(:,:)=10. 
    153  
     158  where (Tann(:,:).lt.-100.) Tann(:,:)=10. !afq 
    154159 
    155160  ta0(:,:)   = Tann(:,:) 
     
    228233 
    229234! copie la valeur de reference dans bm_0 
    230      bm_0(:,:) = bm(:,:) 
     235!     bm_0(:,:) = bm(:,:) 
    231236  endif 
    232  
     237! copie la valeur de reference dans bm_0 
     238  bm_0(:,:) = bm(:,:) !afq marion dufresne: we do it even if we don't read any snapshot 
     239   
    233240  filin=trim(dirforcage)//trim(filforc) 
    234241 
     
    318325  implicit none 
    319326  namelist/lapse_rates/T_lapse_rate 
    320   namelist/clim_pert_massb/coefT,filforc 
     327  namelist/clim_pert_massb/coefT,filforc,pertsmb,rapsmb 
    321328   
    322329  rewind(num_param)        ! pour revenir au debut du fichier param_list.dat 
     
    344351  write(num_rep_42,*) 'coefT        = ', coefT 
    345352  write(num_rep_42,'(A,A)') ' filforc      = ', filforc 
     353  write(num_rep_42,*) 'pertsmb        = ', pertsmb 
     354  write(num_rep_42,*) 'rapsmb         = ', rapsmb 
    346355  write(num_rep_42,*)'/' 
    347356  write(num_rep_42,*) 
     
    370379  implicit none 
    371380 
    372   integer i,j,ift 
    373    
     381  integer i,ift 
     382 
    374383  select case (massb_time) 
    375384     case(0) 
     
    403412        Tann (:,:) = Ta0 (:,:) + T_lapse_rate * (S(:,:)-S0(:,:)) +Tafor 
    404413        Ts(:,:)    = Tann(:,:) 
     414 
     415        ! aurel marion dufresne: we might want to decrease the SMB during glacials..? 
     416        if (pertsmb.eq.1) then 
     417           bm(:,:) = bm_0(:,:) * exp( rapsmb *(Tann(:,:)-Ta0(:,:))) 
     418           if (Tafor.lt.0.) then 
     419              where(bm(:,:).lt.0.) bm(:,:)=min(bm(:,:)-Tafor*0.05,1.) !10 degrees less give 0.5 meter more ? 
     420           end if 
     421        end if 
     422         
     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.) 
     427   
    405428     case(1) 
    406429        call massb_Ice2sea_RCM 
  • branches/iLoveclim/SOURCES/Greeneem_files/lect-greeneem_mod.f90

    r27 r77  
    2424integer :: n1,n2,ndx 
    2525real :: sealevel0 
     26real :: archimed 
     27integer :: ios 
    2628 
    2729contains 
     
    8486       do i=1,nx 
    8587 
    86           archim = Bsoc(i,j)+H(i,j)*ro/row -sealevel 
     88          archimed = Bsoc(i,j)+H(i,j)*ro/row -sealevel 
    8789 
    88           if ((ARCHIM.LT.0.).and.(H(I,J).gt.1.E-3)) then    ! le point flotte 
     90          if ((archimed.LT.0.).and.(H(I,J).gt.1.E-3)) then    ! le point flotte 
    8991             flot(i,j)=.true. 
    9092          else 
  • branches/iLoveclim/SOURCES/Hemin40_files/output_hemin40_mod.f90

    r13 r77  
    157157     integer inp(13) ! Surface posee (nb de noeuds) 
    158158     integer inf(13) ! surface flottante 
    159       integer npab, npcal 
    160  
    161       REAL long, lat, rd, cx, cy, cxmin, cymin, r2 
     159 
    162160!Variables pour sommer       
    163161      real isvol(13),isvolf(13) ! volume posé et flottants 
     
    165163      REAL ISABLBORD(13),ABLATOT(13),TACC(13),TBM(13) 
    166164      REAL ITJJA(13) 
    167       REAL ABLAMEAN 
     165!      REAL ABLAMEAN 
    168166!moyennes utilisées en output 
    169167      REAL HMAX_(13) , HMEAN_(13)  
     
    178176 
    179177      REAL HDOTMEAN_G 
    180       REAL ABLA(NX,NY) 
     178!      REAL ABLA(NX,NY) 
    181179      REAL DELTAVOL 
    182180 
     
    384382905 format(f9.1,1x, e11.4,1x,e11.5, 1x,i5, 1x,e10.4,1x,i5 , 6(1x,e12.5), & 
    385383         12(2(1x,e10.4,1x,i5), 9(1x,e11.4) ) )  
    386 900   format(i5,1x,f9.1,1x,f5.1,1x,e10.5,1x,i4,1x,i4,1x,f6.2,1X, & 
    387              f6.2,1X,f6.2,1X,f6.2,1X,i5,8(1x,f6.2)) 
    388 903   format(f9.1,1x,f4.1,1x,f5.1,1x,e10.5,1x,i5,1x,i4,1x,i5,1X, & 
    389              f7.3,1x,f6.2,1X,i6,4(1x,e7.1),1X,f6.2,1x,f7.3) 
    390384  
    391 904  format(F9.1,1x,e10.5,1x,e11.5,1x,i5,6(1x,e12.6),3(1x,e10.5,        & 
    392          1x,i5,6(1X,e12.6)),1X,i4,1X,i5,1x,f7.3,1x,                      & 
    393          f6.2,1x,i6,2(1x,e7.1),2(1x,f8.4),1X,f6.2,2(1x,i5),1x,e7.1,      & 
    394          8(1x,e12.6),4(1x,f15.7),9(1x,e10.5,1x,i5,2(1x,e12.6),1x,f15.7), & 
    395          26(1x,f8.3)) 
    396385     
    397386940   format('%%%% ',a,'   time=',f8.0,' %%%%') 
  • branches/iLoveclim/SOURCES/Makefile

    r40 r77  
     1 
    12# Makefile pour construire les executables grisli en fonction de la machin 
    23# Pour compiler : make -f Makefile-template Grice2sea 
     
    1011 
    1112# Choice for compiler (ifort = 1, gfortran = 0) 
    12 ifort ?= 0 
     13ifort ?= 1 
    1314 
    1415# Choice for librairies (mkl_c = 1 = MKL,  = 0 = BLAS) 
    1516# NOTA: mkl_c = 1 with ifort = 0 ignores the MKL and uses BLAS anyhow 
    16 mkl_c ?= 0 
     17mkl_c ?= 1 
    1718 
    18 ifeq ($(ifort),1) 
     19#ifeq ($(ifort),1) 
    1920  include Fichiers-parametres/Makefile.tof-lsce3130.inc 
    20 else 
    21   include Fichiers-parametres/Makefile.dmr-lsce3027.inc 
    22 endif 
     21#else 
     22#  include Fichiers-parametres/Makefile.dmr-lsce3027.inc 
     23#endif 
    2324 
    2425#     Compilation (le corps du Makefile) 
    2526#------------------------------------------- 
    2627 
    27 ifeq ($(ifort),1) 
     28#ifeq ($(ifort),1) 
    2829  include Makefile.grisli.inc 
    29 else 
    30   include Makefile.grisli-gfortran.inc 
    31 endif 
     30#else 
     31#  include Makefile.grisli-gfortran.inc 
     32#endif 
  • branches/iLoveclim/SOURCES/Makefile.grisli-gfortran.inc

    r52 r77  
    7575        dragging_hwatermax_0.2_mod.o dragging_calc_beta_mod.o  \ 
    7676        dragging_hwat-contigu_mod.o dragging_hwat_contmaj_mod.o \ 
    77         dragging_hwat_sedim_mod.o dragging_neff_contmaj_mod.o \ 
     77        dragging_hwat_sedim_mod.o dragging_neff_slope_mod.o \ 
    7878        calving_frange.o no_calving.o no_lakes.o \ 
    7979        out_profile_mod.o printtable_mod.o mix-SIA-L1_mod.o \ 
     
    219219        fake-routines-ant_mod.o module_choix-antar40-0.4.o \ 
    220220        track_ant40_mod.o 
     221         
     222Liste_Snowball = output_snowball_mod-0.4.o \ 
     223        lect-snowball_mod.o \ 
     224        bmelt-snowball-depth_mod.o \ 
     225        fake-routines-snowball_mod.o \ 
     226        module_choix-snowball.o \ 
     227        track_snowball_mod.o 
     228                 
    221229 
    222230Liste_eura40 = output_eurasie40_mod-0.1.o \ 
     
    280288 
    281289Dim_Ant40 = paradim-ant40_mod.o geography-ant40_mod.o 
     290 
     291Dim_Snowball = paradim-snowball_mod.o geography-snowball_mod.o 
    282292 
    283293Dim_eura40 = paradim-euras40_mod.o geography-euras40_mod.o 
     
    712722        $(FT) dragging_hwat_sedim_mod.f90 
    713723 
    714 dragging_neff_contmaj_mod.o : dragging_neff_contmaj_mod.f90 
    715         $(FT) dragging_neff_contmaj_mod.f90 
     724dragging_neff_slope_mod.o : dragging_neff_slope_mod.f90 
     725        $(FT) dragging_neff_slope_mod.f90 
    716726 
    717727dragging_calc_beta_mod.o : Antarctique_general_files/dragging_calc_beta_mod.f90 
     
    734744 
    735745beta_iter_vitbil_mod.o : Draggings_modules/beta_iter_vitbil_mod.f90 
    736         $(FT)  Draggings_modules/beta_iter_vitbil_mod.f90 
     746        $(F_NETCDF)  Draggings_modules/beta_iter_vitbil_mod.f90 
    737747 
    738748dragging_stream_impose_vitbil_mod.o : Ant40_files/dragging_stream_impose_vitbil_mod.f90 
     
    841851output_anta40_mod-0.4.o : Ant40_files/output_anta40_mod-0.4.f90 
    842852        $(FT) Ant40_files/output_anta40_mod-0.4.f90 
     853         
     854output_snowball_mod-0.4.o : Snowball_files/output_snowball_mod-0.4.f90 
     855        $(FT) Snowball_files/output_snowball_mod-0.4.f90         
    843856 
    844857output_global_mod.o :output_global_mod.f90 
     
    12851298track_hemin15_mod.o : Hemin15_files/track_hemin15_mod.f90 
    12861299        $(FT) Hemin15_files/track_hemin15_mod.f90 
     1300         
     1301         
     1302# routines Snowball 
     1303paradim-snowball_mod.o : Snowball_files/paradim-snowball_mod.f90 
     1304        $(FT) Snowball_files/paradim-snowball_mod.f90 
     1305         
     1306geography-snowball_mod.o : Snowball_files/geography-snowball_mod.f90 
     1307        $(FT) Snowball_files/geography-snowball_mod.f90 
     1308         
     1309lect-snowball_mod.o : Snowball_files/lect-snowball_mod.f90 
     1310        $(FT) Snowball_files/lect-snowball_mod.f90 
     1311         
     1312bmelt-snowball-depth_mod.o : Snowball_files/bmelt-snowball-depth_mod.f90 
     1313        $(FT) Snowball_files/bmelt-snowball-depth_mod.f90 
     1314         
     1315fake-routines-snowball_mod.o : Snowball_files/fake-routines-snowball_mod.f90 
     1316        $(FT) Snowball_files/fake-routines-snowball_mod.f90 
     1317         
     1318module_choix-snowball.o : Snowball_files/module_choix-snowball.f90 
     1319        $(FT) Snowball_files/module_choix-snowball.f90 
     1320         
     1321track_snowball_mod.o : Snowball_files/track_snowball_mod.f90 
     1322        $(FT) Snowball_files/track_snowball_mod.f90 
     1323         
    12871324 
    12881325# routines Eurasie-40 
     
    15981635        $(diagnoshelf) \ 
    15991636        $(Liste_Netcdf) \ 
    1600         $(routines_communes) steps_time_loop.o $(routine_elliptiques)  
     1637        $(routines_communes) steps_time_loop.o $(routine_elliptiques)  \ 
     1638        $(Liste_BLAS) 
    16011639 
    16021640        $(LK) -o ../bin/Grice2sea \ 
     
    16101648        $(Liste_Netcdf) \ 
    16111649        $(routines_communes) steps_time_loop.o \ 
    1612         $(routine_elliptiques) $(NCDF_LIB)  $(MKL_LIB) 
     1650        $(routine_elliptiques) \ 
     1651        $(Liste_BLAS) 
     1652        $(NCDF_LIB)  $(MKL_LIB) 
    16131653 
    16141654Grice2sea_iterbeta : $(Dim_GrIce2sea) $(mod_dim_communs)   \ 
     
    16391679        $(mod_communs) \ 
    16401680        $(mod_clim_tof) \ 
    1641         $(mod_no_tracers) \ 
     1681        $(mod_tracers) \ 
    16421682        $(mod_ell) $(Liste_hemin40) \ 
    16431683        $(diagnoshelf) \ 
     
    16521692        $(mod_communs) \ 
    16531693        $(mod_clim_tof) \ 
    1654         $(mod_no_tracers) \ 
     1694        $(mod_tracers) \ 
    16551695        $(mod_ell) $(Liste_hemin40) \ 
    16561696        $(diagnoshelf) \ 
     
    17401780        $(routines_communes) steps_time_loop.o \ 
    17411781        $(routine_elliptiques) $(NCDF_LIB)  $(MKL_LIB) $(Liste_BLAS) 
    1742  
     1782         
     1783Snowball : $(Dim_Snowball) $(mod_dim_communs) \ 
     1784        $(toy_recul)  \ 
     1785        $(mod_communs) \ 
     1786        $(mod_clim_tof) \ 
     1787        $(mod_no_tracers) \ 
     1788        $(mod_ell) $(Liste_Snowball) \ 
     1789        $(diagnoshelf) \ 
     1790        $(Liste_Netcdf) \ 
     1791        $(routines_communes) steps_time_loop.o \ 
     1792        $(routine_elliptiques) \ 
     1793        $(Liste_BLAS) 
     1794 
     1795        $(LK) -o  ../bin/Snowball \ 
     1796        $(Dim_Snowball) $(mod_dim_communs) \ 
     1797        $(toy_recul)  \ 
     1798        $(mod_communs) \ 
     1799        $(mod_clim_tof) \ 
     1800        $(mod_no_tracers) \ 
     1801        $(mod_ell) $(Liste_Snowball) \ 
     1802        $(diagnoshelf) \ 
     1803        $(Liste_Netcdf) \ 
     1804        $(routines_communes) steps_time_loop.o \ 
     1805        $(routine_elliptiques) $(NCDF_LIB)  $(MKL_LIB) $(Liste_BLAS) 
     1806         
    17431807 
    17441808 
  • branches/iLoveclim/SOURCES/Makefile.grisli.inc

    r52 r77  
    2525routine_elliptiques = remplimat-shelves-tabTu.o graphique_L2.o graph-sgbsv.o 
    2626diagnoshelf         = diagno-L2_mod.o 
    27 #diagnoshelf         = fake_diagno_mod.o 
    2827 
    2928 
     
    7473        dragging_hwatermax_0.2_mod.o dragging_calc_beta_mod.o  \ 
    7574        dragging_hwat-contigu_mod.o dragging_hwat_contmaj_mod.o \ 
    76         dragging_hwat_sedim_mod.o dragging_neff_contmaj_mod.o \ 
     75        dragging_hwat_sedim_mod.o dragging_neff_slope_mod.o \ 
    7776        calving_frange.o no_calving.o no_lakes.o \ 
    7877        out_profile_mod.o printtable_mod.o mix-SIA-L1_mod.o \ 
    79         relaxation_mod-0.3.o relaxation_water_mod-0.4.o relaxation_water_diffusion.o \ 
     78        relaxation_water_diffusion.o \ 
    8079        prescribe-H-i2s_mod.o  \ 
    8180        resol_adv_diff_2D-sept2009.o  \ 
     
    9392        calving_frange.o no_calving.o no_lakes.o \ 
    9493        out_profile_mod.o printtable_mod.o mix-SIA-L1_mod.o \ 
    95         relaxation_mod-0.3.o relaxation_water_mod-0.4.o relaxation_water_diffusion.o \ 
     94        relaxation_water_diffusion.o \ 
    9695        prescribe-H-i2s_mod.o   \ 
    9796        resol_adv_diff_2D-sept2009.o  \ 
     
    10099        tridiag_mod-0.3.o out_horiz_mod.o bmelt-seuil-profondeur_mod.o 
    101100 
    102 #       prescribe-H_mod.o ou prescribe-H-i2s_mod.o sont dans modules_dim \ 
    103101 
    104102# attention les tracers reclament le climat_perturb 
     
    124122 
    125123# liste de routines communes 
    126 # enleve  : flow_general-0.3.o flowlaw-0.3.o  Cat 23 mars 2012 
    127124 
    128125routines_communes = tracebug.o ablation_bord.o \ 
    129         icetemp_declar_mod.o bmelt-grounded.o calceps2-0.2.o  \ 
     126        icetemp_declar_mod.o bmelt-grounded.o \ 
    130127        diffusiv-polyn-0.6.o \ 
    131         flottab-rescue-1.o flottab2-0.7.o   \ 
     128        flottab2-0.7.o   \ 
    132129        advec_icetemp.o \ 
    133130        prop_th_icetemp.o \ 
     
    136133        icetemp_mod.o \ 
    137134        initial-0.3.o initial-phy-2.o initial2-0.4.o \ 
    138         lastoutput-0.2.o lect-eis.o  readinput.o lect_datfile.o write_datfile.o \ 
     135        lect-eis.o  readinput.o lect_datfile.o write_datfile.o \ 
    139136        out_cptr_mod.o lineartemp-0.2.o  litho-0.4.o main3D-0.4-40km.o masque.o \ 
    140137        minmax-format.o moy_mxmy.o neffect-0.4.o new-flot-0.3.o  next-time.o \ 
     
    144141        tab-litho-0.3.o taubed-0.3.o \ 
    145142        velocities-polyn-0.3.o \ 
    146         vtoutput-0.2.o  courbures.o 
    147  
    148 #       vtoutput-0.2.o steps_time_loop.o courbures.o 
     143        courbures.o 
    149144 
    150145 
     
    166161Liste_GrIce2sea =  lect_GrIce2sea_gen_nc.o  \ 
    167162        output_Grice2sea_mod.o  fake-routines_Grice2sea_mod.o \ 
    168         dragging_prescr_beta_mod.o beta_iter_vitbil_mod.o module_choix_GrIce2sea.o  
    169 #       massb-ant_forcage-0.4 
     163        dragging_prescr_beta_mod.o beta_iter_vitbil_mod.o module_choix_GrIce2sea.o 
     164         
    170165 
    171166Liste_heminord = paradim-nord40_mod.o  output_nord_mod-0.4.o \ 
     
    175170 
    176171 
    177 Liste_ANT15-LBq = lect-Ant_clim_Acc-T_gen_dat.o output_anta_mod-0.4.o \ 
    178         dragging-vit_bil_LBq_gen_mod.o dragging_LGM_mod.o dragging_plastic_LGM_mod.o \ 
    179         dragging_prescr_beta_mod.o dragging_prescr_beta_buoyency_mod.o dragging_prescr_beta_nolin_mod.o \ 
    180         fake-routines-ant_mod.o beta_iter_vitbil_mod.o \ 
    181         lect-Ant_gen2010_dat.o module_choix_antar15_LBq.o \ 
    182         massb-ant_perturb_Tparam.o track_ant40_mod.o  
    183  
    184  
     172#Liste_ANT15-LBq = lect-Ant_clim_Acc-T_gen_dat.o output_anta_mod-0.4.o \ 
     173#       dragging-vit_bil_LBq_gen_mod.o dragging_LGM_mod.o dragging_plastic_LGM_mod.o \ 
     174#       dragging_prescr_beta_mod.o dragging_prescr_beta_buoyency_mod.o dragging_prescr_beta_nolin_mod.o \ 
     175#       fake-routines-ant_mod.o beta_iter_vitbil_mod.o \ 
     176#       lect-Ant_gen2010_dat.o module_choix_antar15_LBq.o \ 
     177#       massb-ant_perturb_Tparam.o track_ant40_mod.o  
     178 
     179Liste_ANT15-LBq = output_anta_mod-0.4.o \ 
     180                lect-Ant_gen2010_dat.o \ 
     181                lect-anteis_mod.o \ 
     182                bmelt-ant-regions_mod.o \ 
     183                fake-routines-ant_mod.o \ 
     184                module_choix_antar15_LBq.o \ 
     185                track_ant40_mod.o \ 
    185186 
    186187Liste_hudson = sedim_declar_hudson_mod.o climat-hudson_mod.o \ 
     
    218219        fake-routines-ant_mod.o module_choix-antar40-0.4.o \ 
    219220        track_ant40_mod.o 
     221         
     222Liste_Snowball = output_snowball_mod-0.4.o \ 
     223        lect-snowball_mod.o \ 
     224        bmelt-snowball-depth_mod.o \ 
     225        fake-routines-snowball_mod.o \ 
     226        module_choix-snowball.o \ 
     227        track_snowball_mod.o 
     228         
    220229 
    221230Liste_eura40 = output_eurasie40_mod-0.1.o \ 
     
    280289Dim_Ant40 = paradim-ant40_mod.o geography-ant40_mod.o 
    281290 
     291Dim_Snowball = paradim-snowball_mod.o geography-snowball_mod.o 
     292 
    282293Dim_eura40 = paradim-euras40_mod.o geography-euras40_mod.o 
    283294 
     
    294305Dim_gsearise05 = paradim-gsearise05_mod.o geography-gsearise05_mod.o 
    295306 
    296 # Liste_BLAS = band.o reduc.o \ 
    297 #       BLAS/isamax.o BLAS/lsame.o BLAS/scopy.o BLAS/sgbmv.o BLAS/sgemm.o \ 
    298 #       BLAS/sgemv.o  BLAS/sger.o BLAS/sscal.o BLAS/sswap.o BLAS/stbsv.o \ 
    299 #       BLAS/strsm.o BLAS/xerbla.o 
     307 
    300308ifeq ($(mkl_c), 0) 
    301 Liste_BLAS = LAPACK/band.o LAPACK/reduc.o \ 
    302         BLAS/isamax.o BLAS/lsame.o BLAS/scopy.o \ 
    303         BLAS/slamch.o BLAS/slabad.o BLAS/slange.o \ 
    304         BLAS/slassq.o BLAS/sgeqrf.o BLAS/sormqr.o \ 
    305         BLAS/strmv.o BLAS/slarft.o \ 
    306         BLAS/ilaslr.o BLAS/ilaslc.o BLAS/strmm.o \ 
    307         BLAS/slarfb.o BLAS/slapy2.o BLAS/slarfg.o BLAS/slarf.o \ 
    308         BLAS/sgeqr2.o BLAS/sorm2r.o BLAS/snrm2.o \ 
    309         BLAS/slaqps.o BLAS/slaqp2.o BLAS/sgeqp3.o \ 
    310         BLAS/slaset.o BLAS/slaisnan.o BLAS/sisnan.o \ 
    311         BLAS/slascl.o BLAS/sdot.o BLAS/slaic1.o \ 
    312         BLAS/slarzb.o BLAS/slarzt.o \ 
    313         BLAS/saxpy.o BLAS/slarz.o BLAS/sormr3.o \ 
    314         BLAS/sormrz.o BLAS/slatrz.o BLAS/stzrzf.o BLAS/sgelsy.o \ 
    315         BLAS/sgbmv.o BLAS/sgemm.o BLAS/sgemv.o  BLAS/sger.o \ 
    316         BLAS/sscal.o BLAS/sswap.o BLAS/stbsv.o \ 
    317         BLAS/strsm.o BLAS/xerbla.o 
     309Liste_BLAS = band.o reduc.o \ 
     310        isamax.o lsame.o scopy.o \ 
     311        slamch.o slabad.o slange.o \ 
     312        slassq.o sgeqrf.o sormqr.o \ 
     313        strmv.o slarft.o \ 
     314        ilaslr.o ilaslc.o strmm.o \ 
     315        slarfb.o slapy2.o slarfg.o slarf.o \ 
     316        sgeqr2.o sorm2r.o snrm2.o \ 
     317        slaqps.o slaqp2.o sgeqp3.o \ 
     318        slaset.o slaisnan.o sisnan.o \ 
     319        slascl.o sdot.o slaic1.o \ 
     320        slarzb.o slarzt.o \ 
     321        saxpy.o slarz.o sormr3.o \ 
     322        sormrz.o slatrz.o stzrzf.o sgelsy.o \ 
     323        sgbmv.o sgemm.o sgemv.o  sger.o \ 
     324        sscal.o sswap.o stbsv.o \ 
     325        strsm.o xerbla.o 
    318326 
    319327endif 
    320328 
    321 # ancienne methode 
    322 #Liste_Netcdf = io_netcdf.o  sortie_netcdf_GRISLI_mod.0.2.o 
    323  
    324 # pour fonctionner avec code Hassine 
    325 # sortie_netcdf_GRISLI_mod.0.2-hassine.o  
     329 
    326330Liste_Netcdf =   sortie_netcdf_GRISLI_mod.0.2-hassine.o  
    327331 
     
    335339        echo 'entree fichier parametre par commande echo job' 
    336340 
    337          $(FT) initial-phy-2-job.f90 -o initial-phy-2.o 
     341         $(FT) $(NCDF_INC) -c initial-phy-2-job.f90 
    338342else     
    339343        echo ' fichier parametre defini par runname' 
    340          $(FT) initial-phy-2.f90 -o initial-phy-2.o 
     344         $(FT) $(NCDF_INC) -c initial-phy-2.f90 
    341345endif 
    342346 
    343 # routines et modules qui dependent de la machine (defini dans le makefile machine) 
    344 #---------------------------------------------------------------------------------- 
    345 # quelques ligne de difference dans la creation des netcdf 
    346  
    347  
    348 #sortie_netcdf_GRISLI_mod.0.2-hassine.o : 
    349 #ifeq ($(machine),'r2d2')        
    350 #       $(F_NETCDF) Netcdf-routines/sortie_netcdf_GRISLI_mod.0.2-hassine-r2d2.f90 -o sortie_netcdf_GRISLI_mod.0.2-hassine.o 
    351 #else    
    352 #       $(F_NETCDF) Netcdf-routines/sortie_netcdf_GRISLI_mod.0.2-hassine.f90     
    353 #endif 
    354  
    355 #out_cptr_mod.o :  
    356 #ifeq ($(machine),'r2d2') 
    357 #       $(F_NETCDF) out_cptr_mod-r2d2.f90 -o out_cptr_mod.o      
    358 #else 
    359 #       $(F_NETCDF) out_cptr_mod.f90 
    360 #endif 
    361  
    362 # Compilation Modules 
    363 #--------------------------------- 
    364 paradim-ant40_mod.o : Ant40_files/paradim-ant40_mod.f90 
    365         $(FT) Ant40_files/paradim-ant40_mod.f90 
    366  
    367 paradim-ant15_LBq_mod.o : ANT15-LBq_files/paradim-ant15_LBq_mod.f90 
    368         $(FT) ANT15-LBq_files/paradim-ant15_LBq_mod.f90 
    369  
    370 paradim-ant15_CISM_mod.o : Ant15_CISM_files/paradim-ant15_CISM_mod.f90 
    371         $(FT) Ant15_CISM_files/paradim-ant15_CISM_mod.f90 
    372  
    373 paradim-ant20_CISM_mod.o : Ant20_CISM_files/paradim-ant20_CISM_mod.f90 
    374         $(FT) Ant20_CISM_files/paradim-ant20_CISM_mod.f90 
    375  
    376 paradim-ant25_CISM_mod.o : Ant25_CISM_files/paradim-ant25_CISM_mod.f90 
    377         $(FT) Ant25_CISM_files/paradim-ant25_CISM_mod.f90 
    378  
    379 paradim-ant45_CISM_mod.o : Ant45_CISM_files/paradim-ant45_CISM_mod.f90 
    380         $(FT) Ant45_CISM_files/paradim-ant45_CISM_mod.f90 
    381  
    382 paradim-nord40_mod.o : Heminord_files/paradim-nord40_mod.f90 
    383         $(FT)  Heminord_files/paradim-nord40_mod.f90 
    384  
    385 paradim-euras40_mod.o : Eurasie40_files/paradim-euras40_mod.f90 
    386         $(FT)  Eurasie40_files/paradim-euras40_mod.f90 
    387  
    388 paradim-eura20_mod.o : paradim-eura20_mod.f90 
    389         $(FT)  paradim-eura20_mod.f90 
    390  
    391 paradim-eura10_mod.o : paradim-eura10_mod.f90 
    392         $(FT)  paradim-eura10_mod.f90 
    393  
    394 paradim-greenmint40_mod.o : Greenmint40_files/paradim-greenmint40_mod.f90 
    395         $(FT) Greenmint40_files/paradim-greenmint40_mod.f90 
    396  
    397 paradim-greeneem45_mod.o : Greeneem_files/Greeneem45_files/paradim-greeneem45_mod.f90 
    398         $(FT) Greeneem_files/Greeneem45_files/paradim-greeneem45_mod.f90 
    399  
    400 paradim-greeneem15_mod.o : Greeneem_files/Greeneem15_files/paradim-greeneem15_mod.f90 
    401         $(FT) Greeneem_files/Greeneem15_files/paradim-greeneem15_mod.f90 
    402  
    403 paradim-greeneem05_mod.o : Greeneem_files/Greeneem05_files/paradim-greeneem05_mod.f90 
    404         $(FT) Greeneem_files/Greeneem05_files/paradim-greeneem05_mod.f90 
    405  
    406 paradim-gsearise15_mod.o : Gsearise_files/Gsearise15_files/paradim-gsearise15_mod.f90 
    407         $(FT) Gsearise_files/Gsearise15_files/paradim-gsearise15_mod.f90 
    408  
    409 paradim-gsearise05_mod.o : Gsearise_files/Gsearise05_files/paradim-gsearise05_mod.f90 
    410         $(FT) Gsearise_files/Gsearise05_files/paradim-gsearise05_mod.f90 
    411  
    412 paradim-GrIce2sea-cut_Tamsin.o : GrIce2sea_files/paradim-GrIce2sea-cut_Tamsin.f90 
    413         $(FT)  GrIce2sea_files/paradim-GrIce2sea-cut_Tamsin.f90 
    414  
    415 paradim-Heino_mod.o : Heino_files/paradim-Heino_mod.f90 
    416         $(FT) Heino_files/paradim-Heino_mod.f90 
    417  
    418 geography-ant40_mod.o : Ant40_files/geography-ant40_mod.f90 
    419         $(FT) Ant40_files/geography-ant40_mod.f90 
    420  
    421 geography-Ant15_LBq.o : ANT15-LBq_files/geography-Ant15_LBq.f90 
    422         $(FT)  ANT15-LBq_files/geography-Ant15_LBq.f90 
    423  
    424 geography-Ant15CISM.o : Ant15_CISM_files/geography-Ant15CISM.f90 
    425         $(FT) Ant15_CISM_files/geography-Ant15CISM.f90 
    426  
    427 geography-Ant20CISM.o : Ant20_CISM_files/geography-Ant20CISM.f90 
    428         $(FT) Ant20_CISM_files/geography-Ant20CISM.f90 
    429  
    430 geography-Ant25CISM.o : Ant25_CISM_files/geography-Ant25CISM.f90 
    431         $(FT) Ant25_CISM_files/geography-Ant25CISM.f90 
    432  
    433 geography-Ant45CISM.o : Ant45_CISM_files/geography-Ant45CISM.f90 
    434         $(FT) Ant45_CISM_files/geography-Ant45CISM.f90 
    435  
    436 geography-heino_mod.o : Heino_files/geography-heino_mod.f90 
    437         $(FT) Heino_files/geography-heino_mod.f90 
    438  
    439 geography-heminord_mod.o : Heminord_files/geography-heminord_mod.f90 
    440         $(FT)  Heminord_files/geography-heminord_mod.f90 
    441  
    442 geography-euras40_mod.o : Eurasie40_files/geography-euras40_mod.f90 
    443         $(FT) Eurasie40_files/geography-euras40_mod.f90 
    444  
    445 geography-greenmint40_mod.o : Greenmint40_files/geography-greenmint40_mod.f90 
    446         $(FT) Greenmint40_files/geography-greenmint40_mod.f90 
    447  
    448 geography-greeneem45_mod.o : Greeneem_files/Greeneem45_files/geography-greeneem45_mod.f90 
    449         $(FT) Greeneem_files/Greeneem45_files/geography-greeneem45_mod.f90 
    450  
    451 geography-greeneem15_mod.o : Greeneem_files/Greeneem15_files/geography-greeneem15_mod.f90 
    452         $(FT) Greeneem_files/Greeneem15_files/geography-greeneem15_mod.f90 
    453  
    454 geography-greeneem05_mod.o : Greeneem_files/Greeneem05_files/geography-greeneem05_mod.f90 
    455         $(FT) Greeneem_files/Greeneem05_files/geography-greeneem05_mod.f90 
    456  
    457 geography-gsearise15_mod.o : Gsearise_files/Gsearise15_files/geography-gsearise15_mod.f90 
    458         $(FT) Gsearise_files/Gsearise15_files/geography-gsearise15_mod.f90 
    459  
    460 geography-gsearise05_mod.o : Gsearise_files/Gsearise05_files/geography-gsearise05_mod.f90 
    461         $(FT) Gsearise_files/Gsearise05_files/geography-gsearise05_mod.f90 
    462  
    463 geography-GrIce2sea.o : GrIce2sea_files/geography-GrIce2sea.f90 
    464         $(FT) GrIce2sea_files/geography-GrIce2sea.f90 
    465  
    466  
    467 # Physique et topography 
    468 # --------------------------- 
    469  
    470 runparam_mod.o : runparam_mod.f90 
    471         $(FT) runparam_mod.f90 
    472  
    473 3D-physique-gen_mod.o : 3D-physique-gen_mod.f90 
    474         $(FT) 3D-physique-gen_mod.f90 
    475  
    476 param_phy_mod.o: param_phy_mod.f90 
    477         $(FT) param_phy_mod.f90 
    478  
    479 lect-anteis_mod.o : Ant40_files/lect-anteis_mod.f90 
    480         $(FT) Ant40_files/lect-anteis_mod.f90 
    481  
    482 lect-Ant_CISM_gen_dat.o : Antarctique_general_files/lect-Ant_CISM_gen_dat.f90 
    483         $(FT) Antarctique_general_files/lect-Ant_CISM_gen_dat.f90 
    484  
    485 lect-Ant_gen2010_dat.o : Antarctique_general_files/lect-Ant_gen2010_dat.f90 
    486         $(FT) Antarctique_general_files/lect-Ant_gen2010_dat.f90 
    487  
    488 lect-Ant_CISM_15_dat.o : Ant15_CISM_files/lect-Ant_CISM_15_dat.f90 
    489         $(FT) Ant15_CISM_files/lect-Ant_CISM_15_dat.f90 
    490  
    491 lect-Ant_CISM_45_dat.o : Ant45_CISM_files/lect-Ant_CISM_45_dat.f90 
    492         $(FT) Ant45_CISM_files/lect-Ant_CISM_45_dat.f90 
    493  
    494 lect-nord40_mod.o : Heminord_files/lect-nord40_mod.f90 
    495         $(FT) Heminord_files/lect-nord40_mod.f90 
    496  
    497 lect-eurasie_mod.o : Eurasie40_files/lect-eurasie_mod.f90 
    498         $(FT) Eurasie40_files/lect-eurasie_mod.f90 
    499  
    500 lect-greenmint_mod.o : Greenmint40_files/lect-greenmint_mod.f90 
    501         $(FT) Greenmint40_files/lect-greenmint_mod.f90 
    502  
    503 lect-greeneem_mod.o : Greeneem_files/lect-greeneem_mod.f90 
    504         $(FT) Greeneem_files/lect-greeneem_mod.f90 
    505  
    506 lect-gsearise_mod.o : Gsearise_files/lect-gsearise_mod.f90 
    507         $(FT) Gsearise_files/lect-gsearise_mod.f90 
    508  
    509 lect-Heino_mod.o : Heino_files/lect-Heino_mod.f90 
    510         $(FT) Heino_files/lect-Heino_mod.f90 
    511  
    512 lect_GrIce2sea_gen_nc.o : GrIce2sea_files/lect_GrIce2sea_gen_nc.f90 
    513         $(FT)  GrIce2sea_files/lect_GrIce2sea_gen_nc.f90 
    514  
    515 bmelt-ant-regions_declar_mod.o : Ant40_files/bmelt-ant-regions_declar_mod.f90 
    516         $(FT) Ant40_files/bmelt-ant-regions_declar_mod.f90 
    517  
    518 bmelt-ant-regions_mod.o : Ant40_files/bmelt-ant-regions_mod.f90 
    519         $(FT) Ant40_files/bmelt-ant-regions_mod.f90 
    520  
    521 bmelt-ant-regions-oce_mod.o : Ant40_files/bmelt-ant-regions-oce_mod.f90 
    522         $(FT) Ant40_files/bmelt-ant-regions-oce_mod.f90 
    523  
    524 bmelt-nor-regions_mod.o : Heminord_files/bmelt-nor-regions_mod.f90 
    525         $(FT) Heminord_files/bmelt-nor-regions_mod.f90 
    526  
    527 bmelt-nor-depth_mod.o : Heminord_files/bmelt-nor-depth_mod.f90 
    528         $(FT) Heminord_files/bmelt-nor-depth_mod.f90 
    529  
    530 bmelt-eurasie-depth-lake_mod.o : Eurasie40_files/bmelt-eurasie-depth-lake_mod.f90 
    531         $(FT) Eurasie40_files/bmelt-eurasie-depth-lake_mod.f90 
    532  
    533 bmelt-seuil-profondeur_mod.o : bmelt-seuil-profondeur_mod.f90 
    534         $(FT) bmelt-seuil-profondeur_mod.f90 
    535  
    536 lakes-prescribed_mod-0.1.o : Eurasie40_files/lakes-prescribed_mod-0.1.f90 
    537         $(FT) Eurasie40_files/lakes-prescribed_mod-0.1.f90 
    538  
    539 no_lakes.o : no_lakes.f90 
    540         $(FT) no_lakes.f90 
    541  
    542 iso_declar_mod-0.3.o : iso_declar_mod-0.3.f90 
    543         $(FT) iso_declar_mod-0.3.f90 
    544  
    545 noisostasie_mod-0.3.o : noisostasie_mod-0.3.f90 
    546         $(FT) noisostasie_mod-0.3.f90 
    547  
    548 isostasie_mod-0.3.o : isostasie_mod-0.3.f90  
    549         $(FT) isostasie_mod-0.3.f90 
    550  
    551 eq_elliptique_mod-0.4.o : eq_elliptique_mod-0.4.f90 
    552         $(FT) eq_elliptique_mod-0.4.f90 
    553  
    554  
    555 #------------ Traceurs isotopiques 
    556  
    557 tracer_mod.o : tracer_mod.f90  
    558         $(FT) tracer_mod.f90 
    559  
    560 notracer_mod.o : notracer_mod.f90  
    561         $(FT) notracer_mod.f90 
    562  
    563 tracer_vars_mod.o : tracer_vars_mod.f90  
    564         $(FT) tracer_vars_mod.f90 
    565  
    566 interpolate_tracer.o : interpolate_tracer.f90  
    567         $(FT) interpolate_tracer.f90 
    568  
    569 celltest_tracer.o : celltest_tracer.f90  
    570         $(FT) celltest_tracer.f90 
    571  
    572  
    573 #-------------lecture des fichiers Climat 
    574  
    575 lect-Ant_clim_Acc-T_gen_dat.o : Antarctique_general_files/lect-Ant_clim_Acc-T_gen_dat.f90 
    576         $(FT)  Antarctique_general_files/lect-Ant_clim_Acc-T_gen_dat.f90 
    577  
    578  
    579 lect-clim-act-greenmint_mod.o : Greenmint40_files/lect-clim-act-greenmint_mod.f90 
    580         $(FT) Greenmint40_files/lect-clim-act-greenmint_mod.f90 
    581  
    582 lect-clim-act-greeneem_mod.o : Greeneem_files/lect-clim-act-greeneem_mod.f90 
    583         $(FT) Greeneem_files/lect-clim-act-greeneem_mod.f90 
    584  
    585 lect-clim-act-gsearise_mod.o : Gsearise_files/lect-clim-act-gsearise_mod.f90 
    586         $(FT) Gsearise_files/lect-clim-act-gsearise_mod.f90 
    587  
    588 lect-clim-act-greeneem_mar_mod.o : Greeneem_files/lect-clim-act-greeneem_mar_mod.f90 
    589         $(FT) Greeneem_files/lect-clim-act-greeneem_mar_mod.f90 
    590  
    591 lect-clim-act-greeneem_mois_lapsecouche_mod.o : Greeneem_files/lect-clim-act-greeneem_mois_lapsecouche_mod.f90 
    592         $(FT) Greeneem_files/lect-clim-act-greeneem_mois_lapsecouche_mod.f90 
    593  
    594 lect-clim-act-greeneem_mois_mod.o : Greeneem_files/lect-clim-act-greeneem_mois_mod.f90 
    595         $(FT) Greeneem_files/lect-clim-act-greeneem_mois_mod.f90 
    596  
    597 lect-clim-act-gsearise_mois_mod.o : Gsearise_files/lect-clim-act-gsearise_mois_mod.f90 
    598         $(FT) Gsearise_files/lect-clim-act-gsearise_mois_mod.f90 
    599  
    600 lect-clim-act-nord40_mod.o : Heminord_files/lect-clim-act-nord40_mod.f90 
    601         $(FT) Heminord_files/lect-clim-act-nord40_mod.f90 
    602  
    603 lect_climat_ref_Ice2sea_mod.o : GrIce2sea_files/lect_climat_ref_Ice2sea_mod.f90 
    604         $(FT) GrIce2sea_files/lect_climat_ref_Ice2sea_mod.f90 
    605  
    606  
    607 # modules de climat 
    608 # --------------------------- 
    609 # nouveaux modules climat C. Dumas Fev 2015 
    610 climat_forcage_mois_mod.o : climat_forcage_mois_mod.f90 
    611         $(F_NETCDF) climat_forcage_mois_mod.f90 
    612  
    613 climat-forcage-insolation_mod_oneway.o : climat-forcage-insolation_mod_oneway.f90 
    614         $(F_NETCDF) climat-forcage-insolation_mod_oneway.f90 
    615  
    616 climat-forcage-insolation_mod.o : climat-forcage-insolation_mod.f90 
    617         $(F_NETCDF) climat-forcage-insolation_mod.f90 
    618  
    619 climat-perturb_mod-0.4.o : climat-perturb_mod-0.4.f90 
    620         $(F_NETCDF) climat-perturb_mod-0.4.f90 
    621  
    622 ablation_mod.o : ablation_mod.f90 
    623         $(FT) ablation_mod.f90 
    624 # Module climat pour iLOVECLIM 
    625 climat_coupl_atm_mod.o : climat_coupl_atm_mod.f90 
    626         $(FT) climat_coupl_atm_mod.f90 
    627  
    628 ##### anciens modules 
    629 climat-forcage_mod-0.4.o : climat-forcage_mod-0.4.f90  
    630         $(FT) climat-forcage_mod-0.4.f90 
    631  
    632 climat_GrIce2sea_mod.o : GrIce2sea_files/climat_GrIce2sea_mod.f90 
    633         $(FT) GrIce2sea_files/climat_GrIce2sea_mod.f90 
    634  
    635 climat_GrIce2sea_years_mod.o : GrIce2sea_files/climat_GrIce2sea_years_mod.f90 
    636         $(F_NETCDF) GrIce2sea_files/climat_GrIce2sea_years_mod.f90 
    637  
    638 climat_GrIce2sea_years_perturb_mod.o : GrIce2sea_files/climat_GrIce2sea_years_perturb_mod.f90 
    639         $(F_NETCDF) GrIce2sea_files/climat_GrIce2sea_years_perturb_mod.f90 
    640  
    641 climat-forcage-stat-mois_mod-0.1.o : climat-forcage-stat-mois_mod-0.1.f90 
    642         $(FT)  climat-forcage-stat-mois_mod-0.1.f90 
    643  
    644 declare-month_mod.o : declare-month_mod.f90 
    645         $(FT) declare-month_mod.f90 
    646  
    647 declare-month_lapsecouche_mod.o : declare-month_lapsecouche_mod.f90 
    648         $(FT) declare-month_lapsecouche_mod.f90 
    649  
    650 climat-forcage-mois_mod-0.2.o : climat-forcage-mois_mod-0.2.f90 
    651         $(FT) climat-forcage-mois_mod-0.2.f90 
    652  
    653 ablation_month.o : ablation_month.f90 
    654         $(FT) ablation_month.f90 
    655  
    656 ablation_month_lapsecouche.o : ablation_month_lapsecouche.f90 
    657         $(FT) ablation_month_lapsecouche.f90 
    658  
    659 ablation_ann_july_mod.o : ablation_ann_july_mod.f90 
    660         $(FT) ablation_ann_july_mod.f90 
    661  
    662 no_ablation_mod.o : no_ablation_mod.f90 
    663         $(FT) no_ablation_mod.f90 
    664  
    665 accum_month.o : accum_month.f90 
    666         $(FT) accum_month.f90 
    667  
    668 accum_month_lapsecouche.o : accum_month_lapsecouche.f90 
    669         $(FT) accum_month_lapsecouche.f90 
    670  
    671 climat-perturb-mois_mod.o : climat-perturb-mois_mod.f90 
    672         $(FT) climat-perturb-mois_mod.f90 
    673  
    674 climat-perturb-mois_lapsecouche_mod.o : climat-perturb-mois_lapsecouche_mod.F90 
    675         $(FT) climat-perturb-mois_lapsecouche_mod.F90 
    676  
    677 clim-synthes_mod-o : climat-synthes_mod-0.4.f90 
    678         $(FT)  climat-synthes_mod-0.4.f90 
    679  
    680 climat-heino_mod.o : Heino_files/climat-heino_mod.f90 
    681         $(FT) Heino_files/climat-heino_mod.f90 
    682  
    683 deformation_mod_2lois.o : deformation_mod_2lois.f90 
    684         $(FT) deformation_mod_2lois.f90 
    685  
    686 deformation_mod_2lois_isotherme.o : deformation_mod_2lois_isotherme.f90 
    687         $(FT) deformation_mod_2lois_isotherme.f90 
    688  
    689 deformation_mod-0.3.o : deformation_mod-0.3.f90 
    690         $(FT) deformation_mod-0.3.f90 
    691  
    692 sliding-Heino_mod.o : Heino_files/sliding-Heino_mod.f90 
    693         $(FT) Heino_files/sliding-Heino_mod.f90 
    694  
    695 sliding_Bindshadler_mod.o : sliding_Bindshadler_mod.f90 
    696         $(FT) sliding_Bindshadler_mod.f90 
    697  
    698 no_sliding.o : no_sliding.f90 
    699         $(FT) no_sliding.f90 
    700  
    701 dragging_hwatermax_0.2_mod.o : dragging_hwatermax_0.2_mod.f90 
    702         $(FT) dragging_hwatermax_0.2_mod.f90 
    703  
    704 dragging_hwat-contigu_mod.o : dragging_hwat-contigu_mod.f90 
    705         $(FT) dragging_hwat-contigu_mod.f90 
    706  
    707 dragging_hwat_contmaj_mod.o : dragging_hwat_contmaj_mod.f90 
    708         $(FT) dragging_hwat_contmaj_mod.f90 
    709  
    710 dragging_hwat_sedim_mod.o : dragging_hwat_sedim_mod.f90 
    711         $(FT) dragging_hwat_sedim_mod.f90 
    712  
    713 dragging_neff_contmaj_mod.o : dragging_neff_contmaj_mod.f90 
    714         $(FT) dragging_neff_contmaj_mod.f90 
    715  
    716 dragging_calc_beta_mod.o : Antarctique_general_files/dragging_calc_beta_mod.f90 
    717         $(FT) Antarctique_general_files/dragging_calc_beta_mod.f90 
    718  
    719 dragging_LGM_mod.o : Antarctique_general_files/dragging_LGM_mod.f90 
    720         $(FT) Antarctique_general_files/dragging_LGM_mod.f90 
    721  
    722 dragging_plastic_LGM_mod.o : Antarctique_general_files/dragging_plastic_LGM_mod.f90 
    723         $(FT) Antarctique_general_files/dragging_plastic_LGM_mod.f90 
    724  
    725 dragging_prescr_beta_mod.o : Draggings_modules/dragging_prescr_beta_mod.f90 
    726         $(FT)  Draggings_modules/dragging_prescr_beta_mod.f90 
    727  
    728 dragging_prescr_beta_buoyency_mod.o : Draggings_modules/dragging_prescr_beta_buoyency_mod.f90 
    729         $(FT)  Draggings_modules/dragging_prescr_beta_buoyency_mod.f90 
    730  
    731 dragging_prescr_beta_nolin_mod.o : Draggings_modules/dragging_prescr_beta_nolin_mod.f90 
    732         $(FT)  Draggings_modules/dragging_prescr_beta_nolin_mod.f90  
    733  
    734 beta_iter_vitbil_mod.o : Draggings_modules/beta_iter_vitbil_mod.f90 
    735         $(FT)  Draggings_modules/beta_iter_vitbil_mod.f90 
    736  
    737 dragging_stream_impose_vitbil_mod.o : Ant40_files/dragging_stream_impose_vitbil_mod.f90 
    738         $(FT) Ant40_files/dragging_stream_impose_vitbil_mod.f90 
    739  
    740 dragging-vit_bil_LBq_gen_mod.o  : Antarctique_general_files/dragging-vit_bil_LBq_gen_mod.f90 
    741         $(FT)  Antarctique_general_files/dragging-vit_bil_LBq_gen_mod.f90 
    742  
    743 dragging-vit_bil_CISM_gen_mod.o : Antarctique_general_files/dragging-vit_bil_CISM_gen_mod.f90 
    744         $(FT) Antarctique_general_files/dragging-vit_bil_CISM_gen_mod.f90 
    745  
    746 dragging_neem_mod.o : Greeneem_files/dragging_neem_mod.f90 
    747         $(FT) Greeneem_files/dragging_neem_mod.f90 
    748  
    749 dragging-vit_bil_CISM_15_mod.o : Ant15_CISM_files/dragging-vit_bil_CISM_15_mod.f90 
    750         $(FT) Ant15_CISM_files/dragging-vit_bil_CISM_15_mod.f90 
    751  
    752 dragging-vit_bil_CISM_45_mod.o : Ant45_CISM_files/dragging-vit_bil_CISM_45_mod.f90 
    753         $(FT) Ant45_CISM_files/dragging-vit_bil_CISM_45_mod.f90 
    754  
    755 prop-therm-Heino_mod.o : Heino_files/prop-therm-Heino_mod.f90 
    756         $(FT) Heino_files/prop-therm-Heino_mod.f90 
    757  
    758 calving_frange.o : calving_frange.f90 
    759         $(FT) calving_frange.f90  
    760  
    761 no_calving.o : no_calving.f90 
    762         $(FT) no_calving.f90 
    763  
    764 track_heino_mod.o : Heino_files/track_heino_mod.f90 
    765         $(FT) Heino_files/track_heino_mod.f90 
    766  
    767 track_ant40_mod.o : Ant40_files/track_ant40_mod.f90 
    768         $(FT) Ant40_files/track_ant40_mod.f90 
    769  
    770 track_greenmint_mod.o : Greenmint40_files/track_greenmint_mod.f90 
    771         $(FT) Greenmint40_files/track_greenmint_mod.f90 
    772  
    773 track_greeneem_mod.o : Greeneem_files/track_greeneem_mod.f90 
    774         $(FT) Greeneem_files/track_greeneem_mod.f90 
    775  
    776 track_gsearise_mod.o : Gsearise_files/track_gsearise_mod.f90 
    777         $(FT) Gsearise_files/track_gsearise_mod.f90 
    778  
    779  
    780 #------- modules de resolution equations 
    781  
    782 relaxation_mod-0.3.o : relaxation_mod-0.3.f90 
    783         $(FT) relaxation_mod-0.3.f90 
    784  
    785 relaxation_water_mod-0.4.o : relaxation_water_mod-0.4.f90 
    786         $(FT) relaxation_water_mod-0.4.f90 
    787  
    788 relaxation_water_diffusion.o : relaxation_water_diffusion.f90 
    789         $(FT) relaxation_water_diffusion.f90 
    790  
    791 tridiag_mod-0.3.o : tridiag_mod-0.3.f90 
    792         $(FT) tridiag_mod-0.3.f90 
    793  
    794 resol_adv_diff_2D.o : resol_adv_diff_2D.f90 
    795         $(FT) resol_adv_diff_2D.f90 
    796  
    797 resol_adv_diff_2D-juin2009.o : resol_adv_diff_2D-juin2009.f90 
    798         $(FT) resol_adv_diff_2D-juin2009.f90 
    799  
    800 resol_adv_diff_2D-sept2009.o : resol_adv_diff_2D-sept2009.f90 
    801         $(FT) resol_adv_diff_2D-sept2009.f90 
    802  
    803 #conserv-mass-adv-diff_mod.o : conserv-mass-adv-diff_mod.f90 
    804 #       $(FT) conserv-mass-adv-diff_mod.f90 
    805  
    806 #precribe-H_mod.o : precribe-H_mod.f90   old version + mauvais nom 
    807 #       $(FT)  precribe-H_mod.f90 
    808  
    809 prescribe-H_mod.o : prescribe-H_mod.f90 
    810         $(FT)  prescribe-H_mod.f90 
    811  
    812 prescribe-H-i2s_mod.o : prescribe-H-i2s_mod.f90 
    813         $(FT) prescribe-H-i2s_mod.f90 
    814  
    815 #conserv-mass-adv-diff_juin2009_mod.o : conserv-mass-adv-diff_juin2009_mod.f90 
    816 #       $(FT) conserv-mass-adv-diff_juin2009_mod.f90 
    817  
    818 conserv-mass-adv-diff_sept2009_mod.o : conserv-mass-adv-diff_sept2009_mod.f90 
    819         $(FT) conserv-mass-adv-diff_sept2009_mod.f90 
    820  
    821 # ---------  spinup 
    822 spinup_mod.o : spinup_mod.f90 
    823         $(FT) spinup_mod.f90 
    824  
    825 no_spinup_mod.o : no_spinup_mod.f90 
    826         $(FT) no_spinup_mod.f90 
    827  
    828  
    829  
    830 #-------------Output 
    831 out_horiz_mod.o : out_horiz_mod.f90 
    832         $(FT) out_horiz_mod.f90 
    833  
    834 out_profile_mod.o : out_profile_mod.f90 
    835         $(FT) out_profile_mod.f90 
    836  
    837 output_anta_mod-0.4.o : Antarctique_general_files/output_anta_mod-0.4.f90 
    838         $(FT) Antarctique_general_files/output_anta_mod-0.4.f90 
    839  
    840 output_anta40_mod-0.4.o : Ant40_files/output_anta40_mod-0.4.f90 
    841         $(FT) Ant40_files/output_anta40_mod-0.4.f90 
    842  
    843 output_global_mod.o :output_global_mod.f90 
    844         $(FT) output_global_mod.f90  
    845  
    846 output_green_mod-0.4.o : Greenmint40_files/output_green_mod-0.4.f90 
    847         $(FT) Greenmint40_files/output_green_mod-0.4.f90 
    848  
    849 output_greeneem_mod-0.4.o : Greeneem_files/output_greeneem_mod-0.4.f90 
    850         $(FT) Greeneem_files/output_greeneem_mod-0.4.f90 
    851  
    852 output_gsearise_mod-0.4.o : Gsearise_files/output_gsearise_mod-0.4.f90 
    853         $(FT) Gsearise_files/output_gsearise_mod-0.4.f90 
    854  
    855 output_heino_mod.o : Heino_files/output_heino_mod.f90 
    856         $(FT) Heino_files/output_heino_mod.f90 
    857  
    858 output_nord_mod-0.4.o : Heminord_files/output_nord_mod-0.4.f90 
    859         $(FT) Heminord_files/output_nord_mod-0.4.f90 
    860  
    861 output_Grice2sea_mod.o : GrIce2sea_files/output_Grice2sea_mod.f90 
    862         $(FT)  GrIce2sea_files/output_Grice2sea_mod.f90 
    863  
    864 out_cptr_mod.o : out_cptr_mod.f90 
    865         $(F_NETCDF) out_cptr_mod.f90 
    866  
    867 util_recovery.o : util_recovery.f90 
    868         $(FT) util_recovery.f90 
    869  
    870 printtable_mod.o : printtable_mod.f90    
    871         $(FT) printtable_mod.f90 
    872  
    873 # modules "fake" pour compatibilite 
    874 #---------------------------------- 
    875  
    876 fake-routines-Heino_mod.o : Heino_files/fake-routines-Heino_mod.f90 
    877         $(FT) Heino_files/fake-routines-Heino_mod.f90 
    878  
    879 fake-routines-ant_mod.o : Antarctique_general_files/fake-routines-ant_mod.f90 
    880         $(FT) Antarctique_general_files/fake-routines-ant_mod.f90 
    881  
    882 fake-routines-greenmint_mod.o : Greenmint40_files/fake-routines-greenmint_mod.f90 
    883         $(FT) Greenmint40_files/fake-routines-greenmint_mod.f90 
    884  
    885 fake-routines-greeneem_mod.o : Greeneem_files/fake-routines-greeneem_mod.f90 
    886         $(FT) Greeneem_files/fake-routines-greeneem_mod.f90 
    887  
    888 fake-routines-gsearise_mod.o : Gsearise_files/fake-routines-gsearise_mod.f90 
    889         $(FT) Gsearise_files/fake-routines-gsearise_mod.f90 
    890  
    891 fake-routines-nord_mod.o : Heminord_files/fake-routines-nord_mod.f90 
    892         $(FT) Heminord_files/fake-routines-nord_mod.f90 
    893  
    894 fake-routines_Grice2sea_mod.o : GrIce2sea_files/fake-routines_Grice2sea_mod.f90 
    895         $(FT) GrIce2sea_files/fake-routines_Grice2sea_mod.f90 
    896  
    897 # modules choix pour selectionner les modules physiques 
    898 #-------------------------------------------------------- 
    899  
    900 module_choix-heino-0.4.o : Heino_files/module_choix-heino-0.4.f90 
    901         $(FT)  Heino_files/module_choix-heino-0.4.f90 
    902  
    903 module_choix-heminord-0.4.o : Heminord_files/module_choix-heminord-0.4.f90 
    904         $(FT)  Heminord_files/module_choix-heminord-0.4.f90 
    905  
    906 module_choix-antar40-0.4.o : Ant40_files/module_choix-antar40-0.4.f90 
    907         $(FT)  Ant40_files/module_choix-antar40-0.4.f90 
    908  
    909 module_choix_antar15_LBq.o : ANT15-LBq_files/module_choix_antar15_LBq.f90 
    910         $(FT) ANT15-LBq_files/module_choix_antar15_LBq.f90 
    911  
    912 module_choix_antar15CISM.o : Ant15_CISM_files/module_choix_antar15CISM.f90 
    913         $(FT) Ant15_CISM_files/module_choix_antar15CISM.f90 
    914  
    915 module_choix_antar20CISM.o : Ant20_CISM_files/module_choix_antar20CISM.f90 
    916         $(FT) Ant20_CISM_files/module_choix_antar20CISM.f90 
    917  
    918 module_choix_antar25CISM.o : Ant25_CISM_files/module_choix_antar25CISM.f90 
    919         $(FT) Ant25_CISM_files/module_choix_antar25CISM.f90 
    920  
    921 module_choix_antar45CISM.o : Ant45_CISM_files/module_choix_antar45CISM.f90 
    922         $(FT) Ant45_CISM_files/module_choix_antar45CISM.f90 
    923  
    924 module_choix-antar40-0.4_old.o : Ant40_files/module_choix-antar40-0.4_old.f90 
    925         $(FT)  Ant40_files/module_choix-antar40-0.4_old.f90 
    926  
    927 module_choix-greenmint-40.o : Greenmint40_files/module_choix-greenmint-40.f90 
    928         $(FT) Greenmint40_files/module_choix-greenmint-40.f90 
    929  
    930 module_choix-greeneem.o : Greeneem_files/module_choix-greeneem.f90 
    931         $(FT) Greeneem_files/module_choix-greeneem.f90 
    932  
    933 module_choix-gsearise.o : Gsearise_files/module_choix-gsearise.f90 
    934         $(FT) Gsearise_files/module_choix-gsearise.f90 
    935  
    936 module_choix_GrIce2sea.o : GrIce2sea_files/module_choix_GrIce2sea.f90 
    937         $(FT) GrIce2sea_files/module_choix_GrIce2sea.f90 
    938  
    939 # Routines pour MISMIP 
    940 #----------------------- 
    941  
    942 climat-mismip3d_mod.o : MISMIP3D_files/climat-mismip3d_mod.f90 
    943         $(FT) MISMIP3D_files/climat-mismip3d_mod.f90 
    944  
    945 dragging_mismip3d_mod.o : MISMIP3D_files/dragging_mismip3d_mod.f90 
    946         $(FT) MISMIP3D_files/dragging_mismip3d_mod.f90 
    947  
    948 fake-routines-mismip3d_mod.o : MISMIP3D_files/fake-routines-mismip3d_mod.f90 
    949         $(FT) MISMIP3D_files/fake-routines-mismip3d_mod.f90 
    950  
    951 lect-mismip3d_mod.o : MISMIP3D_files/lect-mismip3d_mod.f90  
    952         $(F_NETCDF) MISMIP3D_files/lect-mismip3d_mod.f90 
    953  
    954 geography-Mismip3d.o : MISMIP3D_files/geography-Mismip3d.f90  
    955         $(FT) MISMIP3D_files/geography-Mismip3d.f90  
    956  
    957 paradim_mismip3D_5km_mod.o : MISMIP3D_files/paradim_mismip3D_5km_mod.f90 
    958         $(FT)  MISMIP3D_files/paradim_mismip3D_5km_mod.f90 
    959  
    960 module_choix_mismip3d.o : MISMIP3D_files/module_choix_mismip3d.f90 
    961         $(F_NETCDF) MISMIP3D_files/module_choix_mismip3d.f90 
    962  
    963  
    964 # Routines specifiques du programme : par ordre alphabetique 
    965 #----------------------------------- 
    966  
    967 tracebug.o : tracebug.f90 
    968         $(FT) tracebug.f90 
    969  
    970 ablation-0.2.o : ablation-0.2.f #module3d.mod 
    971         $(FT) ablation-0.2.f 
    972  
    973 ablation_bord.o : ablation_bord.f90 
    974         $(FT) ablation_bord.f90 
    975  
    976 accum7.o : accum7.f 
    977         $(FT) accum7.f 
    978  
    979 bmelt-grounded.o : bmelt-grounded.f90 
    980         $(FT) bmelt-grounded.f90 
    981  
    982 calceps2-0.2.o : calceps2-0.2.f #module3d.mod 
    983         $(FT) calceps2-0.2.f 
    984  
    985 courbures.o : courbures.f90 
    986         $(FT) courbures.f90 
    987  
    988 detect-assym.o : Heino_files/detect-assym.f90 
    989         $(FT) Heino_files/detect-assym.f90 
    990  
    991 diagno-ant-0.6_mod.o : diagno-ant-0.6_mod.f90 
    992         $(FT) diagno-ant-0.6_mod.f90 
    993  
    994 diffusiv-polyn-0.5.o : diffusiv-polyn-0.5.f90 #module3d.mod 
    995         $(FT) diffusiv-polyn-0.5.f90 
    996  
    997 diffusiv-polyn-0.6.o : diffusiv-polyn-0.6.f90 #module3d.mod 
    998         $(FT) diffusiv-polyn-0.6.f90 
    999  
    1000 eaubasale-0.5_mod.o : eaubasale-0.5_mod.f90 
    1001         $(FT) eaubasale-0.5_mod.f90 
    1002  
    1003 firstoutput-0.2.o : firstoutput-0.2.f #module3d.mod 
    1004         $(FT) firstoutput-0.2.f 
    1005  
    1006 #flottab2-0.6.o : flottab2-0.6.f90 #module3d.mod 
    1007 #       $(FT) flottab2-0.6.f90 
    1008  
    1009 flottab2-0.7.o : flottab2-0.7.f90 #module3d.mod 
    1010         $(FT) flottab2-0.7.f90 
    1011  
    1012 #flottab2-0.5-heino.o : Heino_files/flottab2-0.5-heino.f90 #module3d.mod 
    1013 #       $(FT) Heino_files/flottab2-0.5-heino.f90 
    1014  
    1015 flottab-rescue-1.o : flottab-rescue-1.f90 #module3d.mod 
    1016         $(FT) flottab-rescue-1.f90 
    1017  
    1018 flowlaw-0.3.o : flowlaw-0.3.f90 #module3d.mod 
    1019         $(FT) flowlaw-0.3.f90 
    1020  
    1021 flow_general-0.3.o : flow_general-0.3.f90 #module3d.mod deform_declar.mod 
    1022         $(FT) flow_general-0.3.f90 
    1023  
    1024  
    1025 initial-heino-phy.o : Heino_files/initial-heino-phy.f90 
    1026         $(FT) Heino_files/initial-heino-phy.f90 
    1027  
    1028 no-icethick.o : no-icethick.f90  #module3d.mod  
    1029         $(FT) no-icethick.f90 
    1030  
    1031 initial-0.3.o : initial-0.3.f90 
    1032         $(F_NETCDF) initial-0.3.f90 
    1033  
    1034 #initial-phy-2.o : initial-phy-2.f90  #module3d.mod iso_declar.mod 
    1035 #       $(FT) initial-phy-2.f90 
    1036  
    1037  
    1038  
    1039 initial2-0.4.o : initial2-0.4.f90  #module3d.mod iso_declar.mod 
    1040         $(FT) initial2-0.4.f90 
    1041  
    1042  
    1043 inputfile-vec-0.5.o : inputfile-vec-0.5.f90#module3d.mod 
    1044         $(FT) inputfile-vec-0.5.f90 
    1045  
    1046 lastoutput-0.2.o : lastoutput-0.2.f#module3d.mod 
    1047         $(FT) lastoutput-0.2.f 
    1048  
    1049 lect-eis.o : lect-eis.f90 
    1050         $(FT) lect-eis.f90 
    1051  
    1052 lect_datfile.o : lect_datfile.f90 
    1053         $(FT) lect_datfile.f90 
    1054  
    1055 write_datfile.o : write_datfile.f90 
    1056         $(FT) write_datfile.f90 
    1057  
    1058 limit_file.o : limit_file.f90 
    1059         $(FT) limit_file.f90 
    1060  
    1061 lineartemp-0.2.o : lineartemp-0.2.f90 
    1062         $(FT) lineartemp-0.2.f90 
    1063  
    1064 litho-0.3.o : litho-0.3.f90#module3d.mod iso_declar.mod 
    1065         $(FT) litho-0.3.f90 
    1066  
    1067 litho-0.4.o : litho-0.4.f90#module3d.mod iso_declar.mod 
    1068         $(FT) litho-0.4.f90 
    1069  
    1070 main3D-0.4-40km.o : main3D-0.4-40km.f90 #module3d.mod iso_declar.mod 
    1071         $(F_NETCDF) main3D-0.4-40km.f90 
    1072  
    1073 main_dummy.o : main_dummy.f90 
    1074         $(F_NETCDF) main_dummy.f90 
    1075  
    1076 masque-0.2.o : masque-0.2.F#module3d.mod 
    1077         $(FT) masque-0.2.F 
    1078  
    1079 masque.o : masque.f90 
    1080         $(FT) masque.f90 
    1081  
    1082 massb-grice2sea_perturb_Tparam.o : GrIce2sea_files/massb-grice2sea_perturb_Tparam.f90 
    1083         $(FT) GrIce2sea_files/massb-grice2sea_perturb_Tparam.f90 
    1084  
    1085  
    1086  
    1087 massb-ant_perturb_Tparam.o : Antarctique_general_files/massb-ant_perturb_Tparam.f90 
    1088         $(FT) Antarctique_general_files/massb-ant_perturb_Tparam.f90 
    1089  
    1090 massbal-anteis-0.2.o : Ant40_files/massbal-anteis-0.2.f#module3d.mod 
    1091         $(FT) Ant40_files/massbal-anteis-0.2.f 
    1092  
    1093 massb_perturb_Tparam_green.o : Greenmint40_files/massb_perturb_Tparam_green.f90 
    1094         $(FT) Greenmint40_files/massb_perturb_Tparam_green.f90 
    1095  
    1096 massb_perturb_Tparam_greeneem.o : Greeneem_files/massb_perturb_Tparam_greeneem.f90 
    1097         $(FT) Greeneem_files/massb_perturb_Tparam_greeneem.f90 
    1098  
    1099 massb_perturb_Tparam_gsearise.o : Gsearise_files/massb_perturb_Tparam_gsearise.f90 
    1100         $(FT) Gsearise_files/massb_perturb_Tparam_gsearise.f90 
    1101  
    1102 massb_perturb_mois.o : massb_perturb_mois.f90 
    1103         $(FT) massb_perturb_mois.f90 
    1104  
    1105 massb_perturb_mois_lapsecouche.o : massb_perturb_mois_lapsecouche.f90 
    1106         $(FT) massb_perturb_mois_lapsecouche.f90 
    1107  
    1108 massb-GrIce2sea_fixe.o : GrIce2sea_files/massb-GrIce2sea_fixe.f90 
    1109         $(FT) GrIce2sea_files/massb-GrIce2sea_fixe.f90 
    1110  
    1111 massb-GrIce2sea_RCM.o : GrIce2sea_files/massb-GrIce2sea_RCM.f90 
    1112         $(FT) GrIce2sea_files/massb-GrIce2sea_RCM.f90 
    1113  
    1114 minmax-format.o : minmax-format.f90 
    1115         $(FT) minmax-format.f90 
    1116  
    1117 mix-SIA-L1_mod.o : mix-SIA-L1_mod.f90 
    1118         $(FT) mix-SIA-L1_mod.f90 
    1119  
    1120 moy_mxmy_shift.o : moy_mxmy_shift.f90 
    1121         $(FT) moy_mxmy_shift.f90 
    1122  
    1123 moy_mxmy.o : moy_mxmy.f90 
    1124         $(FT) moy_mxmy.f90 
    1125  
    1126 neffect-0.3.o : neffect-0.3.f90 #module3d.mod 
    1127         $(FT) neffect-0.3.f90 
    1128  
    1129 neffect-0.4.o : neffect-0.4.f90 #module3d.mod 
    1130         $(FT) neffect-0.4.f90 
    1131  
    1132 new-flot-0.3.o : new-flot-0.3.f90#module3d.mod 
    1133         $(FT) new-flot-0.3.f90 
    1134  
    1135 next-time.o : next-time.f90 
    1136         $(FT) next-time.f90 
    1137  
    1138 #plotoutput.o : plotoutput.f#module3d.mod 
    1139 #       $(FT) plotoutput.f 
    1140  
    1141 printdebug.o : printdebug.f90 #module3d.mod 
    1142         $(FT) printdebug.f90 
    1143  
    1144 remplimat-ant-0.5-40km.o : remplimat-ant-0.5-40km.f90 #module3d.mod eq_elliptique_mod.mod 
    1145         $(FT) remplimat-ant-0.5-40km.f90 
    1146  
    1147 sealevel-out.o : sealevel-out.f90#module3d.mod 
    1148         $(FT) sealevel-out.f90 
    1149  
    1150 snaptime.o : snaptime.f90 
    1151         $(FT) snaptime.f90 
    1152  
    1153 sortie-hz-multivar.o : sortie-hz-multivar.f90 
    1154         $(FT) sortie-hz-multivar.f90 
    1155  
    1156 strain_rate.o : strain_rate.f90#module3d.mod 
    1157         $(FT) strain_rate.f90    
    1158  
    1159 surface-0.3.o : surface-0.3.f90#module3d.mod 
    1160         $(FT) surface-0.3.f90 
    1161  
    1162 slope_surf.o : slope_surf.f90 
    1163         $(FT) slope_surf.f90 
    1164  
    1165 tab-litho-0.3.o : tab-litho-0.3.f90#module3d.mod iso_declar.mod 
    1166         $(FT) tab-litho-0.3.f90 
    1167  
    1168 taubed-0.3.o : taubed-0.3.f90#module3d.mod iso_declar.mod 
    1169         $(FT) taubed-0.3.f90 
    1170  
    1171 #ts-output-0.2.o : ts-output-0.2.f                     
    1172 #       $(FT) ts-output-0.2.f 
    1173  
    1174 velocities-polyn-0.3.o : velocities-polyn-0.3.f90     #module3d.mod 
    1175         $(FT) velocities-polyn-0.3.f90 
    1176  
    1177 vtoutput-0.2.o : vtoutput-0.2.f#module3d.mod 
    1178         $(FT) vtoutput-0.2.f 
    1179  
    1180 # Routines Hudson : 
    1181  
    1182 paradim-hudson_mod.o : Hudson_files/paradim-hudson_mod.f90 
    1183         $(FT)  Hudson_files/paradim-hudson_mod.f90 
    1184  
    1185 geography-hudson_mod.o : Hudson_files/geography-hudson_mod.f90 
    1186         $(FT)  Hudson_files/geography-hudson_mod.f90 
    1187  
    1188 sedim_declar_hudson_mod.o : Hudson_files/sedim_declar_hudson_mod.f90 
    1189         $(FT)  Hudson_files/sedim_declar_hudson_mod.f90 
    1190  
    1191 eaubasale-0.5_hudson_mod.o : Hudson_files/eaubasale-0.5_hudson_mod.f90 
    1192         $(FT)  Hudson_files/eaubasale-0.5_hudson_mod.f90 
    1193  
    1194 climat-hudson_mod.o : Hudson_files/climat-hudson_mod.f90 
    1195         $(FT)  Hudson_files/climat-hudson_mod.f90 
    1196  
    1197 lect-hudson_mod.o : Hudson_files/lect-hudson_mod.f90 
    1198         $(FT)  Hudson_files/lect-hudson_mod.f90 
    1199  
    1200 fake-routines-hudson_mod.o : Hudson_files/fake-routines-hudson_mod.f90 
    1201         $(FT)  Hudson_files/fake-routines-hudson_mod.f90 
    1202  
    1203 prop-therm-hudson_mod.o : Hudson_files/prop-therm-hudson_mod.f90 
    1204         $(FT)  Hudson_files/prop-therm-hudson_mod.f90 
    1205  
    1206 sliding-hudson_mod.o : Hudson_files/sliding-hudson_mod.f90 
    1207         $(FT)  Hudson_files/sliding-hudson_mod.f90 
    1208  
    1209 fake-dragging-hudson_mod.o : Hudson_files/fake-dragging-hudson_mod.f90 
    1210         $(FT)  Hudson_files/fake-dragging-hudson_mod.f90 
    1211  
    1212 dragging_hudson_jorge_mod.o : Hudson_files/dragging_hudson_jorge_mod.f90 
    1213         $(FT)  Hudson_files/dragging_hudson_jorge_mod.f90 
    1214  
    1215 dragging-hudson_mod.o : Hudson_files/dragging-hudson_mod.f90 
    1216         $(FT)  Hudson_files/dragging-hudson_mod.f90 
    1217  
    1218 dragging_hwatermax_hudson_mod.o : Hudson_files/dragging_hwatermax_hudson_mod.f90 
    1219         $(FT)  Hudson_files/dragging_hwatermax_hudson_mod.f90 
    1220  
    1221 bmelt_hudson_mod.o : Hudson_files/bmelt_hudson_mod.f90 
    1222         $(FT)  Hudson_files/bmelt_hudson_mod.f90 
    1223  
    1224 initial-hudson-phy.o : Hudson_files/initial-hudson-phy.f90 
    1225         $(FT)  Hudson_files/initial-hudson-phy.f90 
    1226  
    1227 output_hudson_mod.o : Hudson_files/output_hudson_mod.f90 
    1228         $(FT)  Hudson_files/output_hudson_mod.f90 
    1229  
    1230 module_choix-hudson-0.4.o : Hudson_files/module_choix-hudson-0.4.f90 
    1231         $(FT)  Hudson_files/module_choix-hudson-0.4.f90 
    1232  
    1233 track_hudson_mod.o : Hudson_files/track_hudson_mod.f90 
    1234         $(FT) Hudson_files/track_hudson_mod.f90 
    1235  
    1236  
    1237 # Routines Hemin-40 : 
    1238  
    1239  
    1240 paradim-hemin40_mod.o : Hemin40_files/paradim-hemin40_mod.f90 
    1241         $(FT) Hemin40_files/paradim-hemin40_mod.f90 
    1242  
    1243 geography-hemin40_mod.o : Hemin40_files/geography-hemin40_mod.f90 
    1244         $(FT) Hemin40_files/geography-hemin40_mod.f90 
    1245  
    1246 output_hemin40_mod.o : Hemin40_files/output_hemin40_mod.f90 
    1247         $(FT) Hemin40_files/output_hemin40_mod.f90 
    1248  
    1249 lect-hemin40_mod.o : Hemin40_files/lect-hemin40_mod.f90 
    1250         $(FT) Hemin40_files/lect-hemin40_mod.f90 
    1251  
    1252 bmelt-hemin40-regions_mod.o : Hemin40_files/bmelt-hemin40-regions_mod.f90 
    1253         $(FT) Hemin40_files/bmelt-hemin40-regions_mod.f90 
    1254  
    1255 bmelt-hemin40-depth_mod.o : Hemin40_files/bmelt-hemin40-depth_mod.f90 
    1256         $(FT) Hemin40_files/bmelt-hemin40-depth_mod.f90 
    1257  
    1258 fake-routines-hemin40_mod.o : Hemin40_files/fake-routines-hemin40_mod.f90 
    1259         $(FT) Hemin40_files/fake-routines-hemin40_mod.f90 
    1260  
    1261 module_choix-hemin40-0.4.o : Hemin40_files/module_choix-hemin40-0.4.f90 
    1262         $(FT) Hemin40_files/module_choix-hemin40-0.4.f90 
    1263  
    1264 track_hemin40_mod.o : Hemin40_files/track_hemin40_mod.f90 
    1265         $(FT) Hemin40_files/track_hemin40_mod.f90 
    1266  
    1267 # Routines Hemin-15 : 
    1268  
    1269 paradim-hemin15_mod.o : Hemin15_files/paradim-hemin15_mod.f90 
    1270         $(FT) Hemin15_files/paradim-hemin15_mod.f90 
    1271  
    1272 geography-hemin15_mod.o : Hemin15_files/geography-hemin15_mod.f90 
    1273         $(FT) Hemin15_files/geography-hemin15_mod.f90 
    1274  
    1275 lect-hemin15_mod.o : Hemin15_files/lect-hemin15_mod.f90 
    1276         $(FT) Hemin15_files/lect-hemin15_mod.f90 
    1277  
    1278 fake-routines-hemin15_mod.o : Hemin15_files/fake-routines-hemin15_mod.f90 
    1279         $(FT) Hemin15_files/fake-routines-hemin15_mod.f90 
    1280  
    1281 module_choix-hemin15.o : Hemin15_files/module_choix-hemin15.f90 
    1282         $(FT) Hemin15_files/module_choix-hemin15.f90 
    1283  
    1284 track_hemin15_mod.o : Hemin15_files/track_hemin15_mod.f90 
    1285         $(FT) Hemin15_files/track_hemin15_mod.f90 
    1286  
    1287 # routines Eurasie-40 
    1288  
    1289  
    1290 output_eurasie40_mod-0.1.o : Eurasie40_files/output_eurasie40_mod-0.1.f90 
    1291         $(FT) Eurasie40_files/output_eurasie40_mod-0.1.f90 
    1292  
    1293 lect-clim-act-eurasie_mod.o : Eurasie40_files/lect-clim-act-eurasie_mod.f90 
    1294         $(FT) Eurasie40_files/lect-clim-act-eurasie_mod.f90 
    1295  
    1296 climat-forcage-eurasie_mod-0.4.o : Eurasie40_files/climat-forcage-eurasie_mod-0.4.f90 
    1297         $(FT) Eurasie40_files/climat-forcage-eurasie_mod-0.4.f90 
    1298  
    1299 fake-routines-eurasie_mod.o : Eurasie40_files/fake-routines-eurasie_mod.f90 
    1300         $(FT) Eurasie40_files/fake-routines-eurasie_mod.f90 
    1301  
    1302 module_choix-eurasie-0.4.o : Eurasie40_files/module_choix-eurasie-0.4.f90 
    1303         $(FT) Eurasie40_files/module_choix-eurasie-0.4.f90 
    1304  
    1305 track_eurasie_mod.o : Eurasie40_files/track_eurasie_mod.f90 
    1306         $(FT) Eurasie40_files/track_eurasie_mod.f90 
    1307  
    1308  
    1309 # routines greenmint-40 
    1310  
    1311  
    1312 # Routines Temperature 
    1313  
    1314 icetemp_declar_mod.o : Temperature-routines/icetemp_declar_mod.f90 
    1315         $(FT) Temperature-routines/icetemp_declar_mod.f90 
    1316  
    1317 advec_icetemp.o :  Temperature-routines/advec_icetemp.f90 
    1318         $(FT) Temperature-routines/advec_icetemp.f90 
    1319  
    1320 icetemp_mod.o :  Temperature-routines/icetemp_mod.f90 
    1321         $(FT) Temperature-routines/icetemp_mod.f90 
    1322  
    1323 prop_th_icetemp.o:  Temperature-routines/prop_th_icetemp.f90 
    1324         $(FT) Temperature-routines/prop_th_icetemp.f90 
    1325  
    1326 Qprod_icetemp.o:  Temperature-routines/Qprod_icetemp.f90 
    1327         $(FT) Temperature-routines/Qprod_icetemp.f90 
    1328  
    1329 temp_col.o :  Temperature-routines/temp_col.f90 
    1330         $(FT) Temperature-routines/temp_col.f90 
    1331  
    1332 # Routines Agrif 
    1333  
    1334 #open_file.o : open_file.f90 
    1335 #       $(FT) open_file.f90 
    1336  
    1337 step.o : step.f90 
    1338         $(F_NETCDF) step.f90 
    1339  
    1340 steps_time_loop.o : steps_time_loop.f90 
    1341         $(F_NETCDF) steps_time_loop.f90 
    1342  
    1343 steps_time_loop_avec_iterbeta.o : steps_time_loop_avec_iterbeta.f90 
    1344         $(F_NETCDF) steps_time_loop_avec_iterbeta.f90 
    1345  
    1346 # nouvelles routines resolution equation elliptique 
    1347  
    1348 remplimat_declar_tabTu_mod.o : New-remplimat/remplimat_declar_tabTu_mod.f90 
    1349         $(FT) New-remplimat/remplimat_declar_tabTu_mod.f90 
    1350  
    1351 diagno-L2_mod.o : New-remplimat/diagno-L2_mod.f90 
    1352         $(FT) New-remplimat/diagno-L2_mod.f90 
    1353  
    1354 fake_diagno_mod.o : New-remplimat/fake_diagno_mod.f90 
    1355         $(FT) New-remplimat/fake_diagno_mod.f90 
    1356  
    1357 remplimat-shelves-tabTu.o : New-remplimat/remplimat-shelves-tabTu.f90 
    1358         $(FT) New-remplimat/remplimat-shelves-tabTu.f90 
    1359  
    1360 eq_ellipt_sgbsv_mod-0.2.o : New-remplimat/eq_ellipt_sgbsv_mod-0.2.f90 
    1361         $(FT) New-remplimat/eq_ellipt_sgbsv_mod-0.2.f90 
    1362  
    1363 graphique_L2.o : New-remplimat/graphique_L2.f90 
    1364         $(FT) New-remplimat/graphique_L2.f90 
    1365  
    1366 graph-sgbsv.o : New-remplimat/graph-sgbsv.f90 
    1367         $(FT) New-remplimat/graph-sgbsv.f90 
    1368  
    1369 # LAPACK 
    1370 reduc.o : LAPACK/reduc.f 
    1371         $(FT) $(F_90) LAPACK/reduc.f 
    1372  
    1373 band.o: LAPACK/band.f 
    1374         $(FT) $(F_90) LAPACK/band.f 
    1375  
    1376 ifeq ($(mkl_c), 0) 
    1377 #BLAS 
    1378 isamax.o : BLAS/isamax.f 
    1379         $(FT)  BLAS/isamax.f 
    1380 lsame.o : BLAS/lsame.f 
    1381         $(FT) BLAS/lsame.f 
    1382 scopy.o: BLAS/scopy.f 
    1383         $(FT) BLAS/scopy.f 
    1384 slamch.o: BLAS/slamch.f 
    1385         $(FT) BLAS/slamch.f 
    1386 slabad.o: BLAS/slabad.f 
    1387         $(FT) BLAS/slabad.f 
    1388 slange.o: BLAS/slange.f 
    1389         $(FT) BLAS/slange.f 
    1390 slassq.o: BLAS/slassq.f 
    1391         $(FT) BLAS/slassq.f 
    1392 sgeqrf.o: BLAS/sgeqrf.f 
    1393         $(FT) BLAS/sgeqrf.f 
    1394 sormqr.o: BLAS/sormqr.f 
    1395         $(FT) BLAS/sormqr.f 
    1396 strmv.o: BLAS/strmv.f 
    1397         $(FT) BLAS/strmv.f 
    1398 slarft.o: BLAS/slarft.f 
    1399         $(FT) BLAS/slarft.f 
    1400 ilaslr.o: BLAS/ilaslr.f 
    1401         $(FT) BLAS/ilaslr.f 
    1402 ilaslc.o: BLAS/ilaslc.f 
    1403         $(FT) BLAS/ilaslc.f 
    1404 strmm.o: BLAS/strmm.f 
    1405         $(FT) BLAS/strmm.f 
    1406 slarfb.o: BLAS/slarfb.f 
    1407         $(FT) BLAS/slarfb.f 
    1408 slapy2.o: BLAS/slapy2.f 
    1409         $(FT) BLAS/slapy2.f 
    1410 slarfg.o: BLAS/slarfg.f 
    1411         $(FT) BLAS/slarfg.f 
    1412 slarf.o: BLAS/slarf.f 
    1413         $(FT) BLAS/slarf.f 
    1414 sgeqr2.o: BLAS/sgeqr2.f 
    1415         $(FT) BLAS/sgeqr2.f 
    1416 saxpy.o: BLAS/saxpy.f 
    1417         $(FT) BLAS/saxpy.f 
    1418 slarz.o: BLAS/slarz.f 
    1419         $(FT) BLAS/slarz.f 
    1420 sorm2r.o: BLAS/sorm2r.f 
    1421         $(FT) BLAS/sorm2r.f 
    1422 snrm2.o: BLAS/snrm2.f 
    1423         $(FT) BLAS/snrm2.f 
    1424 slaqps.o: BLAS/slaqps.f 
    1425         $(FT) BLAS/slaqps.f 
    1426 slaqp2.o: BLAS/slaqp2.f 
    1427         $(FT) BLAS/slaqp2.f 
    1428 sgeqp3.o: BLAS/sgeqp3.f 
    1429         $(FT) BLAS/sgeqp3.f 
    1430 slaset.o: BLAS/slaset.f 
    1431         $(FT) BLAS/slaset.f 
    1432 slaisnan.o: BLAS/slaisnan.f 
    1433         $(FT) BLAS/slaisnan.f 
    1434 sisnan.o: BLAS/sisnan.f 
    1435         $(FT) BLAS/sisnan.f 
    1436 slascl.o: BLAS/slascl.f 
    1437         $(FT) BLAS/slascl.f 
    1438 sdot.o: BLAS/sdot.f 
    1439         $(FT) BLAS/sdot.f 
    1440 slaic1.o: BLAS/slaic1.f 
    1441         $(FT) BLAS/slaic1.f 
    1442 slarzb.o: BLAS/slarzb.f 
    1443         $(FT) BLAS/slarzb.f 
    1444 slarzt.o: BLAS/slarzt.f 
    1445         $(FT) BLAs/slarzt.f 
    1446 sormr3.o: BLAS/sormr3.f 
    1447         $(FT) BLAS/sormr3.f 
    1448 sormrz.o: BLAS/sormrz.f 
    1449         $(FT) BLAS/sormrz.f 
    1450 slatrz.o: BLAS/slatrz.f 
    1451         $(FT) BLAS/slatrz.f 
    1452 stzrzf.o: BLAS/stzrzf.f 
    1453         $(FT) BLAS/stzrzf.f 
    1454 sgelsy.o: BLAS/sgelsy.f 
    1455         $(FT) BLAS/sgelsy.f 
    1456 sgbmv.o: BLAS/sgbmv.f 
    1457         $(FT) BLAS/sgbmv.f 
    1458 sgemm.o: BLAS/sgemm.f 
    1459         $(FT) BLAS/sgemm.f 
    1460 sgemv.o: BLAS/sgemv.f 
    1461         $(FT) BLAS/sgemv.f 
    1462 sger.o: BLAS/sger.f 
    1463         $(FT) BLAS/sger.f 
    1464 sscal.o: BLAS/sscal.f 
    1465         $(FT) BLAS/sscal.f 
    1466 sswap.o: BLAS/sswap.f 
    1467         $(FT) BLAS/sswap.f 
    1468 stbsv.o: BLAS/stbsv.f 
    1469         $(FT) BLAS/stbsv.f 
    1470 strsm.o: BLAS/strsm.f 
    1471         $(FT) BLAS/strsm.f 
    1472 xerbla.o: BLAS/xerbla.f 
    1473         $(FT) BLAS/xerbla.f 
    1474  
    1475 endif 
    1476 # routines netcdf 
    1477  
    1478  
    1479  
    1480 io_netcdf.o: Netcdf-routines/io_netcdf.f90  
    1481         $(F_NETCDF) Netcdf-routines/io_netcdf.f90  
    1482  
    1483 sortie_netcdf_GRISLI_mod.0.2.o : Netcdf-routines/sortie_netcdf_GRISLI_mod.0.2.f90 
    1484         $(F_NETCDF) Netcdf-routines/sortie_netcdf_GRISLI_mod.0.2.f90 
    1485  
    1486 # Hassine 
    1487 io_netcdf_GRISLI.o: Netcdf-routines/io_netcdf_GRISLI.f90  
    1488         $(F_NETCDF) Netcdf-routines/io_netcdf_GRISLI.f90  
    1489  
    1490 sortie_netcdf_GRISLI_mod.0.2-hassine.o : Netcdf-routines/sortie_netcdf_GRISLI_mod.0.2-hassine.f90 
    1491         $(F_NETCDF) Netcdf-routines/sortie_netcdf_GRISLI_mod.0.2-hassine.f90 
    1492  
    1493 readinput.o: readinput.f90  
    1494         $(F_NETCDF) readinput.f90  
    1495  
    1496 interface_input.o: interface_input.f90 
    1497         $(FT) interface_input.f90 
    1498  
    1499  
    1500 # routines et modules recul de ligne d'echouage ice2sea 
    1501  
    1502 proto_declar_3D_grisli_mod.o : Recul_force_grounding_line/proto_declar_3D_grisli_mod.f90 
    1503         $(FT) Recul_force_grounding_line/proto_declar_3D_grisli_mod.f90 
    1504  
    1505 declar_proto_recul.o : Recul_force_grounding_line/declar_proto_recul.f90 
    1506         $(FT) Recul_force_grounding_line/declar_proto_recul.f90 
    1507  
    1508 proto_recul_mod.o : Recul_force_grounding_line/proto_recul_mod.f90 
    1509         $(FT) Recul_force_grounding_line/proto_recul_mod.f90 
    1510  
    1511 declar_io_ncdf_proto_mod.o : Recul_force_grounding_line/declar_io_ncdf_proto_mod.f90 
    1512         $(FT) Recul_force_grounding_line/declar_io_ncdf_proto_mod.f90 
    1513  
    1514 #       $(FT) -I$(NDC_INC) Netcdf-routines/sortie_netcdf_GRISLI_mod.f90 
    1515  
    1516  
    1517 # routines et modules recul de ligne d'echouage ice2sea version toy (finale) 
    1518  
    1519 toy_declar_3D_grisli_mod.o : Recul_force_grounding_line/toy_declar_3D_grisli_mod.f90 
    1520         $(FT) Recul_force_grounding_line/toy_declar_3D_grisli_mod.f90 
    1521  
    1522 declar_io_ncdf_toy_mod_fake.o : Recul_force_grounding_line/declar_io_ncdf_toy_mod_fake.f90 
    1523         $(FT) Recul_force_grounding_line/declar_io_ncdf_toy_mod_fake.f90 
    1524  
    1525 declar_toy_retreat.o : Recul_force_grounding_line/declar_toy_retreat.f90 
    1526         $(FT) Recul_force_grounding_line/declar_toy_retreat.f90 
    1527  
    1528 toy_retreat_mod.o  : Recul_force_grounding_line/toy_retreat_mod.f90 
    1529         $(F_NETCDF) Recul_force_grounding_line/toy_retreat_mod.f90 
    1530  
    1531  
     347# Hemin40_files : 
     348%.o: Hemin40_files/%.f90 
     349        $(FT) $(NCDF_INC) -c Hemin40_files/$*.f90 
     350 
     351# Hemin15_files 
     352%.o: Hemin15_files/%.f90 
     353        $(FT) $(NCDF_INC) -c Hemin15_files/$*.f90 
     354         
     355# Antarctique_general_files 
     356%.o: Antarctique_general_files/%.f90 
     357        $(FT) $(NCDF_INC) -c Antarctique_general_files/$*.f90 
     358         
     359# GrIce2sea_files 
     360%.o: GrIce2sea_files/%.f90 
     361        $(FT) $(NCDF_INC) -c GrIce2sea_files/$*.f90 
     362         
     363# Ant40_files 
     364%.o: Ant40_files/%.f90 
     365        $(FT) $(NCDF_INC) -c Ant40_files/$*.f90 
     366         
     367# ANT15-LBq_files 
     368%.o: ANT15-LBq_files/%.f90 
     369        $(FT) $(NCDF_INC) -c ANT15-LBq_files/$*.f90 
     370         
     371# Greeneem_files/Greeneem15_files 
     372%.o: Greeneem_files/Greeneem15_files/%.f90 
     373        $(FT) $(NCDF_INC) -c Greeneem_files/Greeneem15_files/$*.f90 
     374         
     375# Greeneem_files 
     376%.o: Greeneem_files/%.f90 
     377        $(FT) $(NCDF_INC) -c Greeneem_files/$*.f90 
     378                 
     379# Draggings_modules 
     380%.o: Draggings_modules/%.f90 
     381        $(FT) $(NCDF_INC) -c Draggings_modules/$*.f90 
     382         
     383# Snowball_files 
     384%.o: Snowball_files/%.f90 
     385        $(FT) $(NCDF_INC) -c Snowball_files/$*.f90 
     386         
     387         
     388# subroutines communes : 
     389%.o: %.f90 
     390        $(FT) $(NCDF_INC) -c $*.f90 
     391         
     392# New-remplimat : 
     393%.o : New-remplimat/%.f90 
     394        $(FT) $(NCDF_INC) -c New-remplimat/$*.f90 
     395         
     396# Netcdf-routines : 
     397%.o: Netcdf-routines/%.f90 
     398        $(FT) $(NCDF_INC) -c Netcdf-routines/$*.f90 
     399         
     400#toy_recul : 
     401%.o: Recul_force_grounding_line/%.f90 
     402        $(FT) $(NCDF_INC) -c Recul_force_grounding_line/$*.f90 
     403         
     404#Temperature : 
     405%.o : Temperature-routines/%.f90 
     406        $(FT) $(NCDF_INC) -c Temperature-routines/$*.f90 
     407         
     408# BLAS : 
     409%.o : BLAS/%.f 
     410        $(FT) -c BLAS/$*.f 
     411         
     412# Reduc et band:    
     413%.o : LAPACK/%.f 
     414        $(FT) -c LAPACK/$*.f 
    1532415 
    1533416 
    1534417# Liens et Construction des executables 
    1535418#--------------------------------------- 
    1536 #       $(mod_clim_forcage) \ a mettre a la place de mod_clim_perturb eventuellement 
    1537  
    1538  
    1539 LBqAntar15 : $(Dim_ANT15-LBq) $(mod_dim_communs)  \ 
    1540         $(Proto_recul)  \ 
    1541         $(mod_communs) \ 
    1542         $(Proto_recul)  \ 
    1543         $(mod_clim_perturb)  \ 
    1544         $(mod_tracers) \ 
     419 
     420Ant-15 : $(Dim_ANT15-LBq) $(mod_dim_communs) \ 
     421        $(toy_recul) \ 
     422        $(mod_communs) \ 
     423        $(mod_clim_tof)  \ 
     424        $(mod_no_tracers) \ 
    1545425        $(mod_ell) $(Liste_ANT15-LBq) \ 
    1546426        $(diagnoshelf) \ 
    1547427        $(Liste_Netcdf) \ 
    1548         $(routines_communes) steps_time_loop.o $(routine_elliptiques)  
    1549  
    1550         $(LK) -o ../bin/LBqAntar-15  $(Dim_ANT15-LBq) $(mod_dim_communs) \ 
    1551         $(Proto_recul)  \ 
    1552         $(mod_communs) \ 
    1553         $(mod_clim_perturb)  \ 
    1554         $(mod_tracers) \ 
    1555         $(mod_ell) \ 
    1556         $(Liste_ANT15-LBq) \ 
    1557         $(diagnoshelf) $(Liste_Netcdf) \ 
    1558         $(routines_communes) steps_time_loop.o $(routine_elliptiques) $(NCDF_LIB)  $(MKL_LIB) 
     428        $(routines_communes) steps_time_loop.o \ 
     429        $(routine_elliptiques) \ 
     430        $(Liste_BLAS) 
     431 
     432        $(LK) -o ../bin/Ant-15 \ 
     433        $(Dim_ANT15-LBq) $(mod_dim_communs) \ 
     434        $(toy_recul)  \ 
     435        $(mod_communs) \ 
     436        $(mod_clim_tof)  \ 
     437        $(mod_no_tracers) \ 
     438        $(mod_ell) $(Liste_ANT15-LBq) \ 
     439        $(diagnoshelf) \ 
     440        $(Liste_Netcdf) \ 
     441        $(routines_communes) steps_time_loop.o \ 
     442        $(routine_elliptiques) $(NCDF_LIB) $(MKL_LIB) $(Liste_BLAS) 
    1559443 
    1560444Recul_ice2sea : $(Dim_ANT15-LBq) $(mod_dim_communs)  \ 
     
    1576460        $(Liste_ANT15-LBq) \ 
    1577461        $(diagnoshelf) $(Liste_Netcdf) \ 
    1578         $(routines_communes) steps_time_loop.o $(routine_elliptiques) $(NCDF_LIB)  $(MKL_LIB) 
     462        $(routines_communes) steps_time_loop.o $(routine_elliptiques) $(NCDF_LIB) $(MKL_LIB) 
    1579463 
    1580464 
     
    1589473        $(mod_ell)  $(Liste_mismip_3D_5) \ 
    1590474        $(Liste_Netcdf) $(Liste_mismip_post_ncdf) $(diagnoshelf) \ 
    1591         $(routines_communes) steps_time_loop.o $(routine_elliptiques) $(NCDF_LIB)  $(MKL_LIB) 
     475        $(routines_communes) steps_time_loop.o $(routine_elliptiques) $(NCDF_LIB) $(MKL_LIB) 
    1592476 
    1593477Grice2sea : $(Dim_GrIce2sea) $(mod_dim_communs)   \ 
     
    1599483        $(diagnoshelf) \ 
    1600484        $(Liste_Netcdf) \ 
    1601         $(routines_communes) steps_time_loop.o $(routine_elliptiques)  
     485        $(routines_communes) steps_time_loop.o \ 
     486        $(routine_elliptiques) \ 
     487        $(Liste_BLAS) 
    1602488 
    1603489        $(LK) -o ../bin/Grice2sea \ 
     
    1611497        $(Liste_Netcdf) \ 
    1612498        $(routines_communes) steps_time_loop.o \ 
    1613         $(routine_elliptiques) $(NCDF_LIB)  $(MKL_LIB) 
     499        $(routine_elliptiques) $(NCDF_LIB) $(MKL_LIB) $(Liste_BLAS) 
    1614500 
    1615501Grice2sea_iterbeta : $(Dim_GrIce2sea) $(mod_dim_communs)   \ 
     
    1622508        $(Liste_Netcdf) \ 
    1623509        $(routines_communes) steps_time_loop_avec_iterbeta.o \ 
    1624         $(routine_elliptiques)  
     510        $(routine_elliptiques) \ 
     511        $(Liste_BLAS) 
    1625512 
    1626513        $(LK) -o ../bin/Grice2sea_iterbeta \ 
     
    1634521        $(Liste_Netcdf) \ 
    1635522        $(routines_communes) steps_time_loop_avec_iterbeta.o \ 
    1636         $(routine_elliptiques) $(NCDF_LIB)  $(MKL_LIB) 
     523        $(routine_elliptiques) $(NCDF_LIB) $(MKL_LIB) $(Liste_BLAS) 
    1637524 
    1638525Hemin-40 : $(Dim_hemin40) $(mod_dim_communs) \ 
     
    1640527        $(mod_communs) \ 
    1641528        $(mod_clim_tof) \ 
    1642         $(mod_no_tracers) \ 
     529        $(mod_tracers) \ 
    1643530        $(mod_ell) $(Liste_hemin40) \ 
    1644531        $(diagnoshelf) \ 
     
    1653540        $(mod_communs) \ 
    1654541        $(mod_clim_tof) \ 
    1655         $(mod_no_tracers) \ 
     542        $(mod_tracers) \ 
    1656543        $(mod_ell) $(Liste_hemin40) \ 
    1657544        $(diagnoshelf) \ 
    1658545        $(Liste_Netcdf) \ 
    1659546        $(routines_communes) main_dummy.o steps_time_loop.o \ 
    1660         $(routine_elliptiques) $(NCDF_LIB)  $(MKL_LIB) $(Liste_BLAS) 
     547        $(routine_elliptiques) $(NCDF_LIB) $(MKL_LIB) $(Liste_BLAS) 
    1661548 
    1662549        ar -cvr libgrisli.a $(Dim_hemin40) $(mod_dim_communs) \ 
     
    1681568        $(Liste_Netcdf) \ 
    1682569        $(routines_communes) steps_time_loop.o \ 
    1683         $(routine_elliptiques) 
     570        $(routine_elliptiques) \ 
     571        $(Liste_BLAS) 
    1684572 
    1685573        $(LK) -o  ../bin/Hemin-15 \ 
     
    1693581        $(Liste_Netcdf) \ 
    1694582        $(routines_communes) steps_time_loop.o \ 
    1695         $(routine_elliptiques) $(NCDF_LIB)  $(MKL_LIB) 
     583        $(routine_elliptiques) $(NCDF_LIB) $(MKL_LIB) $(Liste_BLAS) 
    1696584 
    1697585Greeneem15 : $(Dim_greeneem15) $(mod_dim_communs) \ 
     
    1699587        $(mod_communs) \ 
    1700588        $(mod_clim_tof) \ 
    1701         $(mod_no_tracers) \ 
     589        $(mod_tracers) \ 
    1702590        $(mod_ell) $(Liste_greeneem15) \ 
    1703591        $(diagnoshelf) \ 
    1704592        $(Liste_Netcdf) \ 
    1705593        $(routines_communes) steps_time_loop.o \ 
    1706         $(routine_elliptiques)  
     594        $(routine_elliptiques) \ 
     595        $(Liste_BLAS) 
    1707596 
    1708597        $(LK) -o ../bin/Greeneem15 \ 
     
    1716605        $(Liste_Netcdf) \ 
    1717606        $(routines_communes) steps_time_loop.o \ 
    1718         $(routine_elliptiques) $(NCDF_LIB)  $(MKL_LIB) 
     607        $(routine_elliptiques) $(NCDF_LIB) $(MKL_LIB) $(Liste_BLAS) 
    1719608 
    1720609Ant-40 : $(Dim_Ant40) $(mod_dim_communs) \ 
     
    1740629        $(Liste_Netcdf) \ 
    1741630        $(routines_communes) steps_time_loop.o \ 
    1742         $(routine_elliptiques) $(NCDF_LIB)  $(MKL_LIB) $(Liste_BLAS) 
     631        $(routine_elliptiques) $(NCDF_LIB) $(MKL_LIB) $(Liste_BLAS) 
     632         
     633Snowball : $(Dim_Snowball) $(mod_dim_communs) \ 
     634        $(toy_recul)  \ 
     635        $(mod_communs) \ 
     636        $(mod_clim_tof) \ 
     637        $(mod_no_tracers) \ 
     638        $(mod_ell) $(Liste_Snowball) \ 
     639        $(diagnoshelf) \ 
     640        $(Liste_Netcdf) \ 
     641        $(routines_communes) steps_time_loop.o \ 
     642        $(routine_elliptiques) \ 
     643        $(Liste_BLAS) 
     644 
     645        $(LK) -o  ../bin/Snowball \ 
     646        $(Dim_Snowball) $(mod_dim_communs) \ 
     647        $(toy_recul)  \ 
     648        $(mod_communs) \ 
     649        $(mod_clim_tof) \ 
     650        $(mod_no_tracers) \ 
     651        $(mod_ell) $(Liste_Snowball) \ 
     652        $(diagnoshelf) \ 
     653        $(Liste_Netcdf) \ 
     654        $(routines_communes) steps_time_loop.o \ 
     655        $(routine_elliptiques) $(NCDF_LIB) $(MKL_LIB) $(Liste_BLAS) 
     656         
     657         
     658clean   : 
     659        rm -f *.o *.mod *~  */*~ BLAS/*.o 
     660         
     661 
    1743662 
    1744663 
     
    1835754 
    1836755 
    1837  
    1838 # geographies obsoletes 
    1839  
    1840 # listes 
    1841  
    1842 #Liste_Antar15_CISM = lect-Ant_clim_CISM_gen_dat.o output_anta_mod-0.4.o \ 
    1843 #       dragging-vit_bil_CISM_gen_mod.o fake-routines-ant_mod.o \ 
    1844 #       lect-Ant_CISM_gen_dat.o module_choix_antar15CISM.o \ 
    1845 #       massb-ant_forcage-0.4.o massb-ant_perturb_Tparam.o track_ant40_mod.o  
    1846  
    1847 #Liste_Antar20_CISM = lect-Ant_clim_CISM_gen_dat.o output_anta_mod-0.4.o \ 
    1848 #       dragging-vit_bil_CISM_gen_mod.o fake-routines-ant_mod.o \ 
    1849 #       lect-Ant_CISM_gen_dat.o module_choix_antar20CISM.o \ 
    1850 #       massb-ant_forcage-0.4.o massb-ant_perturb_Tparam.o track_ant40_mod.o  
    1851  
    1852 #Liste_Antar25_CISM = lect-Ant_clim_CISM_gen_dat.o output_anta_mod-0.4.o \ 
    1853 #       dragging-vit_bil_CISM_gen_mod.o fake-routines-ant_mod.o \ 
    1854 #       lect-Ant_CISM_gen_dat.o module_choix_antar25CISM.o \ 
    1855 #       massb-ant_forcage-0.4.o massb-ant_perturb_Tparam.o track_ant40_mod.o  
    1856  
    1857 #Liste_Antar45_CISM = lect-Ant_clim_CISM_45_dat.o output_anta_mod-0.4.o \ 
    1858 #       dragging-vit_bil_CISM_45_mod.o fake-routines-ant_mod.o \ 
    1859 #       lect-Ant_CISM_45_dat.o module_choix_antar45CISM.o \ 
    1860 #       massb-ant_forcage-0.4.o massb-ant_perturb_Tparam.o track_ant40_mod.o  
    1861  
    1862 #Liste_HEINO = climat-heino_mod.o lect-Heino_mod.o  \ 
    1863 #       fake-routines-Heino_mod.o  detect-assym.o  \ 
    1864 #       prop-therm-Heino_mod.o  sliding-Heino_mod.o \ 
    1865 #       initial-heino-phy.o  output_heino_mod.o \ 
    1866 #       module_choix-heino-0.4.o  track_heino_mod.o 
    1867  
    1868 #Antar20 : $(Dim_Antar20_CISM) $(mod_dim_communs) $(mod_communs) $(mod_ell) $(Liste_Antar20_CISM) \ 
    1869 #       $(diagnoshelf) $(Liste_Netcdf) \ 
    1870 #       $(routines_communes) $(routine_elliptiques)  
    1871  
    1872 #       $(LK) -o ../bin/Antar-20  $(Dim_Antar20_CISM) $(mod_dim_communs) $(mod_communs) \ 
    1873 #        $(mod_ell) $(Liste_Antar20_CISM) \ 
    1874 #       $(diagnoshelf) $(Liste_Netcdf) \ 
    1875 #       $(routines_communes) $(routine_elliptiques) $(NCDF_LIB) $(MKL_LIB) 
    1876  
    1877 #Antar25 : $(Dim_Antar25_CISM) $(mod_dim_communs) $(mod_communs) $(mod_ell) $(Liste_Antar25_CISM) \ 
    1878 #       $(diagnoshelf) $(Liste_Netcdf) \ 
    1879 #       $(routines_communes) $(routine_elliptiques)  
    1880  
    1881 #       $(LK) -o ../bin/Antar-25  $(Dim_Antar25_CISM) $(mod_dim_communs) $(mod_communs) $(mod_ell) \ 
    1882 #       $(Liste_Antar25_CISM) \ 
    1883 #       $(diagnoshelf) $(Liste_Netcdf) \ 
    1884 #       $(routines_communes) $(routine_elliptiques) $(NCDF_LIB)  $(MKL_LIB) 
    1885  
    1886 #Antar25-181 : $(Dim_Antar25_CISM) $(mod_dim_communs) $(mod_communs) $(mod_ell) $(Liste_Antar25_CISM) \ 
    1887 #       $(diagnoshelf) $(Liste_Netcdf) \ 
    1888 #       $(routines_communes) $(routine_elliptiques)  
    1889  
    1890 #       $(LK) -o ../bin-pc181/Antar-pc181  $(Dim_Antar25_CISM) $(mod_dim_communs) $(mod_communs) \ 
    1891 #       $(mod_ell) $(Liste_Antar25_CISM) \ 
    1892 #       $(diagnoshelf) $(Liste_Netcdf) \ 
    1893 #       $(routines_communes) $(routine_elliptiques) $(NCDF_LIB)  $(MKL_LIB) 
    1894  
    1895  
    1896 #Antar45 : $(Dim_Antar45_CISM) $(mod_dim_communs) $(mod_communs) $(mod_ell) $(Liste_Antar45_CISM) \ 
    1897 #       $(diagnoshelf) $(Liste_Netcdf) \ 
    1898 #       $(routines_communes) $(routine_elliptiques)  
    1899  
    1900 #       $(LK) -o ../bin/Antar-45  $(Dim_Antar45_CISM)  $(mod_communs) $(mod_ell) $(Liste_Antar45_CISM) \ 
    1901 #       $(diagnoshelf) $(Liste_Netcdf) \ 
    1902 #       $(routines_communes) $(routine_elliptiques) $(NCDF_LIB)  $(MKL_LIB) 
    1903  
    1904 #Liste_Antar_old =  bmelt-ant-regions_mod.o \ 
    1905 #       lect-clim-act-anteis_mod.o  output_anta_mod-0.4.o \ 
    1906 #       dragging_stream_impose_vitbil_mod.o  \ 
    1907 #       fake-routines-ant_mod.o  lect-anteis_mod.o \ 
    1908 #       module_choix-antar40-0.4_old.o massb-ant_forcage-0.4.o massb-ant_perturb-0.4.o \ 
    1909 #       track_ant40_mod.o 
    1910  
    1911 #Liste_Antar40 =  bmelt-ant-regions_mod.o \ 
    1912 #       lect-clim-act-anteis_mod.o  output_anta_mod-0.4.o \ 
    1913 #       dragging_stream_impose_vitbil_mod.o  \ 
    1914 #       fake-routines-ant_mod.o  lect-anteis_mod.o \ 
    1915 #       module_choix-antar40-0.4.o massb-ant_forcage-0.4.o massb-ant_perturb_Tparam.o \ 
    1916 #       track_ant40_mod.o 
    1917  
    1918 # listes de dimensionnement obsoletes 
    1919  
    1920 # Dim_Antar40 = paradim-ant40_mod.o geography-ant40_mod.o 
    1921 # Dim_Antar15_CISM = paradim-ant15_CISM_mod.o geography-Ant15CISM.o 
    1922 # Dim_Antar20_CISM = paradim-ant20_CISM_mod.o geography-Ant20CISM.o 
    1923 # Dim_Antar25_CISM = paradim-ant25_CISM_mod.o geography-Ant25CISM.o 
    1924 # Dim_Antar45_CISM = paradim-ant45_CISM_mod.o geography-Ant45CISM.o 
    1925 # Dim_heino = paradim-Heino_mod.o geography-heino_mod.o 
    1926  
    1927  
    1928 # ancienne version diagnoshelf: obsolete, il faut aussi modifier le module choix 
    1929  
    1930 #mod_ell_old = eq_elliptique_mod-0.4.o  
    1931 #routine_elliptiques_old =  remplimat-ant-0.5-40km.o 
    1932 #diagnoshelf_old = diagno-ant-0.6_mod.o 
    1933  
    1934  
    1935 # Routines obsoletes 
    1936  
    1937 #icetemp-0.4.o : icetemp-0.4.f90   #module3d.mod tridiagmod.mod 
    1938 #       $(FT) icetemp-0.4.f90 
    1939  
    1940 #icetemp-0.5_mod.o : icetemp-0.5_mod.f90 
    1941 #       $(FT) icetemp-0.5_mod.f90 
    1942  
    1943 #icethick-ant-0.5.o : icethick-ant-0.5.f90  #module3d.mod relaxation_mod.mod 
    1944 #       $(FT) icethick-ant-0.5.f90 
    1945  
    1946 #deform_declar_mod-0.3.o : deform_declar_mod-0.3.f90 
    1947 #       $(FT) deform_declar_mod-0.3.f90 
    1948  
    1949  
    1950 #-------------lecture des fichiers Climat obsoletes 
    1951  
    1952 #lect-clim-act-anteis_mod.o : Ant40_files/lect-clim-act-anteis_mod.f90 
    1953 #       $(FT) Ant40_files/lect-clim-act-anteis_mod.f90 
    1954  
    1955 #lect-Ant_clim_CISM_gen_dat.o : Antarctique_general_files/lect-Ant_clim_CISM_gen_dat.f90 
    1956 #       $(FT)  Antarctique_general_files/lect-Ant_clim_CISM_gen_dat.f90 
    1957  
    1958 #lect-Ant_clim_CISM_15_dat.o : Ant15_CISM_files/lect-Ant_clim_CISM_15_dat.f90 
    1959 #       $(FT)  Ant15_CISM_files/lect-Ant_clim_CISM_15_dat.f90 
    1960  
    1961 #lect-Ant_clim_CISM_45_dat.o : Ant45_CISM_files/lect-Ant_clim_CISM_45_dat.f90 
    1962 #       $(FT)  Ant45_CISM_files/lect-Ant_clim_CISM_45_dat.f90 
    1963  
    1964 #massb-ant_forcage-0.4.o : Ant40_files/massb-ant_forcage-0.4.f 
    1965 #       $(FT) Ant40_files/massb-ant_forcage-0.4.f 
    1966  
    1967 # ancienne methode netcdf 
    1968 #sortie_netcdf_GRISLI_mod.o : Netcdf-routines/sortie_netcdf_GRISLI_mod.f90 
    1969 #       $(FT)  Netcdf-routines/sortie_netcdf_GRISLI_mod.f90 
    1970  
    1971  
    1972  
    1973  
    1974  
    1975 # Liens 
    1976  
    1977  
    1978 #Heino :        $(Dim_heino) $(mod_dim_communs) $(mod_communs)  $(Liste_HEINO) $(Liste_Netcdf) \ 
    1979 #       $(routines_communes) $(Liste_BLAS)   
    1980 #       $(LK) -o Heino  $(Dim_heino) $(mod_dim_communs) $(mod_communs) $(Liste_HEINO) \ 
    1981 #       $(Liste_Netcdf) \ 
    1982 #       $(routines_communes) $(Liste_BLAS) $(NCDF_LIB)  
    1983  
    1984 #Antar-40 : $(Dim_Antar40) $(mod_dim_communs) $(mod_communs) $(mod_ell)  $(Liste_Antar40) \ 
    1985 #       $(diagnoshelf) $(Liste_Netcdf) \ 
    1986 #       $(routines_communes) $(routine_elliptiques)   
    1987  
    1988 #       $(LK) -o  ../bin/Antar-40  $(Dim_Antar40) $(mod_dim_communs) $(mod_communs) $(mod_ell)  $(Liste_Antar40) \ 
    1989 #       $(diagnoshelf) $(Liste_Netcdf) \ 
    1990 #       $(routines_communes) $(routine_elliptiques) $(NCDF_LIB)  $(MKL_LIB) 
    1991  
    1992 #Antar15 : $(Dim_Antar15_CISM) $(mod_dim_communs) $(mod_communs) $(mod_ell) $(Liste_Antar15_CISM) \ 
    1993 #       $(diagnoshelf) $(Liste_Netcdf) \ 
    1994 #       $(routines_communes) $(routine_elliptiques)  
    1995  
    1996 #       $(LK) -o ../bin/Antar-15  $(Dim_Antar15_CISM) $(mod_dim_communs) $(mod_communs) $(mod_ell) \ 
    1997 #       $(Liste_Antar15_CISM) \ 
    1998 #       $(diagnoshelf) $(Liste_Netcdf) \ 
    1999 #       $(routines_communes) $(routine_elliptiques) $(NCDF_LIB)  $(MKL_LIB) 
    2000  
    2001  
    2002 #Antar_old : $(Dim_Antar40) $(mod_dim_communs) $(mod_communs)  $(mod_ell_old)  \ 
    2003 #       $(Liste_Antar_old) $(diagnoshelf_old) $(Liste_Netcdf) \ 
    2004 #       $(routines_communes) $(routine_elliptiques_old)   
    2005  
    2006 #       $(LK) -o  ../bin/Antar_old  $(Dim_Antar40) $(mod_dim_communs) $(mod_communs) \ 
    2007 #       $(mod_ell_old)  $(Liste_Antar_old) \ 
    2008 #       $(diagnoshelf_old) $(Liste_Netcdf) \ 
    2009 #       $(routines_communes) $(routine_elliptiques_old) $(NCDF_LIB)  $(MKL_LIB) 
  • branches/iLoveclim/SOURCES/Netcdf-routines/sortie_netcdf_GRISLI_mod.0.2-hassine.f90

    r32 r77  
    157157    integer :: num_file=22 
    158158    integer :: i1,i2,i3 
    159     integer :: i,j,k,l      
     159    integer :: i,j,k      
    160160    character(len=20) :: name1 
    161161    character(len=20) :: name2 
     
    385385    integer   :: ifin 
    386386    integer   :: npr 
    387     integer  :: i,j,k !< indices de travail 
     387    integer  :: i !< indices de travail 
    388388 
    389389    if (itracebug.eq.1)  call tracebug(' Entree dans routine testsort_time_ncdf') 
     
    671671    ! ferret conventions 
    672672 
    673     if ( time .le. 0. ) then 
    674        timetmp = -time 
    675        nametmp = 'p_' 
    676     else 
     673!    if ( time .le. 0. ) then 
     674!       timetmp = -time 
     675!       nametmp = 'p_' 
     676!    else 
    677677       timetmp = time 
    678678       nametmp = 'f_' 
    679     endif 
     679!    endif 
    680680     
    681681    if (.not.associated(tab)) allocate(tab(nx,ny)) 
     
    921921                            if (ilemx(i,j)) then     ! ile 
    922922                               tab(i,j)=2 
     923                            else if (fleuvemx(i,j)) then 
     924                               tab(i,j)=5        ! actual grounded streams 
    923925                            else                   
    924926                               tab(i,j)=1        ! grounded zone 
  • branches/iLoveclim/SOURCES/New-remplimat/diagno-L2_mod.f90

    r4 r77  
    11!module diagno_L2_mod               ! Nouvelle version, compatible remplimat 2008 Cat 
    22module diagno_mod                   ! nom pendant les tests 
    3  
     3 !$ USE OMP_LIB 
    44use module3D_phy 
    55use module_choix 
     
    8686subroutine diagnoshelf !      Resolution numerique des equations diagnostiques 
    8787 
    88   integer :: itest 
    8988 
    9089  if (itracebug.eq.1)  call tracebug(' Entree dans diagnoshelf') 
     
    111110  call calc_pvi                    ! calcule les viscosites integrees 
    112111 
     112!$OMP PARALLEL 
     113!$OMP WORKSHARE 
    113114   where (flot(:,:).and.(H.gt.1))  ! valeur analytique pour les shelfs 
    114115      pvi(:,:) = (4./coef_Sflot/rog)**2/btt(:,:,1,1)/H(:,:) 
    115116   end where 
    116  
     117!$OMP END WORKSHARE 
     118!$OMP END PARALLEL 
    117119  ! avec couplage thermomecanique 
    118120!  write(166,*) ' apres call calc_pvi',itour_pvi 
     
    179181 
    180182  !      nouvelles vitesses          
    181  
     183  !$OMP PARALLEL 
     184  !$OMP WORKSHARE 
    182185  uxbar(:,:)=uxb1(:,:) 
    183186  uybar(:,:)=uyb1(:,:) 
    184  
     187  !$OMP END WORKSHARE 
    185188 
    186189 
    187190  !    calcul de tobmx et tobmy (frottement basal) apres calcul des vitesses 
    188191  !    --------------------------------------------------------------------- 
     192  !$OMP DO 
    189193  do j=1,ny 
    190194     do i=1,nx 
     
    193197     enddo 
    194198  enddo 
     199  !$OMP END DO 
    195200 
    196201  ! Mise ne réserve des vitesses flgzmx et flgzmy 
     202  !$OMP WORKSHARE 
    197203  where (flgzmx(:,:)) 
    198204     uxflgz(:,:)=uxbar(:,:) 
     
    206212     uyflgz(:,:)=0. 
    207213  endwhere 
    208  
     214  !$OMP END WORKSHARE 
     215  !$OMP END PARALLEL 
    209216  !i=92 
    210217  !j=152 
     
    239246! Pour les noeuds posés mais ayant un voisin stream ou flottant, on calcule 
    240247! la viscosité avec stream/shelves 
    241  
    242248! le calcul se fait sur les noeuds majeurs 
     249 
     250!$  integer :: rang ,nb_taches 
     251!$  logical :: paral 
     252 
     253  integer :: t1,t2,ir 
     254  real                           :: temps, t_cpu_0, t_cpu_1, t_cpu, norme   
     255 
    243256if (itracebug.eq.1)  call tracebug(' Calc pvi') 
     257 
     258!$OMP PARALLEL PRIVATE(rang,iplus1,jplus1,sf3,sf1,BT2,phiphi,ttau,d02,discr) 
     259!$ paral = OMP_IN_PARALLEL() 
     260!$ rang=OMP_GET_THREAD_NUM() 
     261!$ nb_taches=OMP_GET_NUM_THREADS() 
     262 
     263!$OMP WORKSHARE 
    244264pvi(:,:)  = pvimin 
    245265Abar(:,:) = 0. 
    246  
    247  
     266!$OMP END WORKSHARE 
     267 
     268!$OMP DO 
    248269do j=1,ny 
    249270   do i=1,nx 
     
    323344   end do 
    324345end do 
     346!$OMP END DO 
    325347 
    326348! cas des noeuds fictifs, si l'épaisseur est très petite  
    327349! pvimin est très petit 
    328  
     350!$OMP WORKSHARE 
    329351where (H(:,:).le.1.) 
    330352   pvi(:,:) = pvimin 
     
    335357end where 
    336358 
     359 
    337360debug_3D(:,:,27)=pvi(:,:) 
    338  
     361!$OMP END WORKSHARE 
    339362! attention run 35 
    340363!--------------------  
     
    346369 
    347370!  calcul de la viscosite integree au milieu des mailles (pvm) 
    348  
     371!$OMP DO 
    349372do i=2,nx 
    350373   do j=2,ny 
     
    356379   end do 
    357380end do 
     381!$OMP END DO 
     382!$OMP END PARALLEL 
     383 
    358384end subroutine calc_pvi 
    359385!------------------------------------------------------------------ 
     
    380406!    -41               -1  Sud                -12  
    381407 
    382  
    383  
     408!$OMP PARALLEL 
     409!$OMP WORKSHARE 
    384410imx_diag(:,:)=0 
    385411imy_diag(:,:)=0 
     
    433459imx_diag(1,:)=0     ! hors domaine a cause des mailles alternees 
    434460imy_diag(:,1)=0     ! hors domaine a cause des mailles alternees 
     461!$OMP END WORKSHARE 
     462!$OMP END PARALLEL 
    435463  
    436464end subroutine imx_imy_nx_ny 
  • branches/iLoveclim/SOURCES/New-remplimat/eq_ellipt_sgbsv_mod-0.2.f90

    r4 r77  
    88 
    99! declaration des variables 
    10  
     10!$ USE OMP_LIB 
    1111use remplimat_declar   ! toutes les routines de ce module connaissent les Tuij.... 
    1212 
     
    154154      !   write(6,*) 'sortie ok de sgbsv' 
    155155      !   write(6,*)'-----------------------' 
    156  
     156      !$OMP PARALLEL 
     157      !$OMP DO 
    157158      do j = ny1,ny2 
    158159         do i = nx1,nx2 
     
    171172         end do 
    172173      end do 
    173  
    174  
     174      !$OMP END DO 
     175      !$OMP END PARALLEL 
    175176 
    176177   else 
     
    181182 
    182183else                 ! nblig=0, pas de passage par sgbsv 
     184   !$OMP PARALLEL 
     185   !$OMP WORKSHARE 
    183186   uxnew(nx1:nx2,ny1:ny2)=uxprec(nx1:nx2,ny1:ny2) 
    184187   uynew(nx1:nx2,ny1:ny2)=uyprec(nx1:nx2,ny1:ny2) 
     188   !$OMP END WORKSHARE 
     189   !$OMP END PARALLEL 
    185190end if 
    186191 
     
    209214! numerotation des lignes  
    210215!-------------------------- 
    211  
     216!$OMP PARALLEL 
     217!$OMP WORKSHARE 
    212218ligu_L2(:,:) = -9999 
    213219ligv_L2(:,:) = -9999 
    214220pos_ligu(:,:) = -9999 
    215221pos_ligv(:,:) = -9999 
    216  
     222!$OMP END WORKSHARE 
     223!$OMP END PARALLEL 
    217224! Boucle sur les noeuds avec la dimension la plus grande a l'interieur 
    218225 
     
    248255end do count 
    249256 
     257 
    250258nblig = count_line-1 
    251259 
     
    253261! calcul de la largeur de bande. depend de la numerotation des lignes 
    254262!-------------------------------------------------------------------- 
     263!$OMP PARALLEL 
     264!$OMP WORKSHARE 
    255265lu_band(:) = 0 
    256266ll_band(:) = 0 
     267!$OMP END WORKSHARE 
     268!$OMP END PARALLEL 
    257269 
    258270larg_band: do j = ny1,ny2 
     
    367379! ecriture de la matrice proprement dite et du vecteur bdr 
    368380!------------------------------------------------------------ 
     381!$OMP PARALLEL 
     382!$OMP WORKSHARE 
    369383mmat(:,:) = 0. 
    370384bdr(:,:) = 0. 
    371  
    372  
     385!$OMP END WORKSHARE 
     386 
     387!$OMP DO PRIVATE(ligne,ilmin,ilmax,jlmin,jlmax,colonne) 
    373388ij_loop : do j = ny1,ny2         ! attention, on rempli 2 lignes par 2 lignes (u,v) 
    374389   do i = nx1,nx2 
     
    481496 end do 
    482497end do ij_loop 
     498!$OMP END DO 
     499!$OMP END PARALLEL 
    483500 
    484501 
  • branches/iLoveclim/SOURCES/New-remplimat/remplimat-shelves-tabTu.f90

    r4 r77  
    4141!----------------------------------------------------------------------- 
    4242 
     43!$ USE OMP_LIB 
    4344use module3d_phy 
    4445use remplimat_declar        ! les tableaux tuij, .... 
     
    8788!-------------------- 
    8889 
    89 real    :: epsilon 
    9090real    :: dx2=dx*dx     ! variable de travail 
    9191real    :: beta          ! pour le frottement 
    92 real    :: moteur        ! pour le frottement 
    9392real    :: scal          ! pour le conditionnement (diagonale=1) 
     93 
     94character(len=80) :: fileout ! pour sortie fichier verification 
    9495 
    9596 
     
    104105 
    105106!----------------------------- 
     107!$OMP PARALLEL 
     108!$OMP WORKSHARE 
    106109Tu(:,:,:,:) = 0. ; Tv(:,:,:,:) = 0. ; Su(:,:,:,:) = 0. ; Sv(:,:,:,:) = 0. 
    107110opposx(:,:) = 0. ; opposy(:,:) = 0. 
     
    117120Hmx_oppos(:,:) = Hmx(:,:) 
    118121Hmy_oppos(:,:) = Hmy(:,:) 
    119  
     122!$OMP END WORKSHARE 
     123!$OMP END PARALLEL 
    120124 
    121125! calcul de Hmx_oppos et Hmy_oppos dans le cas de fronts 
     
    164168 call limit_frotm 
    165169else 
     170   !$OMP PARALLEL 
     171   !$OMP WORKSHARE 
    166172   frotmx(:,:)= betamx(:,:) 
    167173   frotmy(:,:)= betamy(:,:) 
     174   !$OMP END WORKSHARE 
     175   !$OMP END PARALLEL 
    168176end if 
    169177 
     
    233241 
    234242if (iter_beta.eq.1) then 
    235    call calc_beta(Vcol_x, Vcol_y)  
    236  
    237    call write_datfile3(nx,ny,betamx,betamy,beta_centre,'beta-estime.dat') 
    238    if (itracebug.eq.1)  call tracebug(' remplimat apres calc_beta') 
    239    iter_beta = 0             ! pour faire un calcul de vitesse le coup d'apres 
    240    corr_def = .true. 
    241    goto 888 
     243        call calc_beta(Vcol_x, Vcol_y)  
     244        fileout='beta-estime.dat' 
     245        call write_datfile3(nx,ny,betamx,betamy,beta_centre,fileout) 
     246        if (itracebug.eq.1)  call tracebug(' remplimat apres calc_beta') 
     247        iter_beta = 0             ! pour faire un calcul de vitesse le coup d'apres 
     248        corr_def = .true. 
     249        goto 888 
    242250 
    243251else if ((iter_beta.eq.0).and.(corr_def)) then 
     
    272280! pour avoir la diagonale=1 a faire imperativement APRES okmat 
    273281!-------------------------------------------------------------- 
    274  
     282!$OMP PARALLEL 
     283!$OMP DO PRIVATE(scal) 
    275284do j=ny1,ny2 
    276285   do i=nx1,nx2 
     
    319328   end do 
    320329end do 
    321  
     330!$OMP END DO 
     331!$OMP END PARALLEL 
    322332 
    323333! mise a identite des noeuds fantomes 
     
    329339 
    330340 
    331  
    332 debug_3d(:,:,35) = opposx(:,:) 
    333 debug_3d(:,:,36) = opposy(:,:) 
     341!debug_3d(:,:,35) = opposx(:,:) 
     342!debug_3d(:,:,36) = opposy(:,:) 
    334343 
    335344 
     
    349358 
    350359! remise a 0 des noeuds fantomes 
    351  
     360!$OMP PARALLEL 
     361!$OMP WORKSHARE 
    352362where ((Hmx(nx1:nx2,ny1:ny2).le.1.).and.(flgzmx(nx1:nx2,ny1:ny2))) 
    353363   uxnew(nx1:nx2,ny1:ny2)=0. 
     
    357367   uynew(nx1:nx2,ny1:ny2)=0. 
    358368end where 
    359  
     369!$OMP END WORKSHARE 
     370!$OMP END PARALLEL 
    360371 
    361372! call graphique_L2(kl,ku,nx1,nx2,ny1,ny2,imx(nx1:nx2,ny1:ny2),imy(nx1:nx2,ny1:ny2))    
     
    404415 
    405416subroutine limit_frotm 
     417 
     418!$USE OMP_LIB 
    406419!------------------------- 
    407420! limite la valeur de frotmx a betamax 
     
    411424if (itracebug.eq.1) write(Num_tracebug,*)'betamax = ',betamax 
    412425 
     426!$OMP PARALLEL 
     427!$OMP WORKSHARE 
    413428where (flgzmx(:,:)) 
    414    frotmx(:,:)=min(abs(betamx(:,:)),betamax) 
     429   frotmx(:,:)=min(abs(betamx(:,:)),betamax_2d(:,:)) 
    415430elsewhere 
    416431   frotmx(:,:)=0 
     
    418433 
    419434where (flgzmy(:,:)) 
    420    frotmy(:,:)=min(abs(betamy(:,:)),betamax) 
     435   frotmy(:,:)=min(abs(betamy(:,:)),betamax_2d(:,:)) 
    421436elsewhere 
    422437   frotmy(:,:)=0 
    423438end where 
     439!$OMP END WORKSHARE 
     440!$OMP END PARALLEL 
    424441 
    425442end subroutine limit_frotm 
     
    433450 
    434451subroutine rempli_Tuij                                    ! appelle tous les cas 
     452 
     453!$ USE OMP_LIB 
    435454 
    436455! imx(i,j)=0 -> ne pas traiter cette vitesse 
     
    464483count_line=1                                 ! pour numeroter les lignes 
    465484!------------------------------------------------------------------ 
    466  
     485!$OMP PARALLEL 
     486!$OMP DO 
    467487lignes_UV: do j=ny1,ny2  
    468488   do i=nx1,nx2 
     
    470490      if (i.gt.nx1) then                      ! Vitesses U 
    471491         ligu_L2(i,j)=count_line 
     492         !$OMP ATOMIC 
    472493         count_line=count_line+1 
    473494           
     
    480501 
    481502         case(1)                              ! vitesse imposee 
    482             call vel_U_presc      
     503            call vel_U_presc(uxprec(i,j),Tu(i,j,0,0),opposx(i,j))     
    483504 
    484505         case(2)                              ! cas general 
    485             call vel_U_general 
     506            call vel_U_general(frotmx(i,j),dx2,pvi(i,j),pvi(i-1,j),pvm(i,j),pvm(i,j+1),sdx(i,j),rog,hmx_oppos(i,j), & 
     507            Tu(i,j,:,:),Tv(i,j,:,:),opposx(i,j)) 
    486508 
    487509         case(-1)                             ! bord sud 
    488             call vel_U_South           
     510            call vel_U_South(Tu(i,j,:,:),Tv(i,j,:,:),opposx(i,j))           
    489511 
    490512         case(-2)                             ! bord Est 
    491             call vel_U_East 
     513            call vel_U_East(pvi(i,j),pvi(i-1,j),rog,H(i-1,j),rowg,slv(i-1,j),B(i-1,j),dx,Tu(i,j,:,:),Tv(i,j,:,:),opposx(i,j)) 
    492514        
    493515         case(-3)                             ! bord nord 
    494             call vel_U_North    
     516            call vel_U_North(Tu(i,j,:,:),Tv(i,j,:,:),opposx(i,j))    
    495517 
    496518         case(-4)                             ! bord West 
    497             call vel_U_West 
     519            call vel_U_West(pvi(i,j),pvi(i-1,j),rog,H(i,j),rowg,slv(i,j),B(i,j),dx,Tu(i,j,:,:),Tv(i,j,:,:),opposx(i,j)) 
    498520 
    499521         case(-12)                            ! coin SE 
    500             call vel_U_SE 
     522            call vel_U_SE(Tu(i,j,:,:),opposx(i,j)) 
    501523 
    502524         case(-23)                            ! coin NE 
    503             call vel_U_NE 
     525            call vel_U_NE(Tu(i,j,:,:),opposx(i,j)) 
    504526 
    505527         case(-34)                            ! coin NW 
    506             call vel_U_NW 
     528            call vel_U_NW(Tu(i,j,:,:),opposx(i,j)) 
    507529 
    508530         case(-41)                            ! coin SW 
    509             call vel_U_SW 
     531            call vel_U_SW(Tu(i,j,:,:),opposx(i,j)) 
    510532 
    511533         end select case_imx 
     
    515537 
    516538         ligv_L2(i,j)=count_line 
     539         !$OMP ATOMIC 
    517540         count_line=count_line+1 
    518541 
     
    525548 
    526549         case(1)                              ! vitesse imposee 
    527             call vel_V_presc 
     550            call vel_V_presc(uyprec(i,j),Sv(i,j,0,0),opposy(i,j)) 
    528551             
    529552         case(2)                              ! cas general 
    530             call vel_V_general 
     553            call vel_V_general(frotmy(i,j),dx2,pvi(i,j),pvi(i,j-1),pvm(i,j),pvm(i+1,j),sdy(i,j),rog,hmy_oppos(i,j), & 
     554            Su(i,j,:,:),Sv(i,j,:,:),opposy(i,j)) 
    531555             
    532556         case(-1)                             ! bord sud 
    533             call vel_V_South              
     557            call vel_V_South(pvi(i,j),pvi(i,j-1),rog,H(i,j),rowg,slv(i,j),B(i,j),dx,Sv(i,j,:,:),Su(i,j,:,:),opposy(i,j)) 
    534558             
    535559         case(-2)                             ! bord Est 
    536             call vel_V_East 
     560            call vel_V_East(Sv(i,j,:,:),Su(i,j,:,:),opposy(i,j)) 
    537561             
    538562         case(-3)                             ! bord nord 
    539             call vel_V_North           
     563            call vel_V_North(pvi(i,j),pvi(i,j-1),rog,H(i-1,j),rowg,slv(i-1,j),B(i-1,j),dx,Sv(i,j,:,:),Su(i,j,:,:),opposy(i,j)) 
    540564             
    541565         case(-4)                             ! bord West 
    542             call vel_V_West 
     566            call vel_V_West(Sv(i,j,:,:),Su(i,j,:,:),opposy(i,j)) 
    543567             
    544568         case(-12)                            ! coin SE 
    545             call vel_V_SE 
     569            call vel_V_SE(Sv(i,j,:,:),opposy(i,j))  
    546570             
    547571         case(-23)                            ! coin NE 
    548             call vel_V_NE 
     572            call vel_V_NE(Sv(i,j,:,:),opposy(i,j)) 
    549573             
    550574         case(-34)                            ! coin NW 
    551             call vel_V_NW 
     575            call vel_V_NW(Sv(i,j,:,:),opposy(i,j))  
    552576             
    553577         case(-41)                            ! coin SW 
    554578 
    555             call vel_V_SW 
     579            call vel_V_SW(Sv(i,j,:,:),opposy(i,j)) 
    556580             
    557581         end select case_imy 
     
    559583   end do 
    560584end do lignes_UV 
     585!$OMP END DO 
     586!$OMP END PARALLEL 
    561587 
    562588end subroutine rempli_Tuij 
     
    570596!------------------------------------------------------------------ 
    571597 
    572 subroutine vel_U_presc     !                     ! vitesse imposee 
    573  
    574   Tu(i,j,0,0)=1. 
    575   opposx(i,j)=uxprec(i,j) 
     598subroutine vel_U_presc(uxprec,Tu,opposx)     !                     ! vitesse imposee 
     599 
     600implicit none 
     601 
     602real,intent(in)  :: uxprec 
     603real,intent(out) :: Tu 
     604real,intent(out) :: opposx 
     605 
     606  Tu=1. 
     607  opposx=uxprec 
    576608 
    577609end subroutine vel_U_presc 
    578610!------------------------------------------------------------------ 
    579611                    
    580 subroutine vel_U_general                   ! cas general 
    581  
    582  
    583    beta=frotmx(i,j)*dx2                       !  Terme en u(i,j) 
    584  
    585  
    586  
    587    Tu(i,j,0,0)  = -4.*pvi(i,j)-4.*pvi(i-1,j)- pvm(i,j+1)-pvm(i,j)-beta 
    588  
    589    Tu(i,j,-1,0) =  4.*pvi(i-1,j)              !  Terme en u(i-1,j) 
    590  
    591    Tu(i,j,1,0)  =  4.*pvi(i,j)                !  Terme en u(i+1,j) 
    592  
    593    Tu(i,j,0,-1) =  pvm(i,j)                   !  Terme en u(i,j-1) 
    594  
    595    Tu(i,j,0,1)  =  pvm(i,j+1)                 !  Terme en u(i,j+1) 
    596  
    597    Tv(i,j,0,0)  = -2.*pvi(i,j)-pvm(i,j)       !  Terme en v(i,j) 
    598  
    599    Tv(i,j,-1,0) =  2.*pvi(i-1,j)+pvm(i,j)     !  Terme en v(i-1,j) 
    600  
    601    Tv(i,j,-1,1) = -2.*pvi(i-1,j)-pvm(i,j+1)   !  Terme en v(i-1,j+1) 
    602  
    603    Tv(i,j,0,1)  =  2.*pvi(i,j)+pvm(i,j+1)     !  Terme en v(i,j+1) 
    604  
    605    opposx(i,j)  =  rog*hmx_oppos(i,j)*sdx(i,j)*dx2  !  Terme en opposx(i,j) 
     612subroutine vel_U_general(frotmx,dx2,pvi,pvi_imoinsun,pvm,pvm_jplusun,sdx,rog,hmx_oppos,Tu,Tv,opposx)                   ! cas general 
     613 
     614implicit none 
     615 
     616real,intent(in) :: frotmx 
     617real,intent(in) :: dx2 
     618real,intent(in) :: pvi 
     619real,intent(in) :: pvi_imoinsun 
     620real,intent(in) :: pvm 
     621real,intent(in) :: pvm_jplusun 
     622real,intent(in) :: sdx 
     623real,intent(in) :: rog 
     624real,intent(in) :: hmx_oppos 
     625real,dimension(-1:1,-1:1),intent(inout) :: Tu 
     626real,dimension(-1:1,-1:1),intent(inout) :: Tv 
     627real,intent(out) :: opposx 
     628 
     629   beta=frotmx*dx2                       !  Terme en u(i,j) 
     630 
     631   Tu(0,0)  = -4.*pvi - 4.*pvi_imoinsun - pvm_jplusun - pvm - beta 
     632 
     633   Tu(-1,0) =  4.*pvi_imoinsun              !  Terme en u(i-1,j) 
     634 
     635   Tu(1,0)  =  4.*pvi                !  Terme en u(i+1,j) 
     636 
     637   Tu(0,-1) =  pvm                   !  Terme en u(i,j-1) 
     638 
     639   Tu(0,1)  =  pvm_jplusun                 !  Terme en u(i,j+1) 
     640 
     641   Tv(0,0)  = -2.*pvi - pvm       !  Terme en v(i,j) 
     642 
     643   Tv(-1,0) =  2.*pvi_imoinsun + pvm     !  Terme en v(i-1,j) 
     644 
     645   Tv(-1,1) = -2.*pvi_imoinsun - pvm_jplusun   !  Terme en v(i-1,j+1) 
     646 
     647   Tv(0,1)  =  2.*pvi + pvm_jplusun     !  Terme en v(i,j+1) 
     648 
     649   opposx   =  rog*hmx_oppos*sdx*dx2  !  Terme en opposx(i,j) 
    606650 
    607651   return 
     
    611655! voir explications dans vel_U_West 
    612656 
    613 subroutine vel_U_South                       ! bord sud non cisaillement            
    614  
    615   Tu(i,j,0,0)  =  1. 
    616   Tu(i,j,0,1)  = -1. 
    617   Tv(i,j,0,1)  = -1. 
    618   Tv(i,j,-1,1) =  1. 
    619   opposx(i,j)  =  0. 
     657subroutine vel_U_South(Tu,Tv,opposx)       ! bord sud non cisaillement            
     658 
     659implicit none                        
     660real,dimension(-1:1,-1:1),intent(inout) :: Tu 
     661real,dimension(-1:1,-1:1),intent(inout) :: Tv 
     662real, intent(out) :: opposx 
     663 
     664  Tu(0,0)  =  1. 
     665  Tu(0,1)  = -1. 
     666  Tv(0,1)  = -1. 
     667  Tv(-1,1) =  1. 
     668  opposx   =  0. 
    620669 
    621670   return 
     
    623672!------------------------------------------------------------------ 
    624673 
    625 subroutine vel_U_North                       ! bord nord   non cisaillement        
    626  
    627   Tu(i,j,0,0)  =  1. 
    628   Tu(i,j,0,-1) = -1. 
    629   Tv(i,j,0,0)  =  1. 
    630   Tv(i,j,-1,0) = -1. 
    631   opposx(i,j)  =  0. 
     674subroutine vel_U_North(Tu,Tv,opposx)     ! bord nord   non cisaillement        
     675 
     676implicit none                        
     677real,dimension(-1:1,-1:1),intent(inout) :: Tu 
     678real,dimension(-1:1,-1:1),intent(inout) :: Tv 
     679real, intent(out) :: opposx 
     680 
     681  Tu(0,0)  =  1. 
     682  Tu(0,-1) = -1. 
     683  Tv(0,0)  =  1. 
     684  Tv(-1,0) = -1. 
     685  opposx   =  0. 
    632686 
    633687   return 
     
    636690! voir explications dans vel_U_West 
    637691 
    638 subroutine vel_U_East                       ! bord Est   pression 
     692subroutine vel_U_East(pvi,pvi_imoinsun,rog,H_imoinsun,rowg,slv_imoinsun,B_imoinsun,dx,Tu,Tv,opposx) ! bord Est   pression 
     693 
     694implicit none 
     695real,intent(in) :: pvi 
     696real,intent(in) :: pvi_imoinsun 
     697real,intent(in) :: rog 
     698real,intent(in) :: H_imoinsun 
     699real,intent(in) :: rowg 
     700real,intent(in) :: slv_imoinsun 
     701real,intent(in) :: B_imoinsun 
     702real,intent(in) :: dx                        
     703real,dimension(-1:1,-1:1),intent(inout) :: Tu 
     704real,dimension(-1:1,-1:1),intent(inout) :: Tv 
     705real, intent(out) :: opposx 
    639706        
    640   Tu(i,j,0,0)   =  4.*pvi(i-1,j) 
    641   Tu(i,j,-1,0)  = -4.*pvi(i-1,j) 
    642   Tv(i,j,0,1)   =  2.*pvi(i,j) 
    643   Tv(i,j,0,0)   = -2.*pvi(i,j) 
    644   opposx(i,j)   =  0.5*(rog*H(i-1,j)**2-rowg*(max(slv(i-1,j)-B(i-1,j),0.))**2)*dx 
     707  Tu(0,0)   =  4.*pvi_imoinsun 
     708  Tu(-1,0)  = -4.*pvi_imoinsun 
     709  Tv(0,1)   =  2.*pvi 
     710  Tv(0,0)   = -2.*pvi 
     711  opposx    =  0.5*(rog*H_imoinsun**2-rowg*(max(slv_imoinsun-B_imoinsun,0.))**2)*dx 
    645712 
    646713   return 
     
    648715!------------------------------------------------------------------ 
    649716 
    650 subroutine vel_U_West                        ! bord West pression 
     717subroutine vel_U_West(pvi,pvi_imoinsun,rog,H,rowg,slv,B,dx,Tu,Tv,opposx) ! bord West pression 
    651718                                             ! tous les coef * -1 
     719implicit none 
     720real,intent(in) :: pvi 
     721real,intent(in) :: pvi_imoinsun 
     722real,intent(in) :: rog 
     723real,intent(in) :: H 
     724real,intent(in) :: rowg 
     725real,intent(in) :: slv 
     726real,intent(in) :: B 
     727real,intent(in) :: dx                        
     728real,dimension(-1:1,-1:1),intent(inout) :: Tu 
     729real,dimension(-1:1,-1:1),intent(inout) :: Tv 
     730real, intent(out) :: opposx 
     731 
    652732 
    653733!  Tu(i,j,0,0)    =  4.*pvi(i-1,j) 
    654734!  Tu(i,j,1,0)    = -4.*pvi(i-1,j) 
    655735 
    656   Tu(i,j,0,0)    =  4.*pvi(i,j)              ! quand le bord est epais, il faut prendre  
    657   Tu(i,j,1,0)    = -4.*pvi(i,j)              ! le noeud du shelf pas celui en H=1 
     736  Tu(0,0)    =  4.*pvi              ! quand le bord est epais, il faut prendre  
     737  Tu(1,0)    = -4.*pvi              ! le noeud du shelf pas celui en H=1 
    658738                                             ! s'il est fin, pas de difference 
    659739 
     
    661741!!$  Tv(i-1,j,-1,1) = -2.*pvi(i-1,j) 
    662742 
    663   Tv(i,j,-1,0) =  2.*pvi(i-1,j) 
    664   Tv(i,j,-1,1) = -2.*pvi(i-1,j) 
    665  opposx(i,j)    = -0.5*(rog*H(i,j)**2-rowg*(max(slv(i,j)-B(i,j),0.))**2)*dx 
     743  Tv(-1,0) =  2.*pvi_imoinsun 
     744  Tv(-1,1) = -2.*pvi_imoinsun 
     745 opposx    = -0.5*(rog*H**2-rowg*(max(slv-B,0.))**2)*dx 
    666746 
    667747  
     
    674754!------------------------------------------------------------------ 
    675755 
    676 subroutine vel_V_presc                     ! vitesse imposee 
    677  
    678   Sv(i,j,0,0)=1. 
    679   opposy(i,j)=uyprec(i,j) 
     756subroutine vel_V_presc(uyprec,Sv,opposy)          ! vitesse imposee 
     757 
     758implicit none 
     759real,intent(in)  :: uyprec 
     760real,intent(out) :: Sv 
     761real,intent(out) :: opposy 
     762 
     763  Sv=1. 
     764  opposy=uyprec 
    680765 
    681766   return 
     
    683768!------------------------------------------------------------------ 
    684769                     
    685 subroutine vel_V_general                      ! cas general 
    686  
    687  
    688    beta          =  frotmy(i,j)*dx2           !  Terme en v(i,j) 
    689    Sv(i,j,0,0)   = -4.*pvi(i,j)-4.*pvi(i,j-1)- pvm(i+1,j)-pvm(i,j)-beta 
    690  
    691    Sv(i,j,0,-1)  =  4.*pvi(i,j-1)             !  Terme en v(i,j-1) 
    692  
    693    Sv(i,j,0,1)   =  4.*pvi(i,j)               !  Terme en v(i,j+1) 
    694  
    695    Sv(i,j,-1,0)  =  pvm(i,j)                  !  Terme en v(i-1,j) 
    696  
    697    Sv(i,j,1,0)   =  pvm(i+1,j)                !  Terme en v(i+1,j) 
    698  
    699    Su(i,j,0,0)   = -2.*pvi(i,j)-pvm(i,j)      !  Terme en u(i,j) 
    700  
    701    Su(i,j,0,-1)  =  2.*pvi(i,j-1)+pvm(i,j)    !  Terme en u(i,j-1) 
    702  
    703    Su(i,j,1,-1)  = -2.*pvi(i,j-1)-pvm(i+1,j)  !  Terme en u(i+1,j-1) 
    704  
    705    Su(i,j,1,0)   =  2.*pvi(i,j)+pvm(i+1,j)    !  Terme en u(i+1,j) 
    706  
    707    opposy(i,j)   =  rog*hmy_oppos(i,j)*sdy(i,j)*dx2 !  Terme en opposy(i,j) 
     770subroutine vel_V_general(frotmy,dx2,pvi,pvi_jmoinsun,pvm,pvm_iplusun,sdy,rog,hmy_oppos,Su,Sv,opposy)! cas general 
     771 
     772implicit none 
     773real,intent(in) :: frotmy 
     774real,intent(in) :: dx2 
     775real,intent(in) :: pvi 
     776real,intent(in) :: pvi_jmoinsun 
     777real,intent(in) :: pvm 
     778real,intent(in) :: pvm_iplusun 
     779real,intent(in) :: sdy 
     780real,intent(in) :: rog 
     781real,intent(in) :: hmy_oppos 
     782real,dimension(-1:1,-1:1),intent(inout) :: Su 
     783real,dimension(-1:1,-1:1),intent(inout) :: Sv 
     784real,intent(out) :: opposy 
     785 
     786real :: beta 
     787 
     788 
     789   beta          =  frotmy*dx2           !  Terme en v(i,j) 
     790   Sv(0,0)   = -4.*pvi - 4.*pvi_jmoinsun - pvm_iplusun - pvm-beta 
     791 
     792   Sv(0,-1)  =  4.*pvi_jmoinsun             !  Terme en v(i,j-1) 
     793 
     794   Sv(0,1)   =  4.*pvi               !  Terme en v(i,j+1) 
     795 
     796   Sv(-1,0)  =  pvm                  !  Terme en v(i-1,j) 
     797 
     798   Sv(1,0)   =  pvm_iplusun                !  Terme en v(i+1,j) 
     799 
     800   Su(0,0)   = -2.*pvi - pvm      !  Terme en u(i,j) 
     801 
     802   Su(0,-1)  =  2.*pvi_jmoinsun + pvm    !  Terme en u(i,j-1) 
     803 
     804   Su(1,-1)  = -2.*pvi_jmoinsun - pvm_iplusun  !  Terme en u(i+1,j-1) 
     805 
     806   Su(1,0)   =  2.*pvi + pvm_iplusun    !  Terme en u(i+1,j) 
     807 
     808   opposy    =  rog*hmy_oppos*sdy*dx2 !  Terme en opposy(i,j) 
    708809 
    709810   return 
     
    712813!------------------------------------------------------------------ 
    713814 
    714 subroutine vel_V_West                       ! bord West non cisaillement            
    715  
    716   Sv(i,j,0,0)  =  1. 
    717   Sv(i,j,1,0)  = -1. 
    718   Su(i,j,1,0)  = -1. 
    719   Su(i,j,1,-1) =  1. 
    720   opposy(i,j)  =  0. 
     815subroutine vel_V_West(Sv,Su,opposy)     ! bord West non cisaillement            
     816 
     817implicit none 
     818real,dimension(-1:1,-1:1),intent(inout) :: Sv 
     819real,dimension(-1:1,-1:1),intent(inout) :: Su 
     820real,intent(out) :: opposy 
     821 
     822  Sv(0,0)  =  1. 
     823  Sv(1,0)  = -1. 
     824  Su(1,0)  = -1. 
     825  Su(1,-1) =  1. 
     826  opposy   =  0. 
    721827 
    722828   return 
     
    725831 
    726832 
    727 subroutine vel_V_East                       ! bord Est   non cisaillement        
    728  
    729   Sv(i,j,0,0)  =  1. 
    730   Sv(i,j,-1,0) = -1. 
    731   Su(i,j,0,0)  =  1. 
    732   Su(i,j,0,-1) = -1. 
    733   opposy(i,j)  =  0. 
     833subroutine vel_V_East(Sv,Su,opposy)         ! bord Est   non cisaillement        
     834 
     835implicit none 
     836real,dimension(-1:1,-1:1),intent(inout) :: Sv 
     837real,dimension(-1:1,-1:1),intent(inout) :: Su 
     838real,intent(out) :: opposy 
     839 
     840  Sv(0,0)  =  1. 
     841  Sv(-1,0) = -1. 
     842  Su(0,0)  =  1. 
     843  Su(0,-1) = -1. 
     844  opposy   =  0. 
    734845 
    735846   return 
     
    739850! voir explications dans vel_U_West 
    740851 
    741 subroutine vel_V_North                       ! bord Nord   pression 
     852subroutine vel_V_North(pvi,pvi_jmoinsun,rog,H_imoinsun,rowg,slv_imoinsun,B_imoinsun,dx,Sv,Su,opposy) ! bord Nord   pression 
     853 
     854implicit none 
     855real,intent(in) :: pvi 
     856real,intent(in) :: pvi_jmoinsun 
     857real,intent(in) :: rog 
     858real,intent(in) :: H_imoinsun 
     859real,intent(in) :: rowg 
     860real,intent(in) :: slv_imoinsun 
     861real,intent(in) :: B_imoinsun 
     862real,intent(in) :: dx 
     863real,dimension(-1:1,-1:1),intent(inout) :: Sv 
     864real,dimension(-1:1,-1:1),intent(inout) :: Su 
     865real,intent(out) :: opposy 
    742866        
    743   Sv(i,j,0,0)  =  4.*pvi(i,j-1) 
    744   Sv(i,j,0,-1) = -4.*pvi(i,j-1) 
    745   Su(i,j,1,0)  =  2.*pvi(i,j) 
    746   Su(i,j,0,0)  = -2.*pvi(i,j) 
    747   opposy(i,j)  = 0.5*(rog*H(i-1,j)**2-rowg*(max(slv(i-1,j)-B(i-1,j),0.))**2)*dx 
     867  Sv(0,0)  =  4.*pvi_jmoinsun 
     868  Sv(0,-1) = -4.*pvi_jmoinsun 
     869  Su(1,0)  =  2.*pvi 
     870  Su(0,0)  = -2.*pvi 
     871  opposy   = 0.5*(rog*H_imoinsun**2-rowg*(max(slv_imoinsun-B_imoinsun,0.))**2)*dx 
    748872 
    749873   return 
     
    752876! voir explications dans vel_U_West 
    753877 
    754 subroutine vel_V_South                        ! bord sud  pression 
     878subroutine vel_V_South(pvi,pvi_jmoinsun,rog,H,rowg,slv,B,dx,Sv,Su,opposy) ! bord sud  pression 
    755879                                              ! tous les coef * -1 
    756  
    757   Sv(i,j,0,0)  = 4.*pvi(i,j) 
    758   Sv(i,j,0,1)  =-4.*pvi(i,j) 
    759   Su(i,j,0,-1) = 2.*pvi(i,j-1) 
    760   Su(i,j,1,-1) =-2.*pvi(i,j-1) 
    761   opposy(i,j)  = -0.5*(rog*H(i,j)**2-rowg*(max(slv(i,j)-B(i,j),0.))**2)*dx 
     880implicit none 
     881real,intent(in) :: pvi 
     882real,intent(in) :: pvi_jmoinsun 
     883real,intent(in) :: rog 
     884real,intent(in) :: H 
     885real,intent(in) :: rowg 
     886real,intent(in) :: slv 
     887real,intent(in) :: B 
     888real,intent(in) :: dx 
     889real,dimension(-1:1,-1:1),intent(inout) :: Sv 
     890real,dimension(-1:1,-1:1),intent(inout) :: Su 
     891real,intent(out) :: opposy 
     892 
     893  Sv(0,0)  = 4.*pvi 
     894  Sv(0,1)  =-4.*pvi 
     895  Su(0,-1) = 2.*pvi_jmoinsun 
     896  Su(1,-1) =-2.*pvi_jmoinsun 
     897  opposy   = -0.5*(rog*H**2-rowg*(max(slv-B,0.))**2)*dx 
    762898 
    763899   return 
     
    780916!Coin SE 
    781917!---------- 
    782 subroutine vel_U_SE                         
    783  
    784   Tu(i,j,0,0) =  1.    !*pvi(i,j) 
    785   Tu(i,j,0,1) = -1.    !*pvi(i,j) 
    786   opposx(i,j) =  0. 
     918subroutine vel_U_SE(Tu,opposx)                         
     919 
     920implicit none 
     921real,dimension(-1:1,-1:1),intent(inout) :: Tu 
     922real,intent(out) :: opposx 
     923 
     924  Tu(0,0) =  1.    !*pvi(i,j) 
     925  Tu(0,1) = -1.    !*pvi(i,j) 
     926  opposx  =  0. 
    787927 
    788928   return 
     
    790930!------------------------------------------------------------------ 
    791931 
    792 subroutine vel_V_SE                         
    793  
    794   Sv(i,j,0,0) =  1.   !*pvi(i,j) 
    795   Sv(i,j,-1,0)= -1.   !*pvi(i,j) 
    796   opposy(i,j) =  0. 
     932subroutine vel_V_SE(Sv,opposy)                         
     933 
     934implicit none 
     935real,dimension(-1:1,-1:1),intent(inout) :: Sv 
     936real,intent(out) :: opposy 
     937 
     938  Sv(0,0) =  1.   !*pvi(i,j) 
     939  Sv(-1,0)= -1.   !*pvi(i,j) 
     940  opposy  =  0. 
    797941 
    798942   return 
     
    803947!Coin SW 
    804948!---------- 
    805 subroutine vel_U_SW                         
    806  
    807   Tu(i,j,0,0) =  1.   ! *pvi(i,j) 
    808   Tu(i,j,0,1) = -1.   ! *pvi(i,j) 
    809   opposx(i,j) =  0. 
     949subroutine vel_U_SW(Tu,opposx)                         
     950 
     951implicit none 
     952real,dimension(-1:1,-1:1),intent(inout) :: Tu 
     953real,intent(out) :: opposx 
     954 
     955  Tu(0,0) =  1.   ! *pvi(i,j) 
     956  Tu(0,1) = -1.   ! *pvi(i,j) 
     957  opposx  =  0. 
    810958 
    811959   return 
     
    813961!------------------------------------------------------------------ 
    814962 
    815 subroutine vel_V_SW                         
    816  
    817   Sv(i,j,0,0) =  1.   !*pvi(i,j) 
    818   Sv(i,j,1,0) = -1.   !*pvi(i,j) 
    819   opposy(i,j) =  0. 
     963subroutine vel_V_SW(Sv,opposy) 
     964 
     965implicit none 
     966real,dimension(-1:1,-1:1),intent(inout) :: Sv 
     967real,intent(out) :: opposy                     
     968 
     969  Sv(0,0) =  1.   !*pvi(i,j) 
     970  Sv(1,0) = -1.   !*pvi(i,j) 
     971  opposy  =  0. 
    820972 
    821973   return 
     
    825977!Coin NE 
    826978!---------- 
    827 subroutine vel_U_NE                         
    828  
    829   Tu(i,j,0,0)  =  1.  ! *pvi(i,j) 
    830   Tu(i,j,0,-1) = -1.  ! *pvi(i,j) 
    831   opposx(i,j)  =  0. 
     979subroutine vel_U_NE(Tu,opposx) 
     980 
     981implicit none 
     982real,dimension(-1:1,-1:1),intent(inout) :: Tu 
     983real,intent(out) :: opposx                      
     984 
     985  Tu(0,0)  =  1.  ! *pvi(i,j) 
     986  Tu(0,-1) = -1.  ! *pvi(i,j) 
     987  opposx   =  0. 
    832988 
    833989   return 
     
    835991!------------------------------------------------------------------ 
    836992 
    837 subroutine vel_V_NE                         
    838  
    839   Sv(i,j,0,0)  =  1.  ! *pvi(i,j) 
    840   Sv(i,j,-1,0) = -1.  ! *pvi(i,j) 
    841   opposy(i,j)  =  0. 
     993subroutine vel_V_NE(Sv,opposy)                         
     994 
     995implicit none 
     996real,dimension(-1:1,-1:1),intent(inout) :: Sv 
     997real,intent(out) :: opposy 
     998 
     999  Sv(0,0)  =  1.  ! *pvi(i,j) 
     1000  Sv(-1,0) = -1.  ! *pvi(i,j) 
     1001  opposy   =  0. 
    8421002 
    8431003   return 
     
    8471007!Coin NW 
    8481008!---------- 
    849 subroutine vel_U_NW                         
    850  
    851   Tu(i,j,0,0)  =  1.  ! *pvi(i,j) 
    852   Tu(i,j,0,-1) = -1.  ! *pvi(i,j) 
    853   opposx(i,j)  =  0. 
     1009subroutine vel_U_NW(Tu,opposx) 
     1010 
     1011implicit none                         
     1012real,dimension(-1:1,-1:1),intent(inout) :: Tu 
     1013real,intent(out) :: opposx  
     1014 
     1015  Tu(0,0)  =  1.  ! *pvi(i,j) 
     1016  Tu(0,-1) = -1.  ! *pvi(i,j) 
     1017  opposx   =  0. 
    8541018 
    8551019   return 
     
    8571021!------------------------------------------------------------------ 
    8581022 
    859 subroutine vel_V_NW                         
    860  
    861   Sv(i,j,0,0)  =  1.  !*pvi(i,j) 
    862   Sv(i,j,1,0)  = -1.  !*pvi(i,j) 
    863   opposy(i,j)  =  0. 
     1023subroutine vel_V_NW(Sv,opposy)                         
     1024 
     1025implicit none                         
     1026real,dimension(-1:1,-1:1),intent(inout) :: Sv 
     1027real,intent(out) :: opposy  
     1028 
     1029  Sv(0,0)  =  1.  !*pvi(i,j) 
     1030  Sv(1,0)  = -1.  !*pvi(i,j) 
     1031  opposy   =  0. 
    8641032 
    8651033   return 
     
    8751043subroutine Mu_Mv 
    8761044 
     1045!$ USE OMP_LIB 
    8771046!---------------------------------------------------------   
    8781047! Pour déterminer  Mu, Mv, Nu, Nv les colonnes de L2 
     
    8821051! pourrait être dans un autre fichier 
    8831052 
     1053implicit none 
     1054 
    8841055if (itracebug.eq.1)  call tracebug(' Mu_Mv') 
    8851056 
     1057!$OMP PARALLEL 
     1058!$OMP DO PRIVATE(ilmin,ilmax,jlmin,jlmax) 
    8861059Col_U: do j=ny1,ny2   ! balaye tous les noeuds U 
    8871060   do i=nx1+1,nx2 
     
    9091082   end do 
    9101083end do Col_U 
    911  
     1084!$OMP END DO 
     1085 
     1086!$OMP DO PRIVATE(ilmin,ilmax,jlmin,jlmax) 
    9121087Col_V: do j=ny1+1,ny2   ! balaye tous les noeuds V 
    9131088   do i=nx1,nx2 
     
    9341109   end do 
    9351110end do Col_V 
     1111!$OMP END DO 
     1112!$OMP END PARALLEL 
    9361113 
    9371114return 
     
    9421119subroutine okmat0        
    9431120 
     1121!$ USE OMP_LIB  
    9441122! pourrais être dans un autre fichier avec un appel (nx1,nx2,ny1,ny2) 
    9451123 
     
    9491127! et qui ne dépendent d'aucun noeud (ligne Tu,Tv nulle sauf diagonale) 
    9501128 
    951  
     1129implicit none 
    9521130 
    9531131! tableaux de travail 
     
    9691147pvi_ghost=40.*pvimin 
    9701148!pvi_ghost=10.*pvimin   ! condition trop faible  : pas de ghost 
    971  
     1149!$OMP PARALLEL 
     1150!$OMP WORKSHARE 
    9721151ok_umat(:,:) =.false. 
    9731152ok_vmat(:,:) =.false. 
    9741153ghost_x(:,:) =.false.  
    9751154ghost_y(:,:) =.false. 
    976  
    977  
     1155!$OMP END WORKSHARE 
     1156 
     1157!$OMP DO PRIVATE(Mloc,Nloc,Tuloc,Tvloc,Suloc,Svloc) 
    9781158do j=ny1,ny2 
    9791159   do i=nx1,nx2 
     
    10721252   end do 
    10731253end do 
    1074  
     1254!$OMP END DO  
    10751255 
    10761256! on enleve les lignes 1 decalees 
     1257!$OMP WORKSHARE 
    10771258ok_umat(1,:)=.false. 
    10781259ok_vmat(:,1)=.false. 
     1260!$OMP END WORKSHARE 
     1261!$OMP END PARALLEL 
    10791262 
    10801263! sortie Netcdf pour verifier ok_umat 
    1081 where (ok_umat(:,:)) 
    1082    debug_3D(:,:,39)=1 
    1083 elsewhere 
    1084    debug_3D(:,:,39)=0 
    1085 end where 
    1086  
    1087 where (ok_vmat(:,:)) 
    1088    debug_3D(:,:,40)=1 
    1089 elsewhere 
    1090    debug_3D(:,:,40)=0 
    1091 end where 
    1092  
    1093 ! sortie Netcdf pour verifier ghost 
    1094 where (ghost_x(:,:)) 
    1095    debug_3D(:,:,41)=1 
    1096 elsewhere 
    1097    debug_3D(:,:,41)=0 
    1098  
    1099 end where 
    1100  
    1101 where (ghost_y(:,:)) 
    1102    debug_3D(:,:,42)=1 
    1103 elsewhere 
    1104    debug_3D(:,:,42)=0 
    1105 end where 
     1264!~ where (ok_umat(:,:)) 
     1265!~    debug_3D(:,:,39)=1 
     1266!~ elsewhere 
     1267!~    debug_3D(:,:,39)=0 
     1268!~ end where 
     1269!~  
     1270!~ where (ok_vmat(:,:)) 
     1271!~    debug_3D(:,:,40)=1 
     1272!~ elsewhere 
     1273!~    debug_3D(:,:,40)=0 
     1274!~ end where 
     1275!~  
     1276!~ ! sortie Netcdf pour verifier ghost 
     1277!~ where (ghost_x(:,:)) 
     1278!~    debug_3D(:,:,41)=1 
     1279!~ elsewhere 
     1280!~    debug_3D(:,:,41)=0 
     1281!~  
     1282!~ end where 
     1283!~  
     1284!~ where (ghost_y(:,:)) 
     1285!~    debug_3D(:,:,42)=1 
     1286!~ elsewhere 
     1287!~    debug_3D(:,:,42)=0 
     1288!~ end where 
    11061289 
    11071290if (itracebug.eq.1)  call tracebug(' Sortie  Okmat') 
     
    11111294!-------------------------------------------------------------------------------------- 
    11121295subroutine ghost_identite                           ! mise a identite des noeuds fantomes 
    1113  
     1296!$ USE OMP_LIB 
     1297 
     1298implicit none 
     1299 
     1300!$OMP PARALLEL 
     1301!$OMP DO 
    11141302do j=ny1,ny2 
    11151303   do i=nx1,nx2 
     
    11321320   end do 
    11331321end do 
     1322!$OMP END DO 
     1323!$OMP END PARALLEL 
    11341324 
    11351325return 
     
    11381328 
    11391329subroutine ghost_remove                   ! met a 0 les Tuij ... qui corresponde a des ghost 
    1140  
     1330!$ USE OMP_LIB 
     1331 
     1332implicit none 
     1333 
     1334!$OMP PARALLEL 
     1335!$OMP DO PRIVATE(ilmin,ilmax,jlmin,jlmax) 
    11411336do j=ny1,ny2 
    1142    do i=nx1,nx2 
     1337  do i=nx1,nx2 
    11431338 
    11441339!u_ghost:       if (ok_umat(i,j)) then 
    11451340 
    11461341 
    1147                ilmin=max(-1,nx1+1-i)  ! pour avoir i+il entre nx1+1 et nx2 
    1148                ilmax=min(1,nx2-i) 
    1149  
    1150                jlmin=max(-1,ny1-j)    ! pour avoir j+jl entre ny1 et ny2 
    1151                jlmax=min(1,ny2-j) 
    1152  
    1153  
    1154  
    1155                do jl = jlmin , jlmax      ! balaye tous les coefficients d'un noeud U de -1 a 1 
    1156                   do il = ilmin , ilmax   !                                           de -1 a 1  
    1157  
    1158                      if (ghost_x(i+il,j+jl)) then 
    1159                         Tu(i,j,il,jl)=0. 
    1160                         Su(i,j,il,jl)=0. 
    1161                      end if 
    1162  
    1163                   end do 
    1164                end do 
     1342    ilmin=max(-1,nx1+1-i)  ! pour avoir i+il entre nx1+1 et nx2 
     1343    ilmax=min(1,nx2-i) 
     1344 
     1345    jlmin=max(-1,ny1-j)    ! pour avoir j+jl entre ny1 et ny2 
     1346    jlmax=min(1,ny2-j) 
     1347 
     1348    do jl = jlmin , jlmax      ! balaye tous les coefficients d'un noeud U de -1 a 1 
     1349      do il = ilmin , ilmax   !                                           de -1 a 1  
     1350        if (ghost_x(i+il,j+jl)) then 
     1351          Tu(i,j,il,jl)=0. 
     1352          Su(i,j,il,jl)=0. 
     1353        end if 
     1354    end do 
     1355    end do 
    11651356!            end if u_ghost 
    11661357 
    11671358!v_ghost:   if (ok_vmat(i,j)) then 
    11681359 
    1169                ilmin=max(-1,nx1-i)      ! pour avoir i+il entre nx1 et nx2 
    1170                ilmax=min(1,nx2-i) 
    1171  
    1172                jlmin=max(-1,ny1+1-j)    ! pour avoir j+jl entre ny1+1 et ny2 
    1173                jlmax=min(1,ny2-j) 
    1174  
    1175                do jl = jlmin , jlmax      ! balaye tous les coefficients d'un noeud U de -1 a 1 
    1176                   do il = ilmin , ilmax   !                                           de -1 a 1  
    1177                      if (ghost_y(i+il,j+jl)) then 
    1178                         Tv(i,j,il,jl)=0. 
    1179                         Sv(i,j,il,jl)=0. 
    1180                      end if 
    1181                   end do 
    1182                end do 
    1183  
     1360    ilmin=max(-1,nx1-i)      ! pour avoir i+il entre nx1 et nx2 
     1361    ilmax=min(1,nx2-i) 
     1362 
     1363    jlmin=max(-1,ny1+1-j)    ! pour avoir j+jl entre ny1+1 et ny2 
     1364    jlmax=min(1,ny2-j) 
     1365 
     1366    do jl = jlmin , jlmax      ! balaye tous les coefficients d'un noeud U de -1 a 1 
     1367      do il = ilmin , ilmax   !                                           de -1 a 1  
     1368        if (ghost_y(i+il,j+jl)) then 
     1369          Tv(i,j,il,jl)=0. 
     1370          Sv(i,j,il,jl)=0. 
     1371        end if 
     1372      end do 
     1373    end do 
    11841374!            end if v_ghost 
    1185           
    1186          end do 
    1187       end do 
    1188     end subroutine ghost_remove 
     1375  end do 
     1376end do 
     1377!$OMP END DO 
     1378!$OMP END PARALLEL 
     1379end subroutine ghost_remove 
    11891380!---------------------------------------------------------------------------------------- 
    11901381subroutine calc_beta(uxgiven,uygiven)         ! calcule betamx et betamy 
    1191                                               ! a partir du champ de vitesse 
     1382!$USE OMP_LIB                                 ! a partir du champ de vitesse 
    11921383                                              ! uxprec, uyprec 
    11931384implicit none 
     
    11981389real                   :: betamin = 10.       ! minimum value on grounded point (in Pa an /m) 
    11991390 
    1200 debug_3D(:,:,69)=uxgiven(:,:) 
    1201 debug_3D(:,:,70)=uygiven(:,:) 
     1391!debug_3D(:,:,69)=uxgiven(:,:) 
     1392!debug_3D(:,:,70)=uygiven(:,:) 
    12021393 
    12031394                    
    12041395if (itracebug.eq.1)  call tracebug(' Subroutine calc_beta') 
    12051396 
     1397!$OMP PARALLEL 
     1398!$OMP DO 
    12061399do j=ny1+1,ny2-1  
    12071400   do i=nx1+1,nx2-1 
     
    12161409                                      +Tv(i,j,il,jl)*uygiven(i+il,j+jl))  
    12171410 
    1218             debug_3D(i,j,82)=debug_3D(i,j,82) + (Tu(i,j,il,jl)*uxgiven(i+il,j+jl) &  
    1219                                       +Tv(i,j,il,jl)*uygiven(i+il,j+jl))  
     1411!            debug_3D(i,j,82)=debug_3D(i,j,82) + (Tu(i,j,il,jl)*uxgiven(i+il,j+jl) &  
     1412!                                      +Tv(i,j,il,jl)*uygiven(i+il,j+jl))  
    12201413 
    12211414         end do 
    12221415      end do 
    12231416 
    1224       debug_3D(i,j,82)=debug_3D(i,j,82)/dx/dx   ! longitudinal stress computed from velocities 
     1417!      debug_3D(i,j,82)=debug_3D(i,j,82)/dx/dx   ! longitudinal stress computed from velocities 
    12251418 
    12261419 
     
    12481441   
    12491442      betamy(i,j)=-opposy(i,j) 
    1250       debug_3D(i,j,36) = opposy(i,j)/dx/dx      ! driving stress ou pression hydrostatique (Pa) 
     1443!      debug_3D(i,j,36) = opposy(i,j)/dx/dx      ! driving stress ou pression hydrostatique (Pa) 
    12511444      do jl=-1,1 
    12521445         do il=-1,1 
     
    12551448                                      +Sv(i,j,il,jl)*uygiven(i+il,j+jl)) 
    12561449 
    1257             debug_3D(i,j,83)=debug_3D(i,j,83) + (Su(i,j,il,jl)*uxgiven(i+il,j+jl) &  
    1258                                       +Sv(i,j,il,jl)*uygiven(i+il,j+jl)) 
     1450!            debug_3D(i,j,83)=debug_3D(i,j,83) + (Su(i,j,il,jl)*uxgiven(i+il,j+jl) &  
     1451!                                      +Sv(i,j,il,jl)*uygiven(i+il,j+jl)) 
    12591452 
    12601453          
     
    12621455      end do 
    12631456 
    1264       debug_3D(i,j,83)=debug_3D(i,j,83) /dx/dx  ! longitudinal stress computed from velocities 
     1457!      debug_3D(i,j,83)=debug_3D(i,j,83) /dx/dx  ! longitudinal stress computed from velocities 
    12651458 
    12661459!  fonctionne même quand frotmx n'est pas nul 
     
    12851478   end do 
    12861479end do 
    1287  
     1480!$OMP END DO 
     1481!$OMP END PARALLEL 
    12881482! loop to spread negative beta on the neighbours 
    12891483 
     
    13041498 
    13051499! average 
    1306     beta_centre(:,:)=0. 
    1307     do j=2,ny-1 
    1308        do i=2,nx-1 
    1309           beta_centre(i,j) = ((betamx(i,j)+betamx(i+1,j)) & 
    1310                + (betamy(i,j)+betamy(i,j+1)))*0.25 
    1311        end do 
    1312     end do 
    1313  
     1500!$OMP PARALLEL 
     1501!$OMP WORKSHARE 
     1502beta_centre(:,:)=0. 
     1503!$OMP END WORKSHARE 
     1504!$OMP DO 
     1505do j=2,ny-1 
     1506  do i=2,nx-1 
     1507    beta_centre(i,j) = ((betamx(i,j)+betamx(i+1,j)) & 
     1508          + (betamy(i,j)+betamy(i,j+1)))*0.25 
     1509  end do 
     1510end do 
     1511!$OMP END DO 
     1512!$OMP END PARALLEL 
    13141513 
    13151514 
  • branches/iLoveclim/SOURCES/Recul_force_grounding_line/toy_retreat_mod.f90

    r22 r77  
    115115  use declar_toy_retreat 
    116116  implicit none 
    117   integer                           :: som_voisins  !< pour des tests 
     117!  integer                           :: som_voisins  !< pour des tests 
    118118 
    119119 
     
    637637  implicit none 
    638638 
    639   integer                           :: som_voisins  !< pour des tests 
     639!  integer                           :: som_voisins  !< pour des tests 
    640640  real                              :: Hf           !< Hf = 0 si socle > 0 sinon H_float 
    641641  real                              :: dyy         ! variable de travail  longueur de la maille en diagonale        
     
    752752  implicit none 
    753753 
    754   integer                           :: som_voisins  !< pour des tests 
     754!  integer                           :: som_voisins  !< pour des tests 
    755755 
    756756  ! les nouveaux points a traiter 
     
    873873integer    :: num_job           ! numero du job 
    874874integer    :: lenrun            ! longueur du run name 
    875 integer    :: lenb              ! longueur du nom de fichier  
    876 integer    :: pos               ! position d'un sous_string 
     875!integer    :: lenb              ! longueur du nom de fichier  
     876!integer    :: pos               ! position d'un sous_string 
    877877 
    878878real*8, dimension(:,:),   pointer  :: tab         !< tableau 2d real ecrit dans le fichier 
    879879character(len=4)                   :: char_num    ! pour la lecture 
    880880character(len=80)                  :: file_B_test !< file name of the bedrock map to test topo instability 
    881 character(len=80)                  :: file_voisin !< file name of the bedrock map min or max to test topo instability 
     881!character(len=80)                  :: file_voisin !< file name of the bedrock map min or max to test topo instability 
    882882 
    883883 
     
    14451445integer,intent(in)                 :: ii,jj         ! indice du point considere 
    14461446 
    1447 real                               :: dH_x          ! variable de travail 
    1448 real                               :: dH_y          ! variable de travail 
     1447!real                               :: dH_x          ! variable de travail 
     1448!real                               :: dH_y          ! variable de travail 
    14491449 
    14501450DelHdt_sanity(ii,jj) = 5000. 
  • branches/iLoveclim/SOURCES/Temperature-routines/Qprod_icetemp.f90

    r24 r77  
    1717 
    1818  use Icetemp_declar 
     19!$ USE OMP_LIB 
     20 
    1921 
    2022  implicit none 
     
    4143  real, dimension(Nx,Ny)      :: Tox           !< Contraintes Sur Maille Mx 
    4244  real, dimension(Nx,Ny)      :: Toy           !< Contraintes Sur Maille Mx 
     45  real      :: Chalk_1       !< Utilise Pour Le Calcul De Chalk : Glace Posée 
     46  real      :: Chalk_2       !< Utilise Pour Le Calcul De Chalk : Ice Streams Et Ice 
    4347 
    4448 
     
    5256     ! Q_prod_demi(T_m%T,T_m%Tpmp,Deform_m%Tobmx,Deform_m%Tobmy,Geom_m%H,Geom_m%Hmx,Geom_m%Hmy,mask_flot_m%Flot,mask_flot_m%Flotmx,mask_flot_m%Flotmy,mask_flot_m%Flgzmx ,mask_flot_m%Flgzmy,Geom_m%Slop_x,Geom_m%Slop_y,Ice_flow_m%Ddx,Ice_flow_m%Ddy,& 
    5357     !      Ice_flow_m%Ddbx,Ice_flow_m%Ddby,Deform_m%Epsxx,Deform_m%Epsyy,Deform_m%Epsxy,mask_flot_m%Gzmx,mask_flot_m%Gzmy,Deform_m%Btt,Ice_flow_m%Uxbar,Ice_flow_m%Uybar,therm_var_m%Phid,Deform_m%Glen,Deform_m%Visc) 
    54  
    55      do K=2,Nz 
    56         do J=2,Ny-1 
    57            do I=2,Nx-1 
     58      
     59 
     60 
     61    !$OMP PARALLEL PRIVATE(chalk_1,chalk_2) 
     62    !$OMP DO COLLAPSE(2) 
     63    do K=2,Nz 
     64    do J=2,Ny-1 
     65            do I=2,Nx-1 
    5866 
    5967              ! Calcul De La Chaleur De Deformation Selon Xx Yy Zz Et Xy 
     
    8088           end do 
    8189        end do 
    82      end do 
     90!        !$ i_min=min(i_min,j) 
     91!        !$ i_max=max(i_max,j) 
     92     end do 
     93        !$OMP END DO NOWAIT 
     94!       !$ print*,'nb_taches = ', nb_taches 
     95!   !$ print*,"Rang : ",rang," i_min : ",i_min," i_max : ",i_max 
    8396 
    8497     !  Partie Sia   Calcul De La Chaleur Produite Sur Chaque Demi Maille 
    85      do L=1,size(Btt,4) !N1poly,N2poly 
    86         do J=2,Ny 
     98                !$OMP DO COLLAPSE(2) 
     99                do L=1,size(Btt,4) !N1poly,N2poly 
     100      do J=2,Ny 
    87101           do I=2,Nx 
    88102              !          Ffx A 3 Dimensions ! 
     
    92106        end do 
    93107     end do 
    94  
    95      do L=1,size(Btt,4)!N1poly,N2poly 
    96         do K=2,Nz 
    97            do J=2,Ny 
    98               do I=2,Nx 
    99                  if ((.not.Flotmx(I,J)).and.(.not.Gzmx(I,J))) then 
    100                     Chalx(I,J,K,L)=(Btt(I-1,J,K,L)+Btt(I,J,K,L))*Ffx(I,J,L) !& 
     108     !$OMP END DO 
     109      
     110     !$OMP DO COLLAPSE(2) 
     111          do K=2,Nz 
     112       do J=2,Ny 
     113              do I=2,Nx 
     114                     do L=1,size(Btt,4)!N1poly,N2poly 
     115                    if ((.not.Flotmx(I,J)).and.(.not.fleuvemx(I,J))) then ! grounded et slowssa 
     116                        Chalx(I,J,K,L)=(Btt(I-1,J,K,L)+Btt(I,J,K,L))*Ffx(I,J,L) !& 
    101117                    !                      *Ro*G*Ee(K)**(Glen(L)+1)/Cp(I,J,K) 
    102118 
    103                  else if (Gzmx(I,J)) then ! Ice Streams 
    104                     Chalx(I,J,K,L)=0. 
    105                  else                     ! Ice Shelves   
    106                     Chalx(I,J,K,L)=0. 
    107                  endif 
    108                  if ((.not.Flotmy(I,J)).and.(.not.Gzmy(I,J))) then 
    109                     Chaly(I,J,K,L)=(Btt(I,J-1,K,L)+Btt(I,J,K,L))*Ffy(I,J,L) !& 
     119                    else if (fleuvemx(I,J)) then ! Ice Streams 
     120                        Chalx(I,J,K,L)=0. 
     121                    else                     ! Ice Shelves   
     122                        Chalx(I,J,K,L)=0. 
     123                    endif 
     124                    if ((.not.Flotmy(I,J)).and.(.not.fleuvemy(I,J))) then ! grounded et slowssa 
     125                        Chaly(I,J,K,L)=(Btt(I,J-1,K,L)+Btt(I,J,K,L))*Ffy(I,J,L) !& 
    110126                    !                      *Ro*G*Ee(K)**(Glen(L)+1)/Cp(I,J,K) 
    111                  else if (Gzmy(I,J)) then  ! Ice Streams 
    112                     Chaly(I,J,K,L)=0. 
    113  
    114                  else                      ! Ice Shelves 
    115                     Chaly(I,J,K,L)=0. 
    116                  endif 
    117  
    118               end do 
    119            end do 
    120         end do 
    121      end do 
     127                    else if (fleuvemy(I,J)) then  ! Ice Streams 
     128                        Chaly(I,J,K,L)=0. 
     129                    else                      ! Ice Shelves 
     130                        Chaly(I,J,K,L)=0. 
     131                    endif 
     132 
     133                   end do 
     134            end do 
     135      end do 
     136     end do 
     137     !$OMP END DO 
     138      
    122139 
    123140     !         Nouvelle Formulation De Chaldef_maj(I,J,K), Le 4 Vient Des Moyennes 
     
    126143     !         Ancienne Formulation Chal=(Ro*G*H(I,J))**4*(Sx2+Sy2)*(Sx*Sx+Sy*Sy)  
    127144 
    128      do K=2,Nz 
    129         do J=1,Ny-1 
    130            do I=1,Nx-1 
    131  
     145    !$OMP DO COLLAPSE(2) 
     146    do K=2,Nz 
     147      do J=1,Ny-1 
     148            do I=1,Nx-1 
    132149              ! Modif Christophe Mars 2000 : Chalx Et Chaly Sont A 4 Dim 
    133150              Chaldef_maj(I,J,K)= 0. 
     
    153170        end do 
    154171     end do 
     172     !$OMP END DO NOWAIT 
     173           
    155174     ! Chaleur Produite A La Base Par Le Glissement 
     175     !$OMP DO 
    156176     do J=2,Ny 
    157177        do I=2,Nx 
     
    169189           endif 
    170190 
    171         end do 
    172      end do 
    173  
     191        end do    
     192     end do 
     193     !$OMP END DO 
     194           
    174195     !  Boundary Condition Ice-Rock Interface  
    175196     K=Nz 
    176197 
     198     !$OMP DO 
    177199     do J=2,Ny-1 
    178200        do I=2,Nx-1 
     
    228250        end do 
    229251     end do 
    230  
     252     !$OMP END DO 
     253     !$OMP END PARALLEL 
     254      
    231255 
    232256  case (2)             ! Q_prod_centre : Calcul Avec La Somme Des Carres 
     
    284308           do J=2,Ny 
    285309              do I=2,Nx 
    286                  if ((.not.Flotmx(I,J)).and.(.not.Gzmx(I,J))) then 
     310                 if ((.not.Flotmx(I,J)).and.(.not.fleuvemx(I,J))) then 
    287311                    Chalx(I,J,K,L)=(Btt(I-1,J,K,L)+Btt(I,J,K,L))*Ffx(I,J,L) !& 
    288312                    !                      *Ro*G*Ee(K)**(Glen(L)+1)/Cp(I,J,K) 
    289313 
    290                  else if (Gzmx(I,J)) then ! Ice Streams 
     314                 else if (fleuvemx(I,J)) then ! Ice Streams 
    291315                    Chalx(I,J,K,L)=0. 
    292316 
     
    296320                 endif 
    297321 
    298                  if ((.not.Flotmy(I,J)).and.(.not.Gzmy(I,J))) then 
     322                 if ((.not.Flotmy(I,J)).and.(.not.fleuvemy(I,J))) then 
    299323                    Chaly(I,J,K,L)=(Btt(I,J-1,K,L)+Btt(I,J,K,L))*Ffy(I,J,L) !& 
    300324                    !                      *Ro*G*Ee(K)**(Glen(L)+1)/Cp(I,J,K) 
    301325 
    302                  else if (Gzmy(I,J)) then  ! Ice Streams 
     326                 else if (fleuvemy(I,J)) then  ! Ice Streams 
    303327                    Chaly(I,J,K,L)=0. 
    304328 
     
    469493           do J=2,Ny 
    470494              do I=2,Nx 
    471                  if ((.not.Flotmx(I,J)).and.(.not.Gzmx(I,J))) then 
     495                 if ((.not.Flotmx(I,J)).and.(.not.fleuvemx(I,J))) then 
    472496                    Chalx(I,J,K,L)=(Btt(I-1,J,K,L)+Btt(I,J,K,L))*ddx(I,J,L) 
    473497 
    474                  else if (Gzmx(I,J)) then ! Ice Streams 
     498                 else if (fleuvemx(I,J)) then ! Ice Streams 
    475499                    Chalx(I,J,K,L)=0. 
    476500 
     
    480504                 endif 
    481505 
    482                  if ((.not.Flotmy(I,J)).and.(.not.Gzmy(I,J))) then 
     506                 if ((.not.Flotmy(I,J)).and.(.not.fleuvemy(I,J))) then 
    483507                    Chaly(I,J,K,L)=(Btt(I,J-1,K,L)+Btt(I,J,K,L))*ddy(I,J,L) 
    484508 
    485                  else if (Gzmy(I,J)) then  ! Ice Streams 
     509                 else if (fleuvemy(I,J)) then  ! Ice Streams 
    486510                    Chaly(I,J,K,L)=0. 
    487511 
     
    905929 
    906930  end select 
     931 
    907932end subroutine Qprod_ice 
  • branches/iLoveclim/SOURCES/Temperature-routines/advec_icetemp.f90

    r24 r77  
    1414!> 
    1515 
    16 Subroutine  Advec_icetemp(Ii,Jj,Prodq_m,Cro_m,Advecx_m,Advecy_m,Advec_m,Ct_m) 
     16Subroutine  Advec_icetemp(Nz,Nzm,Nn,Prodq_m,Cro_m,Advecx_m,Advecy_m,Advec_m,Ct_m,Iadvec_w,Iadvec_e,Iadvec_s,Iadvec_n, & 
     17        Uxij,Uxi_plus_un,Uyij,Uyj_plus_un,Tij,Ti_moins_un,Ti_plus_un,Tj_moins_un,Tj_plus_un,Hij,Tsij,Aa,Bb,Cc,Rr, & 
     18        Dx11,Dou,DTT,Dee,Uzrij,Dttdx) 
    1719 
    18   use icetemp_declar  
     20!  use icetemp_declar  
    1921 
    2022  Implicit None 
    2123    !< Arguments 
    22   Integer,                     Intent(In)  ::  Ii,Jj          !< Indice Selon X Et Y 
    23   Real, Dimension(Nz),         Intent(In)   :: Prodq_m        !< Tableau 1d Vert. heat production 
    24   Real, Dimension(Nz),         Intent(In)   :: Cro_m          !< Tableau 1d Vert. heat capcity 
    25   Real, Dimension(Nz),         Intent(Inout):: Advecx_m       !< Advection selon x 
    26   Real, Dimension(Nz),         Intent(Inout):: Advecy_m       !< Advection selon y 
    27   Real, Dimension(Nz),         Intent(Inout):: Advec_m        !< Advection total 
    28   Real, Dimension(Nz),         Intent(In)   :: Ct_m           !< Tableau 1d Vert.  thermal cond. 
     24  Integer,                     intent(in)  ::  Nz,Nzm,Nn      !< Taille des tableaux 
     25  Real, Dimension(Nz),         intent(in)   :: Prodq_m        !< Tableau 1d Vert. heat production 
     26  Real, Dimension(Nz),         intent(in)   :: Cro_m          !< Tableau 1d Vert. heat capcity 
     27  Real, Dimension(Nz),         intent(inout):: Advecx_m       !< Advection selon x 
     28  Real, Dimension(Nz),         intent(inout):: Advecy_m       !< Advection selon y 
     29  Real, Dimension(Nz),         intent(inout):: Advec_m        !< Advection total 
     30  Real, Dimension(Nz),         intent(in)   :: Ct_m           !< Tableau 1d Vert.  thermal cond. 
     31   
     32  Integer, intent(in) :: Iadvec_w,Iadvec_e,Iadvec_s,Iadvec_n 
     33  real, dimension(Nz), Intent(in) :: Uxij, Uxi_plus_un 
     34  real, dimension(Nz), Intent(in) :: Uyij, Uyj_plus_un 
     35  real, dimension(Nz+Nzm), Intent(inout) :: Tij 
     36  real, dimension(Nz+Nzm), Intent(in) :: Ti_moins_un,Ti_plus_un,Tj_moins_un,Tj_plus_un 
     37  real, intent(in) :: Hij 
     38  real,intent(in) :: Tsij 
     39  Real,Dimension(Nn),intent(inout) :: Aa    !< Work Arrays For Tridiag  !Dim Nn 
     40  Real,Dimension(Nn),intent(inout) :: Bb    !< Work Arrays For Tridiag  !Dim Nn 
     41  Real,Dimension(Nn),intent(inout) :: Cc    !< Work Arrays For Tridiag  !Dim Nn 
     42  Real,Dimension(Nn),intent(inout) :: Rr    !< Work Arrays For Tridiag  !Dim Nn 
     43  Real, intent(in) :: Dx11 
     44  Real, intent(inout) :: Dou 
     45  real, intent(in) :: DTT 
     46  real, intent(in) :: Dee 
     47  real, dimension(Nz) :: Uzrij 
     48  real :: Dttdx 
     49   
     50 
     51   
     52  ! variables locales 
     53  Integer :: K 
     54  Real :: Dzz,Dah,Ct_haut,Ct_bas 
    2955 
    3056  
     
    3561     !         Avection Selon X  (advecx_m en general > 0) 
    3662     !         ---------------- 
    37      Advecx_m(K) = Iadvec_w(Ii,Jj) * Ux(Ii,Jj,K) *          & ! ux west if upwind 
    38           (T(Ii,Jj,K) - T(Ii-1,Jj,K))  & ! west T gradient 
     63     Advecx_m(K) = Iadvec_w * Uxij(K) *          & ! ux west if upwind 
     64          (Tij(K) - Ti_moins_un(K))  & ! west T gradient 
    3965             
    40           + Iadvec_e(Ii+1,Jj)* Ux(Ii+1,Jj,K)*      & ! ux east if upwind 
    41           (T(Ii+1,Jj,K)-T(Ii,Jj,K))     ! east T gradient 
     66          + Iadvec_e * Uxi_plus_un(K)*      & ! ux east if upwind 
     67          (Ti_plus_un(K)-Tij(K))     ! east T gradient 
    4268 
    4369     Advecx_m(K) =  Advecx_m(K) * Dx11                                        !Dx11=1/Dx 
     
    4672     !         Avection Selon Y 
    4773     !         ---------------- 
    48      Advecy_m(K) =   Iadvec_s(Ii,Jj) * Uy(Ii,Jj,K) *        & ! uy sud if upwind 
    49           (T(Ii,Jj,K) - T(Ii,Jj-1,K))& ! south T gradient 
     74     Advecy_m(K) =   Iadvec_s * Uyij(K) *        & ! uy sud if upwind 
     75          (Tij(K) - Tj_moins_un(K))& ! south T gradient 
    5076           
    51           + Iadvec_n(Ii,Jj+1) * Uy(Ii,Jj+1,K) *   & ! uy nord is upwind 
    52           (T(Ii,Jj+1,K)-T(Ii,Jj,K))    ! north T gradient 
     77          + Iadvec_n * Uyj_plus_un(K) *   & ! uy nord is upwind 
     78          (Tj_plus_un(K)-Tij(K))    ! north T gradient 
    5379 
    5480     Advecy_m(K) =  Advecy_m(K) * Dx11 
     
    6288 
    6389  !      -----------------------------Cas General (H>10m) 
    64   thick_ice:  If (H(Ii,Jj).Gt.10.) Then 
     90  thick_ice:  If (Hij.Gt.10.) Then 
    6591 
    6692     !        Variables De Calcul Dans La Glace 
    6793     ! dou = dtt/dz^2 
    68      Dou=Dtt/Dee/Dee/ H(Ii,Jj) / H(Ii,Jj)   
     94     Dou=Dtt/Dee/Dee/ Hij / Hij   
    6995 
    7096     ! Dah = dtt/dz 
    71      Dah=Dtt /Dee /H(Ii,Jj) 
     97     Dah=Dtt /Dee /Hij 
    7298 
    7399     ! thermal conductivity at mid point just below the surface                    
     
    75101 
    76102     ! surface temperature : cannot go above 0 celsius 
    77      T(Ii,Jj,1)=Min(0.,Ts(Ii,Jj)) 
     103     Tij(1)=Min(0.,Tsij) 
    78104 
    79105     ! surface boundary condition 
     
    81107     Bb(1)=1. 
    82108     Cc(1)=0. 
    83      Rr(1)=T(Ii,Jj,1) 
     109     Rr(1)=Tij(1) 
    84110 
    85111     Do K=2,Nz-1 
     
    91117 
    92118        ! Advection Verticale Centree 
    93         Aa(K) = -Dzz * Ct_haut - Uzr(Ii,Jj,K) * Dah / 2.  ! lower diag 
    94         Cc(K) = -Dzz * Ct_bas  + Uzr(Ii,Jj,K) * Dah / 2.  ! upper diag 
     119        Aa(K) = -Dzz * Ct_haut - Uzrij(K) * Dah / 2.  ! lower diag 
     120        Cc(K) = -Dzz * Ct_bas  + Uzrij(K) * Dah / 2.  ! upper diag 
    95121        Bb(K) =  1.+ Dzz * (Ct_haut+Ct_bas)                                ! diag 
    96122         
    97         Rr(K) =  T(Ii,Jj,K) + Prodq_m(K) * Dtt   ! vector 
     123        Rr(K) =  Tij(K) + Prodq_m(K) * Dtt   ! vector 
    98124        Rr(K) =  Rr(K)- Dttdx * (Advec_m(K)) 
    99125 
  • branches/iLoveclim/SOURCES/Temperature-routines/icetemp_declar_mod.f90

    r31 r77  
    2222  Integer :: Nfracq   !< Exposant Fracq 
    2323  Integer :: Iq       !< Choix Du Type De Routine Chaleur 
    24   Real :: Sx,Sy,Sx2,Sy2,Deh22,Tss 
    25   Real ::  Dou,Dah,Duu,Dzz,Dzi,Chalbed,Ct_bas,Ct_haut 
     24  Real :: Sx,Sy,Sx2,Sy2,Deh22 ! ,Tss 
     25  Real ::  Dou,Duu,Chalbed ! ,Dah,Dzz,Dzi,Ct_bas,Ct_haut 
    2626 
    2727  Real,Parameter :: Acof1=-0.0575  !< Pour La Temperature De L'Eau De Mer 
     
    3232  ! a la Base De L'Ice Shelf 
    3333  Integer :: Ifail1             !< Permet De Detecter Les Erreurs  
    34   Real :: Chalk_1               !< Utilise Pour Le Calcul De Chalk : Glace Posée 
    35   Real :: Chalk_2               !< Utilise Pour Le Calcul De Chalk : Ice Streams Et Ice Shelves 
    3634  Real :: Chalbed_1             !< Utilise Pour Le Calcul De Chalbed 
    3735  Real :: Coefadv               !< Pour Limiter Le Flux De Chaleur Horiz. 
     
    4240  ! _______________ 
    4341 
    44   Real,allocatable,Dimension(:) :: Aa    !< Work Arrays For Tridiag  !Dim Nn 
    45   Real,allocatable,Dimension(:) :: Bb    !< Work Arrays For Tridiag  !Dim Nn 
    46   Real,allocatable,Dimension(:) :: Cc    !< Work Arrays For Tridiag  !Dim Nn 
    47   Real,allocatable,Dimension(:) :: Rr    !< Work Arrays For Tridiag  !Dim Nn 
    48   Real,allocatable,Dimension(:) :: Hh    !< Work Arrays For Tridiag  !Dim Nn 
     42  Real,Dimension(Nn) :: Aa    !< Work Arrays For Tridiag  !Dim Nn 
     43  Real,Dimension(Nn) :: Bb    !< Work Arrays For Tridiag  !Dim Nn 
     44  Real,Dimension(Nn) :: Cc    !< Work Arrays For Tridiag  !Dim Nn 
     45  Real,Dimension(Nn) :: Rr    !< Work Arrays For Tridiag  !Dim Nn 
     46  Real,Dimension(Nn) :: Hh    !< Work Arrays For Tridiag  !Dim Nn 
    4947 
    50   Real,allocatable,Dimension(:) :: Tdot   !< Temperature Time Derivative*Dtt   
    51   Real,allocatable,Dimension(:) :: Abis,Bbis,Cbis,Rbis,Hbis                    
    52   Real,allocatable,Dimension(:) :: Ee        !< Vertical Coordinate In Ice, Scaled To H Zeta   
     48  Real,Dimension(Nz+Nzm) :: Tdot   !< Temperature Time Derivative*Dtt   
     49!  Real,allocatable,Dimension(:) :: Abis,Bbis,Cbis,Rbis,Hbis                    
     50  Real,Dimension(Nz) :: Ee        !< Vertical Coordinate In Ice, Scaled To H Zeta   
    5351 
    5452  ! Tableaux De Travail 2d  
    5553  ! ___________________________ 
    56   Real,allocatable,Dimension(:,:):: Tbmer    !< Temperature De La Mer A La Base De L'Ice Shelf   
    57   Real,allocatable,Dimension(:,:) :: Chalglissx,Chalglissy !< Chaleur De Glissement              
    58   Integer,allocatable,Dimension(:,:) :: Iadvec_w,Iadvec_e,Iadvec_s,Iadvec_n    
     54  Real,Dimension(Nx,Ny):: Tbmer    !< Temperature De La Mer A La Base De L'Ice Shelf   
     55  Real,Dimension(Nx,Ny) :: Chalglissx,Chalglissy !< Chaleur De Glissement              
     56  Integer,Dimension(Nx,Ny) :: Iadvec_w,Iadvec_e,Iadvec_s,Iadvec_n    
    5957  ! Pour L'Advection         
    6058 
    6159  ! Tableaux De Travail 3d 
    6260  ! __________________________ 
    63   Real,allocatable,Dimension(:,:,:,:) :: Chalx, Chaly         !Dim Nx,Ny,Nz,N1poly:N2poly 
     61  Real,Dimension(Nx,Ny,Nz,size(Btt,4)) :: Chalx, Chaly         !Dim Nx,Ny,Nz,N1poly:N2poly 
    6462  ! Utilise Pour Calculer La Chaleur De Deformation Selon Xx Yy Zz Et Xy 
    65   Real,allocatable,Dimension(:,:,:) :: Ffx,Ffy                                        
    66   Real,allocatable,Dimension(:,:,:) :: T3d_new                       
    67   Real,allocatable,Dimension(:,:,:) :: Chal2_x, Chal2_y, Chal2_z, Chal2_xy 
    68   Real,allocatable,Dimension(:,:,:) :: Chaldef_maj   !< Chaleur De Deformation                    
    69   Real,allocatable,Dimension(:,:,:) :: Advecx,Advecy,Advec 
     63  Real,Dimension(Nx,Ny,size(Btt,4)) :: Ffx,Ffy                                        
     64  Real,Dimension(Nx,Ny,Nz+Nzm) :: T3d_new                       
     65  Real,Dimension(Nx,Ny,Nz) :: Chal2_x, Chal2_y, Chal2_z, Chal2_xy 
     66  Real,Dimension(Nx,Ny,Nz) :: Chaldef_maj   !< Chaleur De Deformation                    
     67  Real,Dimension(Nx,Ny,Nz) :: Advecx,Advecy,Advec 
    7068  Real,Dimension(Nx,Ny,Nz) :: Cp            !< Specific Heat Capacity (J/(M-3)/K)=Ro Cp   
    7169  Real,Dimension(Nx,Ny,Nz) :: Ct            !< Thermal Conductivity (J/M/K/A)             
  • branches/iLoveclim/SOURCES/Temperature-routines/icetemp_mod.f90

    r31 r77  
    6666 
    6767  subroutine icetemp 
    68  
     68    !$ use OMP_LIB  
    6969    use Icetemp_declar 
    7070 
    7171 
    7272    Implicit None  
    73  
    74     ! Allocation de la memoire pour les tableaux dans icetemp_declar 
    75  
    76     If (.Not. Allocated(Aa)) then  
    77        ! tab Nn 
    78        Allocate (Aa(Nn),Bb(Nn),Cc(Nn),Rr(Nn),Hh(Nn))   
    79        ! tab NzNzm_m 
    80        Allocate(Tdot(Nz+Nzm))    
    81        ! tab Nzm+1 
    82        Allocate(Abis(Nzm+1),Bbis(Nzm+1),Cbis(Nzm+1),Rbis(Nzm+1),Hbis(Nzm+1))                   
    83        ! tab nz_m 
    84        Allocate(Ee(Nz))         
    85        !Tab Nx,Ny 
    86        Allocate(Tbmer(Nx,Ny),&    
    87             Chalglissx(Nx,Ny),& 
    88             Chalglissy(Nx,Ny),& 
    89             Iadvec_w(Nx,Ny),& 
    90             Iadvec_e(Nx,Ny),& 
    91             Iadvec_s(Nx,Ny),& 
    92             Iadvec_n(Nx,Ny) )       
    93        ! Tab Nx,Ny,Nz 
    94        Allocate(Chal2_x(Nx,Ny,Nz),& 
    95             Chal2_y(Nx,Ny,Nz),& 
    96             Chal2_z(Nx,Ny,Nz),& 
    97             Chal2_xy(Nx,Ny,Nz),& 
    98             Chaldef_maj(Nx,Ny,Nz),& 
    99             Advecx(Nx,Ny,Nz),& 
    100             Advecy(Nx,Ny,Nz),& 
    101             Advec(Nx,Ny,Nz)) 
    102        ! Tab Nx,Ny,Nz,N1poly:N2poly 
    103        Allocate(Chalx(Nx,Ny,Nz,size(Btt,4)),& 
    104             Chaly(Nx,Ny,Nz,size(Btt,4)))          
    105        ! Tab Nx,Ny,N1poly:N2poly 
    106        Allocate(Ffx( Nx,Ny,size(Btt,4)),& 
    107             Ffy( Nx,Ny,size(Btt,4)))                                         
    108        ! Tab Nx,Ny,NzNzm 
    109        Allocate( T3d_new (Nx,Ny,Nz+Nzm))                   
    110     end If 
    111  
     73     
     74!~   integer :: t1,t2,ir 
     75!~   real                           :: temps, t_cpu_0, t_cpu_1, t_cpu, norme   
     76!~    
     77!~    ! Temps CPU de calcul initial. 
     78!~    call cpu_time(t_cpu_0) 
     79!~    ! Temps elapsed de reference. 
     80!~    call system_clock(count=t1, count_rate=ir) 
     81     
     82     
     83         !$OMP PARALLEL 
     84         !$OMP WORKSHARE 
    11285    ! init 
    11386    Aa=0.     
     
    12497    Chalglissx=0. 
    12598    Chalglissy=0. 
     99     
    126100    !Instruction  
    127101    Dee=1./(Nz-1)  
     
    130104    Ee(1)=0. 
    131105    Ee(Nz)=1. 
     106    !$OMP END WORKSHARE 
     107     
     108    !$OMP DO 
    132109    Do K=1,Nz 
    133110       If ((K.Ne.1).And.(K.Ne.Nz)) Ee(K)=(K-1.)/(Nz-1.) 
    134111    End Do 
     112    !$OMP END DO 
     113    !$OMP END PARALLEL 
    135114 
    136115    !   Variables Dependant Du Pas De Temps Dtt 
     
    156135    Call Qprod_ice(Iq) 
    157136 
    158  
     137   
    159138    ! Dans Le Socle : Les elements de La Matrice Tridiag Sont Invariants Dans L'Espace 
     139    !$OMP PARALLEL 
     140    !$OMP DO 
    160141    Do K=Nz+1,nz+nzm-1 
    161142       Aa(K)=-Ctm 
     
    163144       Cc(K)=-Ctm 
    164145    End Do 
     146         !$OMP END DO 
    165147 
    166148    ! Conditions Aux Limites Pour Le Socle 
     
    174156    !         Advection Selon X 
    175157    !         ----------------- 
    176  
     158    !$OMP WORKSHARE 
    177159    Iadvec_w(:,:)=Nint(Max(Sign(1.0,Uxbar(:,:)),0.0)) 
    178160    Iadvec_e(:,:)=Nint(Abs(Min(Sign(1.0,Uxbar(:,:)),0.0))) 
     
    183165    Iadvec_s(:,:)=Nint(Max(Sign(1.0,Uybar(:,:)),0.0))  
    184166    Iadvec_n(:,:)=Nint(Abs(Min(Sign(1.0,Uybar(:,:)),0.0))) 
    185  
     167    !$OMP END WORKSHARE 
    186168    ! Boucle De Resolution Des Temperatures Colonne Par Colonne 
    187  
     169         !$OMP SINGLE 
    188170    If (Itracebug.Eq.1) Write(num_tracebug,*)' avant appel  boucle Advec_icetemp' 
    189  
     171    !$OMP END SINGLE 
     172 
     173         !$OMP DO PRIVATE(Deh22,Duu,Aa,Bb,Cc,Rr,Hh,Dou) 
    190174    Do J=2,Ny-1 
    191175       Do I=2,Nx-1 
    192176 
    193177 !  If (Itracebug.Eq.1) Write(num_tracebug,*)' avant appel  Advect_icetemp  i,j', i,j 
    194           call Advec_icetemp(I,J,Chaldef_maj(I,J,:),Cp(I,J,:),&  
    195                Advecx(I,J,:),Advecy(I,J,:),Advec(I,J,:),Ct(I,J,:)) 
     178          call Advec_icetemp(Nz,Nzm,Nn,Chaldef_maj(I,J,:),Cp(I,J,:),&  
     179               Advecx(I,J,:),Advecy(I,J,:),Advec(I,J,:),Ct(I,J,:),Iadvec_w(I,J),Iadvec_e(I+1,J),Iadvec_s(I,J),Iadvec_n(I,J+1), & 
     180                                        Ux(i,j,:),Ux(i+1,j,:),Uy(i,j,:),Uy(i,j+1,:),T(i,j,:),T(i-1,j,:),T(i+1,j,:),T(i,j-1,:),T(i,j+1,:), & 
     181                                        H(i,j),Ts(i,j),Aa,Bb,Cc,Rr,Dx11,Dou,DTT,Dee,Uzr(i,j,:),Dttdx) 
    196182 
    197183          ! variables de calcul dans la glace 
     
    201187 
    202188!   If (Itracebug.Eq.1) Write(num_tracebug,*)' avant appel  temp_col  i,j', i,j 
    203           Call temp_col(I,J,T3d_new,Ct(I,J,:),& 
    204                flot(I,J),H(I,J),Tbmer(I,J)) 
     189          Call temp_col(Nz,Nzm,Nn,T3d_new(i,j,:),Ct(i,j,:),& 
     190               flot(i,j),H(i,j),Tbmer(i,j),Ibase(i,j),T(i,j,:),Tpmp(i,j,:),Aa,Bb,Cc,Rr,Hh,Ncond,Dee,Cm,& 
     191               Dzm,Phid(i,j),Ghf(i,j),Ifail1,Tbdot(i,j),DTT,Dou,Ts(i,j),Bmelt(i,j)) 
    205192 
    206193          ! Test Permettant D'Ecrire Les Variables Quand Il Y A Une Erreur 
     
    218205       End Do 
    219206    End Do 
    220  
     207         !$OMP END DO 
     208 
     209         !$OMP DO 
    221210    Do J=1,Ny 
    222211       Do I=1,Nx 
     
    226215       End Do 
    227216    End Do 
     217    !$OMP END DO 
    228218 
    229219    ! Attribution Finale De La Temperature 
    230220    ! Limitation a 3 deg De Variation Par Dtt Et Pas Plus Froid Que -70 
    231  
     221         !$OMP DO COLLAPSE(2) PRIVATE(Tdot) 
    232222    Do K=1,nz+nzm 
    233223       Do J=1,Ny 
     
    250240       End Do 
    251241    End Do 
    252  
    253  
     242    !$OMP END DO 
     243 
     244         !$OMP DO COLLAPSE(2) 
    254245    Do K=2,Nz 
    255246       Do J=1,Ny 
     
    262253       End Do 
    263254    End Do 
     255    !$OMP END DO 
    264256 
    265257    !     Temperature Sur Les Bords : 
    266258    !     ------------------------- 
    267259   
     260    !$OMP DO COLLAPSE(2) 
    268261    Do K=1,Nz 
    269262       Do J=1,Ny 
     
    281274       End Do 
    282275    End Do 
    283     
    284  
     276    !$OMP END DO 
     277 
     278    !$OMP DO COLLAPSE(2)  
    285279    Do K=1,Nz 
    286280       Do J=1,Ny 
     
    294288       End Do 
    295289    End Do 
    296  
    297     Deallocate (Aa,Bb,Cc,Rr,Hh,Tdot,Abis,Bbis,Cbis,Rbis,Hbis,Ee,Tbmer,            &  
    298                 Chalglissx,Chalglissy,Iadvec_w,Iadvec_e,                          &  
    299                 Iadvec_s,Iadvec_n,Chal2_x,Chal2_y,Chal2_z,Chal2_xy,Chaldef_maj,   & 
    300                 Advecx,Advecy,Advec,Chalx,Chaly,Ffx,Ffy,T3d_new)         
     290    !$OMP END DO 
     291    !$OMP END PARALLEL 
     292  
     293!~   ! Temps elapsed final 
     294!~   call system_clock(count=t2, count_rate=ir) 
     295!~   temps=real(t2 - t1,kind=4)/real(ir,kind=4) 
     296!~   ! Temps CPU de calcul final 
     297!~   call cpu_time(t_cpu_1) 
     298!~   t_cpu = t_cpu_1 - t_cpu_0 
     299   
     300!~   ! Impression du resultat. 
     301!~   print '(//,3X,"Valeurs de nx et ny : ",I5,I5/,              & 
     302!~            & 3X,"Temps elapsed       : ",1PE10.3," sec.",/, & 
     303!~            & 3X,"Temps CPU           : ",1PE10.3," sec.",/, & 
     304!~            & 3X,"Norme (PB si /= 0)  : ",1PE10.3,//)', & 
     305!~            nx,ny,temps,t_cpu,norme 
     306 
    301307 
    302308    If (Itracebug.Eq.1) Write(num_tracebug,*)' fin routine icetemp' 
  • branches/iLoveclim/SOURCES/Temperature-routines/prop_th_icetemp.f90

    r24 r77  
    1515 
    1616Subroutine Thermal_prop_icetemp 
     17!$ USE OMP_LIB 
    1718  Use Icetemp_declar  
    1819 
     
    2122  If (Itracebug.Eq.1) Write(Num_tracebug,*)' Entree Dans Routine Thermal_prop_icetemp' 
    2223 
     24!$OMP PARALLEL 
     25!$OMP DO COLLAPSE(2) 
    2326  Do K=1,Nz   
    2427     Do J=1,Ny 
     
    2932           !  Attention Pour La Conductivite C'Est La Formule De Yin-Chao Yen 
    3033 
    31            Ct(I,J,K)=6.62E7 
    32            Cp(I,J,K)=2009.  
     34!           Ct(I,J,K)=6.62E7 
     35!           Cp(I,J,K)=2009.  
    3336           Tpmp(I,J,K)=-0.00087*(K-1)*1./(Nz-1)*H(I,J)!De=1/(Nz_m-1) 
    3437           Cp(I,J,K)=(2115.3+7.79293*T(I,J,K))  
     
    3841     End Do 
    3942  End Do 
    40  
     43!$OMP END DO 
     44!$OMP END PARALLEL 
    4145End Subroutine Thermal_prop_icetemp 
    4246 
  • branches/iLoveclim/SOURCES/Temperature-routines/temp_col.f90

    r24 r77  
    1414!> 
    1515 
    16 Subroutine  Temp_col(Ii,Jj,Newtempcol_m,Ct_m,Flot_m,H_m,Tbmer_m) 
    17  
    18   Use Icetemp_declar 
     16Subroutine  Temp_col(Nz,Nzm,Nn,Newtempcol,Ctij,Flotij,Hij,Tbmerij,Ibase,Tij,Tpmpij,Aa,Bb,Cc,Rr,Hh,Ncond,Dee,Cm, & 
     17                                Dzm,Phidij,Ghfij,Ifail1,Tbdotij,DTT,Dou,Tsij,Bmeltij) 
     18 
     19!  Use Icetemp_declar 
    1920  Use Tridiagmod 
    2021   
    2122   
    2223  Implicit None 
    23   integer :: Ii,Jj 
    24   Real,Dimension(Nx,Ny,Nz+Nzm),Intent(Out)  :: Newtempcol_m        !< Tableau 1d Vert. Des Temperatures En Sortie 
    25   Real,Dimension(Nz),Intent(In)             :: Ct_m                !< Tableau 1d Vert. Conductivite Thermique 
    26   Logical,Intent(In)                        :: Flot_m              !< Vrai Si Flot_mtant (Test D'Archimede) 'O' 
    27   Real,Intent(In)                           :: H_m                 !< Ice Thickness  'O' 
    28   Real,Intent(In)                           :: Tbmer_m             !< Temperature De La Mer A La Base De L'Ice Shelf 
    29  
    30  
    31   If (H_m.Gt.10.) Then 
     24  integer,intent(in) :: Nz,Nzm,Nn 
     25  Real,Dimension(Nz+Nzm),Intent(Out)  :: Newtempcol        !< Tableau 1d Vert. Des Temperatures En Sortie 
     26  Real,Dimension(Nz),Intent(In)       :: Ctij                !< Tableau 1d Vert. Conductivite Thermique 
     27  Logical,Intent(In)                  :: Flotij              !< Vrai Si Flotijtant (Test D'Archimede) 'O' 
     28  Real,Intent(In)                     :: Hij                 !< Ice Thickness  'O' 
     29  Real,Intent(In)                     :: Tbmerij             !< Temperature De La Mer A La Base De L'Ice Shelf 
     30  integer,intent(inout)               :: Ibase 
     31  real,dimension(Nz+Nzm),intent(inout) :: Tij             !< Temperature sur la colonne 
     32  real,dimension(Nz),intent(in)       :: Tpmpij               !< pressure melting point temperature in ice sheet 'o' 
     33  Real,Dimension(Nn),intent(inout) :: Aa    !< Work Arrays For Tridiag  !Dim Nn 
     34  Real,Dimension(Nn),intent(inout) :: Bb    !< Work Arrays For Tridiag  !Dim Nn 
     35  Real,Dimension(Nn),intent(inout) :: Cc    !< Work Arrays For Tridiag  !Dim Nn 
     36  Real,Dimension(Nn),intent(inout) :: Rr    !< Work Arrays For Tridiag  !Dim Nn 
     37  Real,Dimension(Nn),intent(inout) :: Hh    !< Work Arrays For Tridiag  !Dim Nn 
     38  Integer,intent(in)               :: Ncond !< Switch : Ncond=1 Thermal Conductivity In Mantle 
     39  real, intent(in) :: Dee 
     40  real,intent(in) :: Cm 
     41  real,intent(in) :: Dzm 
     42  real,intent(inout) :: Phidij     !< flux de chaleur lie a la deformation et glissement basal 
     43  real,intent(in) :: Ghfij      !< flux geothermique 
     44  integer,intent(out) :: Ifail1 !< Diagnostique erreur dans Tridiag 
     45  real, intent(out) :: Tbdotij  !< variation in time of basal temperature 
     46  real, intent(in) :: DTT 
     47  Real, intent(inout) :: Dou 
     48  real, intent(in) :: Tsij        !< surface ice temperature  'o' 
     49  real, intent(out) :: Bmeltij    !< fonte basale 
     50   
     51   
     52   
     53  ! variables locales 
     54  integer :: K 
     55  Real :: Dzi,Tss 
     56  Real,Dimension(Nzm+1) :: Abis,Bbis,Cbis,Rbis,Hbis    
     57 
     58  If (Hij.Gt.10.) Then 
    3259 
    3360     ! Conditions Aux Limites a La Base De La Glace 
     
    3562 
    3663     ! Base Froide  
    37      If ( ((Ibase(Ii,Jj).Eq.1).Or.(Ibase(Ii,Jj).Eq.4) & 
    38           .Or. ((Ibase(Ii,Jj).Eq.5).And.(T(Ii,Jj,Nz).Lt.Tpmp(Ii,Jj,Nz)))) & 
    39           .And..Not.Flot_m) Then 
    40  
    41         Ibase(Ii,Jj)=1 
     64     If ( ((Ibase.Eq.1).Or.(Ibase.Eq.4) & 
     65          .Or. ((Ibase.Eq.5).And.(Tij(Nz).Lt.Tpmpij(Nz)))) & 
     66          .And..Not.Flotij) Then 
     67 
     68        Ibase=1 
    4269        Bb(Nz)=1. 
    4370 
    4471        If (Ncond.Eq.1) Then ! Avec Socle 
    45            Dzi=H_m*Dee*Cm/Ct_m(Nz) 
     72           Dzi=Hij*Dee*Cm/Ctij(Nz) 
    4673           Aa(Nz)=-Dzm/(Dzm+Dzi) 
    4774           Cc(Nz)=-Dzi/(Dzm+Dzi) 
    48            Rr(Nz)=H_m*Dee*Phid(Ii,Jj)*Dzm/Ct_m(Nz)/(Dzm+Dzi) 
     75           Rr(Nz)=Hij*Dee*Phidij*Dzm/Ctij(Nz)/(Dzm+Dzi) 
    4976        Else                 ! Sans Socle 
    5077           Aa(Nz)=-1. 
    5178           Cc(Nz)=0. 
    52            Rr(Nz)=-(Ghf(Ii,Jj)-Phid(Ii,Jj))/Ct_m(Nz)*H_m*Dee 
     79           Rr(Nz)=-(Ghfij-Phidij)/Ctij(Nz)*Hij*Dee 
    5380        Endif 
    5481 
     
    5784        ! Base Temperee Ou Shelf 
    5885        ! ----------------------                
    59         If (Ibase(Ii,Jj).Eq.5)  Ibase(Ii,Jj)=2 
    60         Ibase(Ii,Jj)=Max(Ibase(Ii,Jj),2) 
     86        If (Ibase.Eq.5)  Ibase=2 
     87        Ibase=Max(Ibase,2) 
    6188        Aa(Nz)=0. 
    6289        Bb(Nz)=1. 
    6390        Cc(Nz)=0. 
    6491 
    65         If (.Not.Flot_m) Then 
    66            Rr(Nz)=Tpmp(Ii,Jj,Nz) 
    67         Else 
    68            Rr(Nz)=Tbmer_m 
     92        If (.Not.Flotij) Then 
     93           Rr(Nz)=Tpmpij(Nz) 
     94        Else 
     95           Rr(Nz)=Tbmerij 
    6996        End If 
    7097 
     
    74101     If (Ncond.Eq.1) Then ! Avec Socle 
    75102        Do K=Nz+1,nz+nzm-1 
    76            Rr(K)=T(Ii,Jj,K) 
     103           Rr(K)=Tij(K) 
    77104        End Do 
    78105        Call Tridiag (Aa,Bb,Cc,Rr,Hh,nz+nzm,Ifail1) 
     
    87114     If (Ncond.Eq.0) Then 
    88115        Do K=Nz+1,nz+nzm 
    89            Hh(K)=Hh(Nz)-Dzm*(K-Nz)*Ghf(Ii,Jj)/Cm 
     116           Hh(K)=Hh(Nz)-Dzm*(K-Nz)*Ghfij/Cm 
    90117        End Do 
    91118     Endif 
    92119 
    93120     Do K=1,nz+nzm 
    94         Newtempcol_m(Ii,Jj,K)=Hh(K) 
     121        Newtempcol(K)=Hh(K) 
    95122     End Do 
    96      Tbdot(Ii,Jj)=(Newtempcol_m(Ii,Jj,Nz)-T(Ii,Jj,Nz))/Dtt 
     123     Tbdotij=(Newtempcol(Nz)-Tij(Nz))/Dtt 
    97124 
    98125     !      ------------------------------------------------- Glace Tres Fine (H<10m Ou H=0) 
    99   Else If (H_m.Le.10.) Then 
     126  Else If (Hij.Le.10.) Then 
    100127 
    101128     !       Pour Eviter Des Problemes Lorsque H Est Inferieur A 10 M 
     
    104131 
    105132     ! ........................................ Avec Calcul Dans Le Socle 
    106      If (Ncond.Eq.1.And..Not.Flot_m) Then    
    107         If (H_m.Gt.0.) Then 
     133     If (Ncond.Eq.1.And..Not.Flotij) Then    
     134        If (Hij.Gt.0.) Then 
    108135           ! Gradient Dans Le Socle 
    109            Dou=(T(Ii,Jj,Nz+1)-T(Ii,Jj,Nz))/Dzm*Cm      
    110            Dou=Dou/Ct_m(Nz)*Dee*H_m 
    111  
    112            Tss=Min(0.,Ts(Ii,Jj)) 
    113            Do K=1,Nz 
    114               Newtempcol_m(Ii,Jj,K)=Tss+Dou*(K-1.) 
     136           Dou=(Tij(Nz+1)-Tij(Nz))/Dzm*Cm      
     137           Dou=Dou/Ctij(Nz)*Dee*Hij 
     138 
     139           Tss=Min(0.,Tsij) 
     140           Do K=1,Nz 
     141              Newtempcol(K)=Tss+Dou*(K-1.) 
    115142           End Do 
    116143 
    117144        Else 
    118145           ! Pas De Glace 
    119            Tss=Ts(Ii,Jj) 
    120            Do K=1,Nz 
    121               Newtempcol_m(Ii,Jj,K)=Tss 
     146           Tss=Tsij 
     147           Do K=1,Nz 
     148              Newtempcol(K)=Tss 
    122149           End Do 
    123150        End If 
    124151 
    125152        ! Calcul Dans Le Socle Meme S'Il N'Y A Pas De Glace 
    126         Rr(Nz)=Newtempcol_m(Ii,Jj,Nz) 
     153        Rr(Nz)=Newtempcol(Nz) 
    127154        Aa(Nz)=0 
    128155        Bb(Nz)=1 
     
    130157 
    131158        Do K=Nz+1,nz+nzm-1 
    132            Rr(K)=T(Ii,Jj,K) 
     159           Rr(K)=Tij(K) 
    133160        End Do 
    134161 
     
    150177     Else 
    151178        ! Calotte Posee                     
    152         If ((H_m.Gt.0.).And..Not.Flot_m) Then 
    153            Dou=-Ghf(Ii,Jj)/Ct_m(Nz)*Dee*H_m 
    154            Tss=Min(0.,Ts(Ii,Jj)) 
    155            Do K=1,Nz 
    156               Newtempcol_m(Ii,Jj,K)=Tss+Dou*(K-1.) 
     179        If ((Hij.Gt.0.).And..Not.Flotij) Then 
     180           Dou=-Ghfij/Ctij(Nz)*Dee*Hij 
     181           Tss=Min(0.,Tsij) 
     182           Do K=1,Nz 
     183              Newtempcol(K)=Tss+Dou*(K-1.) 
    157184           End Do 
    158185 
    159186           !  Shelf 
    160         Else If ((H_m.Gt.0.).And.Flot_m) Then 
    161            Tss=Min(0.,Ts(Ii,Jj)) 
    162            Dou=(Tbmer_m-Tss)*Dee 
    163            Do K=1,Nz 
    164               Newtempcol_m(Ii,Jj,K)=Tss+Dou*(K-1.) 
     187        Else If ((Hij.Gt.0.).And.Flotij) Then 
     188           Tss=Min(0.,Tsij) 
     189           Dou=(Tbmerij-Tss)*Dee 
     190           Do K=1,Nz 
     191              Newtempcol(K)=Tss+Dou*(K-1.) 
    165192           End Do 
    166193 
    167194           ! Pas De Glace 
    168195        Else 
    169            Tss=Ts(Ii,Jj)       
    170            Do K=1,Nz 
    171               Newtempcol_m(Ii,Jj,K)=Tss 
     196           Tss=Tsij       
     197           Do K=1,Nz 
     198              Newtempcol(K)=Tss 
    172199           End Do 
    173200        End If 
    174201 
    175202        ! Temperature Dans Le Socle, Lineaire Avec Le Gradient Ghf 
    176         If (.Not.Flot_m) Then 
     203        If (.Not.Flotij) Then 
    177204           Do K=Nz+1,nz+nzm 
    178               Hh(K)=Newtempcol_m(Ii,Jj,Nz)-Dzm*(K-Nz)*Ghf(Ii,Jj)/Cm 
     205              Hh(K)=Newtempcol(Nz)-Dzm*(K-Nz)*Ghfij/Cm 
    179206           End Do 
    180207        Else 
    181208           Do K=Nz+1,nz+nzm 
    182               Hh(K)=Tbmer_m-Dzm*(K-Nz)*Ghf(Ii,Jj)/Cm 
     209              Hh(K)=Tbmerij-Dzm*(K-Nz)*Ghfij/Cm 
    183210           End Do 
    184211        End If 
     
    189216 
    190217     Do K=Nz+1,nz+nzm 
    191         Newtempcol_m(Ii,Jj,K)=Hh(K) 
     218        Newtempcol(K)=Hh(K) 
    192219     End Do 
    193220 
    194      Tbdot(Ii,Jj)=(Newtempcol_m(Ii,Jj,Nz)-T(Ii,Jj,Nz))/Dtt 
    195      Bmelt(Ii,Jj)=0. 
    196      Ibase(Ii,Jj)=5 
    197      Phid(Ii,Jj)=0. 
     221     Tbdotij=(Newtempcol(Nz)-Tij(Nz))/Dtt 
     222     Bmeltij=0. 
     223     Ibase=5 
     224     Phidij=0. 
    198225 
    199226 
  • branches/iLoveclim/SOURCES/bmelt-seuil-profondeur_mod.f90

    r4 r77  
    118118 
    119119talus_nochange : if (Bsoc0(i,j).lt.depth_talus) then  
     120           coef_talus = 1         ! pas de changement au dessus de l'ocecan profond 
     121        else 
    120122           coef_talus = coefbmshelf 
    121         else 
    122            coef_talus = 1         ! pas de changement au dessus de l'ocecan profond 
    123123        endif talus_nochange 
    124124 
  • branches/iLoveclim/SOURCES/branche-Cat-spinup-dec2011/dragging_prescr_beta_mod.f90

    r4 r77  
    9999    betamy_file = trim(dirnameinp)//trim(betamy_file) 
    100100    betamax = beta_limgz 
     101    betamax_2d(:,:) = betamax 
    101102 
    102103!  read the beta value on centered and staggered grids 
  • branches/iLoveclim/SOURCES/climat-forcage-insolation_mod.f90

    r21 r77  
    149149 
    150150  implicit none 
    151   integer :: mo,ti,tj   
    152   character(len=8) :: control   ! label to check clim. forc. file (filin) is usable 
    153   integer :: l                  ! In snapshot files:the first column is the mask, read but not used 
    154   real :: T_surf_ref            ! variable de travail calcul temp a l'instant t a la surface S 
     151   
    155152  integer :: intr 
    156153  integer :: igtr 
    157154  integer :: ictr 
    158   integer :: k,d1,d2 
     155  integer :: d1,d2 
    159156  integer :: i,j 
    160   character(len=100) :: file_ncdf      !< fichier netcdf  
     157!  character(len=100) :: file_ncdf      !< fichier netcdf  
    161158  real*8, dimension(:,:,:), pointer :: data_3D => null() ! donnees lues dans le netcdf 
    162159  real*8, dimension(:,:),pointer :: data_2D => null()    ! donnees lues dans le netcdf 
     
    450447  write(num_rep_42,'(A,2(f7.1,","))')   'palier_ice = ', palier_ice(:,:) 
    451448  write(num_rep_42,'(A,A)')   'surf_ice = ', surf_ice 
    452   write(num_rep_42,'(A,2(f3.1,","))')   'palier_CO2 = ', palier_CO2(:) 
     449  write(num_rep_42,'(A,2(f6.1,","))')   'palier_CO2 = ', palier_CO2(:) 
    453450  write(num_rep_42,'(A,A)')   'orb_file = ', orb_file 
    454451  write(num_rep_42,'(A,A)')   'co2_file = ', co2_file 
     
    494491implicit none 
    495492 
    496 real COEFT,COEFP       ! 
    497493!integer l              ! dumm index for loops on snapshots files  l=ITR,NTR-1 
    498494!cdc integer itr            ! index of the current snapshot file (change with time) 
     
    517513!real,dimension(nx,ny) :: coeff1,coeff2 
    518514real,dimension(nx,ny) :: coeff2 
    519 integer :: k1,k2,m1,m2 
     515integer :: m1,m2 
    520516integer,dimension(nx,ny) :: Mask,Mask2 
    521517integer :: update_H 
     
    523519 
    524520!Definition des variables pour le calcul de la fonction de CO2 
    525 double precision :: coefCO2 
     521!double precision :: coefCO2 
    526522 
    527523!***************************************************************************** 
  • branches/iLoveclim/SOURCES/climat-forcage-insolation_mod_oneway.f90

    r18 r77  
    8585 
    8686  implicit none 
    87   integer :: mo,ti,tj   
    88   character(len=8) :: control   ! label to check clim. forc. file (filin) is usable 
    89   integer :: l                  ! In snapshot files:the first column is the mask, read but not used 
    90   real :: T_surf_ref            ! variable de travail calcul temp a l'instant t a la surface S 
     87 
    9188  integer :: intr 
    9289  integer :: igtr 
    9390  integer :: ictr 
    94   integer :: i,j 
    95   character(len=100) :: file_ncdf      !< fichier netcdf issue des fichiers .dat 
     91!  character(len=100) :: file_ncdf      !< fichier netcdf issue des fichiers .dat 
    9692  real*8, dimension(:,:,:), pointer :: data_3D => null() ! donnees lues dans le netcdf 
    9793  real*8, dimension(:,:),pointer :: data_2D => null()    ! donnees lues dans le netcdf 
     
    231227implicit none 
    232228 
    233 real COEFT,COEFP       ! 
    234229!integer l              ! dumm index for loops on snapshots files  l=ITR,NTR-1 
    235230!cdc integer itr            ! index of the current snapshot file (change with time) 
    236231 
    237232integer mo 
    238 integer :: ictr 
    239 integer :: igtr 
    240233integer :: i,j 
    241234 
  • branches/iLoveclim/SOURCES/climat-perturb_mod-0.4.f90

    r27 r77  
    197197!  use module3d_phy 
    198198  implicit none 
    199   integer :: i,j,ift 
     199  integer :: i,ift 
    200200 
    201201  !       time en dehors des limites du fichier forcage 
  • branches/iLoveclim/SOURCES/climat_forcage_mois_mod.f90

    r27 r77  
    6464 
    6565  implicit none 
    66   integer :: i,j,mo,ti,tj   
    67   character(len=8) :: control   ! label to check clim. forc. file (filin) is usable 
    68   integer :: l                  ! In snapshot files:the first column is the mask, read but not used 
    69   real :: T_surf_ref            ! variable de travail calcul temp a l'instant t a la surface S 
    70   character(len=100) :: file_ncdf      !< fichier netcdf issue des fichiers .dat 
     66!  integer :: i,j,mo,ti,tj   
     67!  integer :: l                         ! In snapshot files:the first column is the mask, read but not used 
     68!  real :: T_surf_ref            ! variable de travail calcul temp a l'instant t a la surface S 
     69!  character(len=100) :: file_ncdf      !< fichier netcdf issue des fichiers .dat 
    7170  real*8, dimension(:,:,:), pointer :: data_3D => null() ! donnees lues dans le netcdf 
    7271 
  • branches/iLoveclim/SOURCES/conserv-mass-adv-diff_sept2009_mod.f90

    r4 r77  
    8080subroutine icethick3 
    8181 
     82!$ USE OMP_LIB 
     83 
    8284implicit none 
    8385real,dimension(nx,ny) :: Dminx,Dminy 
    8486real,dimension(nx,ny) :: Uxdiff,Uydiff           ! vitesse due a la diffusion 
    85 integer :: it1,it2,it3 
    86  
    8787real aux                                         ! pour le calcul du critere 
    8888real maxdia                                      ! sur le pas de temps 
     
    9494! Copie de H sur vieuxH         
    9595! -------------------- 
     96!$OMP PARALLEL 
     97!$OMP WORKSHARE 
    9698where (mk0(:,:).eq.0) 
    9799   vieuxH(:,:)=0. 
     
    101103   vieuxH(:,:)=H(:,:) 
    102104end where 
     105!$OMP END WORKSHARE 
    103106 
    104107! mk0 est le masque à ne jamais dépasser 
     
    112115jmaxdia=0 
    113116 
    114 ! attention limitation !  
     117! attention limitation ! 
     118!$OMP WORKSHARE  
    115119uxbar(:,:)=max(uxbar(:,:),-V_limit) 
    116120uxbar(:,:)=min(uxbar(:,:),V_limit) 
    117121uybar(:,:)=max(uybar(:,:),-V_limit) 
    118122uybar(:,:)=min(uybar(:,:),V_limit) 
     123!$OMP END WORKSHARE 
    119124 
    120125! le pas de temps est choisi pour rendre la matrice advective diagonale dominante 
    121 do i=2,nx-1 
    122    do j=2,ny-1 
     126!$OMP END PARALLEL 
     127!$OMP PARALLEL 
     128!$OMP DO PRIVATE(aux) 
     129!do i=2,nx-1 
     130!   do j=2,ny-1 
     131do j=2,ny-1 
     132  do i=2,nx-1 
    123133      aux = (abs(uxbar(i,j)) + abs(uxbar(i+1,j))) & 
    124134           + (abs(uybar(i,j)) + abs(uybar(i,j+1))) 
    125135      aux=aux*dx1*0.5 
     136      !$OMP CRITICAL 
    126137      if (aux.gt.maxdia) then 
    127138         maxdia=aux 
    128          imaxdia=i 
    129          jmaxdia=j 
     139!         imaxdia=i 
     140!         jmaxdia=j 
    130141      endif 
     142      !$OMP END CRITICAL 
    131143   end do 
    132144end do 
    133  
     145!$OMP END DO 
     146!$OMP END PARALLEL 
    134147 
    135148if (maxdia.ge.(testdiag/dtmax)) then 
     
    143156! avec le pas de temps long (dtt) 
    144157 
    145  call next_time(time,dt,dtt,dtmax,dtmin,isynchro,itracebug,num_tracebug) 
     158call next_time(time,dt,dtt,dtmax,dtmin,isynchro,itracebug,num_tracebug) 
    146159 
    147160 
    148161! calcul diffusivite - vitesse  
    149162!-----------------------------------------------------------------  
    150  
     163!$OMP PARALLEL 
     164!$OMP WORKSHARE 
    151165Uxdiff(:,:)=diffmx(:,:)*(-sdx(:,:))   ! vitesse qui peut s'exprimer en terme diffusif 
    152166Uydiff(:,:)=diffmy(:,:)*(-sdy(:,:))   ! dans les where qui suivent elle est limitee a uxbar 
     
    174188  uydiff(:,:)=max(uydiff(:,:),uybar(:,:))       ! pour tenir compte limitation utot 
    175189end where 
    176  
     190!$OMP END WORKSHARE 
    177191 
    178192 
     
    181195 
    182196if (adv_frac.gt.1.) then ! advection seulement 
     197   !$OMP WORKSHARE 
    183198   advmx(:,:)=Uxbar(:,:) 
    184199   advmy(:,:)=Uybar(:,:) 
    185200   Dmx(:,:)=0. 
    186201   Dmy(:,:)=0. 
    187  
     202   !$OMP END WORKSHARE 
    188203else if (abs(adv_frac).lt.1.e-8) then   ! diffusion seulement 
     204   !$OMP WORKSHARE 
    189205   advmx(:,:)=0. 
    190206   advmy(:,:)=0. 
    191  
     207   !$OMP END WORKSHARE 
    192208   ! D reste la valeur au dessus) 
    193209 
     
    199215! diffusion = ce qui peut être exprime en diffusion  
    200216!             + une partie (1-adv_frac) de l'advection 
    201  
     217   !$OMP WORKSHARE 
    202218   where ((abs(sdx(:,:)).gt.1.e-8).and.(Hmx(:,:).gt.2.))      ! cas general 
    203219       advmx(:,:)=(Uxbar(:,:)-Uxdiff(:,:))                   ! tout ce qui n'est pas diffusion 
     
    238254          dmy(:,:)=dminy(:,:)*H(:,:) 
    239255       end where 
    240  
    241  
    242  
    243256   elsewhere   ! zones trop plates ou trop fines 
    244257      Dmy(:,:)=0. 
    245258      advmy(:,:)=Uybar(:,:) 
    246259   end where 
    247  
     260   !$OMP END WORKSHARE 
    248261 
    249262else if (adv_frac.lt.0) then                  ! diffusif dans zones SIA, advectif ailleurs 
    250  
     263   !$OMP WORKSHARE 
    251264   zonemx(:,:)=flgzmx(:,:) 
    252265   zonemy(:,:)=flgzmy(:,:) 
     
    267280    advmy(:,:)=0. 
    268281   end where 
    269  
     282   !$OMP END WORKSHARE 
    270283end if 
    271284 
    272  
     285!$OMP WORKSHARE 
    273286where (flot(:,:) ) 
    274287   tabtest(:,:)=1. 
     
    276289   tabtest(:,:)=0. 
    277290end where 
    278  
     291!$OMP END WORKSHARE 
     292!$OMP END PARALLEL 
    279293!------------------------------------------------------------------detect 
    280294!!$ tabtest(:,:)=dmx(:,:) 
     
    377391 
    378392 
    379 debug_3D(:,:,45)=dmx(:,:) 
    380 debug_3D(:,:,46)=dmy(:,:) 
    381 debug_3D(:,:,47)=advmx(:,:) 
    382 debug_3D(:,:,48)=advmy(:,:) 
    383  
    384  
     393!debug_3D(:,:,45)=dmx(:,:) 
     394!debug_3D(:,:,46)=dmy(:,:) 
     395!debug_3D(:,:,47)=advmx(:,:) 
     396!debug_3D(:,:,48)=advmy(:,:) 
     397 
     398!$OMP PARALLEL 
     399!$OMP WORKSHARE 
    385400bilmass(:,:)=bm(:,:)-bmelt(:,:)                       ! surface and bottom mass balance 
     401!$OMP END WORKSHARE 
     402!$OMP END PARALLEL 
    386403 
    387404! diverses precription de l'epaisseur en fonction de l'objectif 
     
    389406 
    390407 
    391   call prescribe_fixed_points            ! ceux qui sont fixes pour tout le run (bords de grille, regions) 
    392  
    393  
    394     
     408call prescribe_fixed_points            ! ceux qui sont fixes pour tout le run (bords de grille, regions) 
    395409 
    396410 
     
    438452!!$end if 
    439453 
    440 debug_3D(:,:,87)=S(:,:)-debug_3D(:,:,88) 
    441  
    442 debug_3D(:,:,86)=Hp(:,:) 
    443 debug_3D(:,:,85)=i_Hp(:,:) 
     454!debug_3D(:,:,87)=S(:,:)-debug_3D(:,:,88) 
     455 
     456!debug_3D(:,:,86)=Hp(:,:) 
     457!debug_3D(:,:,85)=i_Hp(:,:) 
    444458 
    445459!!$where (i_hp(:,:).eq.1) 
     
    465479call resol_adv_diff_2D_vect (Dmx,Dmy,advmx,advmy,Hp,i_Hp,bilmass,vieuxH,H) 
    466480 
    467 ! remise à 0 des epaisseurs negatives, on garde la difference dans ablbord  
     481! remise à 0 des epaisseurs negatives, on garde la difference dans ablbord 
     482!$OMP PARALLEL 
     483!$OMP WORKSHARE  
    468484where (H(:,:).lt.0.) 
    469485   ablbord(:,:)=H(:,:)/dt 
     
    491507endwhere 
    492508 
    493  
    494509! eventuellement retirer apres spinup ou avoir un cas serac 
    495510Hdot(:,:)=(H(:,:)-vieuxH(:,:))/dt 
     511!$OMP END WORKSHARE 
    496512 
    497513if (igrdline.ne.3) then 
     514   !$OMP WORKSHARE 
    498515   Hdot(:,:)=min(Hdot(:,:),10.) 
    499516   Hdot(:,:)=max(Hdot(:,:),-10.) 
     517   !$OMP END WORKSHARE 
    500518endif 
    501519 
     520!$OMP WORKSHARE 
    502521where (i_hp(:,:).ne.1) 
    503522   H(:,:)=vieuxH(:,:)+Hdot(:,:)*dt 
     
    513532   Hdot(:,:)=0. 
    514533end where 
    515  
    516  
     534!$OMP END WORKSHARE 
     535!$OMP END PARALLEL 
    517536 
    518537!calul de l'ablation sur les bords (pourrait n'être appelé que pour les sorties courtes) 
  • branches/iLoveclim/SOURCES/deformation_mod_2lois.f90

    r4 r77  
    179179subroutine flow_general 
    180180 
     181  !$ USE OMP_LIB 
    181182  implicit none 
    182183 
     184  !$OMP PARALLEL 
     185  !$OMP WORKSHARE 
    183186  teta(:,:,:) = t(:,:,1:nz)-tpmp(:,:,:) 
    184  
    185  
     187  !$OMP END WORKSHARE 
     188 
     189  !$OMP DO COLLAPSE(2) 
    186190  do k=nz-1,1,-1 
    187191     do i=2,nx-1 
     
    192196     end do 
    193197  end do 
     198  !$OMP END DO 
     199  !$OMP END PARALLEL 
    194200 
    195201end subroutine flow_general 
     
    197203subroutine flowlaw (iiglen) 
    198204 
     205  !$ USE OMP_LIB 
    199206 
    200207  implicit none 
     
    216223!  real,dimension(nz) :: e          ! vertical coordinate in ice, scaled to h zeta 
    217224  real :: de= 1./(nz-1) 
     225! variables openmp :   
     226  !$  integer :: rang 
     227  !$ integer, dimension(:), allocatable :: tab_sync 
     228  !$ integer :: nb_taches 
     229 
    218230 
    219231  e(1)=0. 
    220232  e(nz)=1. 
     233   
     234  !$OMP PARALLEL PRIVATE(bat,q,aat,ssec,zetat) 
     235  !$ nb_taches = OMP_GET_NUM_THREADS() 
     236  !$OMP DO  
    221237  do k=1,nz 
    222238     if ((k.ne.1).and.(k.ne.nz)) e(k)=(k-1.)/(nz-1.) 
    223239  end do 
     240  !$OMP END DO NOWAIT 
    224241 
    225242  ! exposant de la loi de deformation utilisee : glen(iiglen) 
     
    230247  !    boucle pour btt a k=1 
    231248  ti1=273.15*273.15 
     249  !$OMP DO 
    232250  do j=2,ny-1 
    233251     do i=2,nx-1 
     
    239257     end do 
    240258  end do 
     259  !$OMP END DO 
    241260 
    242261  ! boucle pour tous les autres btt 
     262  !$OMP DO COLLAPSE(2) 
    243263  do k=nz-1,1,-1 
    244      do j=2,ny-1 
     264        do j=2,ny-1   
    245265        do i=2,nx-1   
    246266           if (h(i,j).gt.1.) then 
     
    361381     end do 
    362382  end do 
    363  
     383  !$OMP END DO NOWAIT 
     384   
    364385  !     integration de sa et s2a 
    365  
     386  !$OMP DO 
    366387  do j=1,ny 
    367388     do i=1,nx   
     
    371392     end do 
    372393  end do 
    373  
     394  !$OMP END DO 
     395  !$OMP END PARALLEL 
     396   
     397 
     398  ! Allocation et initialisation du tableau tab_sync 
     399  ! qui gere la synchronisation entre les differents threads 
     400  !$ allocate(tab_sync(0:nb_taches-1)) 
     401  !$ tab_sync(0:nb_taches-1) = 1 
     402  !$OMP PARALLEL private(i,j,k,rang) shared(tab_sync) 
     403  !$ rang = OMP_GET_THREAD_NUM()   
    374404  do k=nz-1,1,-1 
     405       ! Synchronisation des threads 
     406     !$     if (rang /= 0) then 
     407     !$        do 
     408     !$OMP FLUSH(tab_sync)  
     409     !$           if (tab_sync(rang-1)>=tab_sync(rang)+1) exit 
     410     !$        enddo 
     411     !$OMP FLUSH(sa) 
     412     !$OMP FLUSH(s2a) 
     413     !$     endif 
     414     !$OMP DO SCHEDULE(STATIC) 
    375415     do j=1,ny 
    376416        do i=1,nx 
     
    386426        end do 
    387427     end do 
    388   end do 
    389  
     428     !$OMP END DO NOWAIT 
     429!     ! Mis a jour du tableau tab_sync 
     430     !$     tab_sync(rang) = tab_sync(rang) + 1 
     431     !$OMP FLUSH(tab_sync,sa,s2a) 
     432  end do 
     433 
     434  !$OMP WORKSHARE 
    390435  !     cas particulier des bords 
    391436  sa(:,1,:,iiglen)=sa(:,2,:,iiglen) 
     
    402447  s2a(nx,:,:,iiglen)=s2a(nx-1,:,:,iiglen) 
    403448  btt(nx,:,:,iiglen)=btt(nx-1,:,:,iiglen) 
    404  
     449  !$OMP END WORKSHARE 
     450  !$OMP END PARALLEL 
     451   
    405452  ! calcul des moyennes sur les mailles staggered 
    406  
    407453  do k=1,nz 
    408454     tab2d=sa(:,:,k,iiglen) 
     
    417463     s2a_my(:,:,k,iglen)=tab_my 
    418464  end do 
    419  
     465  
    420466! attribution de debug_3d pour les sorties s2a 
    421467! loi 1 -> 190 dans description variable -> 90 dans debug_3d 
    422 debug_3d(:,:,90+iiglen-1) = s2a(:,:,1,iiglen) 
     468!debug_3d(:,:,90+iiglen-1) = s2a(:,:,1,iiglen) 
    423469 
    424470end subroutine flowlaw 
  • branches/iLoveclim/SOURCES/diffusiv-polyn-0.6.f90

    r4 r77  
    3434 
    3535!     =============================================================== 
    36  
     36!$ USE OMP_LIB 
    3737USE module3D_phy 
    3838 
     
    4444REAL :: INV_4DX ! inverse de dx pour eviter les divisions =1/(4*dx) 
    4545REAL :: INV_4DY ! inverse de dy pour eviter les divisions =1/(4*dy) 
    46 INTEGER :: ii 
    47 integer :: ll 
    4846 
    4947if (itracebug.eq.1)  call tracebug(' Entree dans routine diffusiv') 
     
    6058 
    6159! initialisation de la diffusion 
     60!$OMP PARALLEL 
     61!$OMP WORKSHARE 
    6262diffmx(:,:)=0. 
    6363diffmy(:,:)=0. 
    64  
     64!$OMP END WORKSHARE 
     65!$OMP END PARALLEL 
    6566 
    6667! calcul de SDX, SDY et de la pente au carre en mx et en my : 
     
    8182! Calcul de la vitesse de glissement, qu'elle soit calculee par diagno ou par sliding 
    8283!------------------------------------------------------------------------------------ 
    83 !  
     84!$OMP PARALLEL 
     85!$OMP WORKSHARE 
    8486where (flgzmx(:,:)) 
    8587    ubx(:,:) = uxflgz(:,:) 
     
    9395    uby(:,:) = ddby(:,:)* (-sdy(:,:)) 
    9496endwhere 
    95  
    96  
     97!$OMP END WORKSHARE 
     98!$OMP END PARALLEL 
    9799if (itracebug.eq.1) call tracebug(' diffusiv  apres calcul glissement') 
    98100 
     
    101103! Deformation SIA : Calcul de ddy  et ddx pour chaque valeur de iglen 
    102104!------------------------------------------------------------------ 
    103  
    104105do iglen=n1poly,n2poly 
    105106   glenexp=max(0.,(glen(iglen)-1.)/2.) 
    106  
    107  
     107  !$OMP PARALLEL  
     108  !$OMP DO 
    108109   do j=1,ny 
    109110      do i=1,nx 
    110  
    111111         if (.not.flotmy(i,j)) then !  On calcule quand la deformation même pour les ice streams 
    112112            ddy(i,j,iglen)=((slope2my(i,j)**  &  ! slope2my calcule en debut de routine 
    113113                 glenexp)*(rog)**glen(iglen)) & 
    114114                 *hmy(i,j)**(glen(iglen)+1) 
    115  
    116  
    117115         endif 
    118116      end do 
    119117   end do 
     118   !$OMP END DO 
     119   !$OMP END PARALLEL 
    120120end do 
     121 
     122 
    121123 
    122124do iglen=n1poly,n2poly 
    123125   glenexp=max(0.,(glen(iglen)-1.)/2.) 
    124  
    125  
     126   !$OMP PARALLEL 
     127   !$OMP DO 
    126128   do j=1,ny   
    127129      do i=1,nx 
    128  
    129130         if (.not.flotmx(i,j)) then      ! bug y->x corrige le 5 avril 2008 ( 
    130                                      
    131131            ddx(i,j,iglen)=((slope2mx(i,j)**  & ! slope2mx calcule en debut de routine 
    132132                 glenexp)*(rog)**glen(iglen)) & 
     
    135135      end do 
    136136   end do 
     137   !$OMP END DO 
     138   !$OMP END PARALLEL 
    137139end do 
    138140 
     141 
    139142! vitesse due a la déformation----------------------------------------------- 
    140  
    141  
     143!$OMP PARALLEL 
     144!$OMP DO 
    142145ydef: do j=2,ny 
    143146       do i=1,nx  
     
    166169    end do 
    167170   end do ydef 
    168  
     171!$OMP END DO 
     172 
     173!$OMP DO 
    169174xdef: do j=1,ny 
    170175       do i=2,nx  
     
    194199    end do 
    195200   end do xdef 
     201!$OMP END DO 
    196202 
    197203if (itracebug.eq.1) call tracebug(' diffusiv  avant limit') 
     
    201207 
    202208! la limitation selon x 
     209!$OMP WORKSHARE 
    203210where(.not.flgzmx(:,:)) 
    204211   uxbar(:,:)=min(uxbar(:,:),ultot) 
     
    211218   uybar(:,:)=max(uybar(:,:),-ultot) 
    212219end where 
     220!$OMP END WORKSHARE 
    213221 
    214222!    cas particulier des sommets ou il ne reste plus de neige. 
     223!$OMP DO 
    215224do j=2,ny-1 
    216225   do i=2,nx-1 
     
    223232   end do 
    224233end do 
    225  
     234!$OMP END DO 
     235!$OMP END PARALLEL 
    226236if (itracebug.eq.1)  call tracebug(' fin diffusiv ') 
    227237 
  • branches/iLoveclim/SOURCES/dragging_hwat-contigu_mod.f90

    r4 r77  
    2222 
    2323implicit none 
    24 logical,dimension(nx,ny) :: fleuvemx 
    25 logical,dimension(nx,ny) :: fleuvemy 
     24!logical,dimension(nx,ny) :: fleuvemx 
     25!logical,dimension(nx,ny) :: fleuvemy 
    2626real,dimension(nx,ny) :: hwatmx 
    2727real,dimension(nx,ny) :: hwatmY 
  • branches/iLoveclim/SOURCES/dragging_hwat_contmaj_mod.f90

    r9 r77  
    2727 
    2828implicit none 
    29 logical,dimension(nx,ny) :: fleuvemx 
    30 logical,dimension(nx,ny) :: fleuvemy 
     29!logical,dimension(nx,ny) :: fleuvemx 
     30!logical,dimension(nx,ny) :: fleuvemy 
    3131logical,dimension(nx,ny) :: fleuve 
    3232logical,dimension(nx,ny) :: cote 
     
    9494tob_ile=betamax/2. 
    9595moteurmax=toblim 
     96betamax_2d(:,:)=betamax 
    9697 
    9798!------------------------------------------------------------------- 
  • branches/iLoveclim/SOURCES/dragging_hwat_sedim_mod.f90

    r45 r77  
    99 
    1010implicit none 
    11 logical,dimension(nx,ny) :: fleuvemx 
    12 logical,dimension(nx,ny) :: fleuvemy 
     11!logical,dimension(nx,ny) :: fleuvemx 
     12!logical,dimension(nx,ny) :: fleuvemy 
    1313logical,dimension(nx,ny) :: fleuve 
    1414logical,dimension(nx,ny) :: fleuve_sedim 
  • branches/iLoveclim/SOURCES/dragging_hwatermax_0.2_mod.f90

    r4 r77  
    106106               (((hwater(i,j)+hwater(i-1,j))*0.5.gt.hwatstream) & 
    107107               .and..not.flotmx(i,j)) 
    108  
     108                  fleuvemx(i,j)=gzmx(i,j) 
    109109 
    110110          ! calcul du frottement basal (ce bloc etait avant dans neffect) 
     
    130130               (((hwater(i,j)+hwater(i,j-1))*0.5.gt.hwatstream) & 
    131131               .and..not.flotmy(i,j)) 
     132          fleuvemy(i,j)=gzmx(i,j) 
    132133 
    133134          ! calcul du frottement basal (ce bloc etait avant dans neffect) 
  • branches/iLoveclim/SOURCES/eaubasale-0.5_mod.f90

    r4 r77  
    133133subroutine eaubasale !(pwater)   version correspondant à la thèse de Vincent 
    134134  ! A terme, il faudrait en faire un module  
    135  
    136  
     135!$ USE OMP_LIB 
     136!~   integer :: t1,t2,ir 
     137!~   real                           :: temps, t_cpu_0, t_cpu_1, t_cpu, norme   
     138!~    
     139!~    ! Temps CPU de calcul initial. 
     140!~    call cpu_time(t_cpu_0) 
     141!~    ! Temps elapsed de reference. 
     142!~    call system_clock(count=t1, count_rate=ir) 
    137143 
    138144 
     
    141147  if (itracebug.eq.1)  call tracebug(' Entree dans routine eau basale') 
    142148 
     149!$OMP PARALLEL 
     150!$OMP WORKSHARE 
    143151  vieuxhwater(:,:) = hwater(:,:) 
    144152  kond(:,:) = kond0*SECYEAR  
     
    148156  klimit(:,:)=0 
    149157  limit_hw(:,:)=-9999. 
     158!$OMP END WORKSHARE 
     159!$OMP DO   
    150160  do j=1,ny 
    151161     do i=1,nx 
     
    167177     end do 
    168178  end do 
    169  
    170  
    171  
    172   do i=1,nx 
    173      do j=2,ny-1 
     179!$OMP END DO 
     180 
     181!$OMP DO 
     182!  do j=2,ny-1 
     183  do j=1,ny 
     184     do i=1,nx 
    174185        bmelt_w(i,j)=bmelt(i,j)*rofresh/ro     
    175186        hwater(i,j)=max(hwater(i,j),0.) 
    176187        hw(i,j)=min(hwater(i,j),hmax_wat)  
    177  
    178188     enddo 
    179189  enddo 
    180  
     190!$OMP END DO 
     191!$OMP END PARALLEL 
    181192 
    182193  ecoul:  if (ecoulement_eau) then 
    183194     !  print*,'===dans eaubasale t, dt',time,dt,'kond 1.0e-5' 
    184195     !   write(6,*) 'entree ecoulement_eau' 
    185  
    186      do J=1,NY 
    187         do I=1,NX 
     196     !$OMP PARALLEL 
     197     !$OMP DO 
     198     do j=1,ny 
     199        do i=1,nx 
    188200           tetar(i,j)=(xlong(i,j))*PI/180. ! pourrait etre fait une fois pour toute 
    189201           PGX(I,J)=101*sin(tetar(i,j))*1.e-2                  
     
    200212        enddo 
    201213     enddo 
     214!$OMP END DO 
    202215 
    203216     ! sorties debug 17 juillet 2007 
    204      debug_3D(:,:,5)=pot_w(:,:) 
    205      debug_3D(:,:,6)=pot_f(:,:) 
    206      debug_3D(:,:,7)=pot_w(:,:)+rofreshg*hwater(:,:) 
    207      debug_3D(:,:,8)=hwater(:,:) 
    208  
     217!     debug_3D(:,:,5)=pot_w(:,:) 
     218!     debug_3D(:,:,6)=pot_f(:,:) 
     219!     debug_3D(:,:,7)=pot_w(:,:)+rofreshg*hwater(:,:) 
     220!     debug_3D(:,:,8)=hwater(:,:) 
     221!$OMP DO 
    209222     do j=2,ny 
    210223        do i=2,nx 
    211224           if (H(i,j).gt.25.) then 
    212  
    213225              !           calcul du gradient de pression 
    214               ! _______________________________________ 
    215  
    216226              if (flotmx(i,j)) then  
    217227                 pgx(i,j)=(pot_f(i-1,j)-pot_f(i,j))/dx 
     
    225235                 pgy(i,j)=(pot_w(i,j-1)-pot_w(i,j))/dy 
    226236              endif 
    227  
    228  
    229237           endif 
    230  
    231  
    232238           pgx(i,j)=pgx(i,j)/rofreshg   ! pour passer pgx sans unité 
    233239           pgy(i,j)=pgy(i,j)/rofreshg       
    234240        end do 
    235241     end do 
    236  
    237  
     242!$OMP END DO 
     243!$OMP END PARALLEL 
    238244 
    239245     if (nt.gt.0) then 
    240246        if (dt.gt.0.)  then !!!!!!!!!!!!!!!!!!!!!!relax_water si dt>0 
    241  
    242  
    243247           !------------------------------------------------------------------------- 
    244248           ! les points de la grounding line ont une conductivité hydraulique élevée 
    245249           ! même si la base est froide.  modif catritz 18 janvier 2005 
    246250           !open(166,file='erreur_eau') 
    247  
    248            do J=2,NY-1 
    249               do I=2,NX-1 
    250  
     251!$OMP PARALLEL 
     252!$OMP DO 
     253           do j=2,Ny-1 
     254              do i=2,Nx-1 
    251255                 ! cond=0 si glace froide et pas sur la grounding line 
    252  
    253                  if ((IBASE(I,J).eq.1).and.   & 
     256                 if ((IBASE(i,j).eq.1).and.   & 
    254257                      (.not.flot(i,j-1)).and.(.not.flot(i,j+1)).and.  & 
    255                       (.not.flot(i-1,j)).and.(.not.flot(i+1,j)))  KOND(I,J)=0.! 1.0e-5 
     258                      (.not.flot(i-1,j)).and.(.not.flot(i+1,j)))  KOND(i,j)=0.! 1.0e-5 
    256259 
    257260                 ! cond infinie quand epaisseur faible et glace flottante 
     
    267270 
    268271                 ! conductivite effective (conductivité * taille du tuyau en m2/an)  
    269  
    270272                 keff(i,j)=kond(i,j)*hw(i,j) 
    271273              end do 
    272274           end do 
    273  
     275!$OMP END DO 
    274276           ! condition sur les bords de la grille 
    275  
     277!$OMP WORKSHARE 
    276278           kond(1,:)=kondmax 
    277279           kond(nx,:)=kondmax 
    278280           kond(:,1)=kondmax 
    279281           kond(:,ny)=kondmax 
    280  
    281            ! fin de la modif 18 janvier 2005--------------------------------------- 
    282  
    283282           vieuxhwater(:,:) = hwater(:,:) 
    284  
    285  
     283!$OMP END WORKSHARE 
     284!$OMP END PARALLEL 
     285!!$OMP SINGLE 
    286286           call relaxation_waterdif(nxlocal,nylocal,dt,dx,vieuxhwater,limit_hw,klimit,bmelt_w,infiltr,pgx,pgy,keff,keffmax,hwater) 
    287  
    288  
    289  
     287!!$OMP END SINGLE 
    290288        else 
    291289           !         print*,'dt=',dt,'pas de relax_water' 
     
    303301 
    304302     ! on le fait avant les butoirs pour justement pouvoir les estimer 
    305  
     303!$OMP PARALLEL 
    306304     if (dt.gt.0.) then 
    307305        !         print*,'dt=',dt,'pas de relax_water' 
     306        !$OMP DO 
    308307        do j=1,ny 
    309308           do i=1,nx 
     
    311310           end do 
    312311        end do 
     312        !$OMP END DO 
    313313     endif 
    314314 
    315  
     315!$OMP DO PRIVATE(Zflot) 
    316316     do i=1,nx 
    317317        do j=1,ny 
     
    353353              !          Hwater(i,j)=hw(i,j) 
    354354              !          pwater(i,j)=rog*H(I,J)*(hw(I,J)/hmax_wat)**(3.5) 
    355  
    356  
    357  
    358  
    359355           endif 
    360  
    361356 
    362357           ! bloc qui pourrait servir pour mettre l'eau encore plus sous pression 
     
    365360           !             pwater(i,j)=pwater(i,j)+(HWATER(i,j)-poro_till*hmax_till)/(compress_w*hmax_till) 
    366361           !            endif 
    367  
    368  
    369  
    370  
    371362        end do 
    372363     end do 
    373  
     364!$OMP END DO 
    374365 
    375366     !   ************ valeurs de HWATER pour les coins ******** 
     
    381372 
    382373     ! pour les sorties de flux d'eau 
     374     !$OMP DO 
    383375     do j=2,ny 
    384376        do i=2,nx 
     
    390382              phiwx(i,j)=phiwx(i,j)*2*(keff(i,j)*keff(i-1,j))/(keff(i,j)+keff(i-1,j)) 
    391383           endif 
    392  
    393384           ! ligne pour sortir les pgx 
    394  
    395385           pgx(i,j)=(pgx(i,j)+(hwater(i-1,j)-hwater(i,j))/dx) 
    396386        end do 
    397387     end do 
    398  
     388     !$OMP END DO 
     389     !$OMP DO 
    399390     do j=2,ny 
    400391        do i=2,nx 
     
    406397           endif 
    407398           pgy(i,j)=(pgy(i,j)+(hwater(i,j-1)-hwater(i,j))/dx) 
    408  
    409399        enddo 
    410400     enddo 
    411  
    412  
     401     !$OMP END DO 
     402     !$OMP END PARALLEL 
    413403 
    414404  else  ! partie originellement dans icetemp à mettre dans un autre module 
     
    416406 
    417407     if (ISYNCHRO.eq.1) then 
     408        !$OMP PARALLEL 
     409        !$OMP DO 
    418410        do j=1,ny 
    419411           do i=1,nx 
     
    429421           end do 
    430422        end do 
     423        !$OMP END DO 
     424        !$OMP END PARALLEL 
    431425     end if 
     426      
    432427  endif ecoul 
     428 
     429!~   ! Temps elapsed final 
     430!~   call system_clock(count=t2, count_rate=ir) 
     431!~   temps=real(t2 - t1,kind=4)/real(ir,kind=4) 
     432!~   ! Temps CPU de calcul final 
     433!~   call cpu_time(t_cpu_1) 
     434!~   t_cpu = t_cpu_1 - t_cpu_0 
     435 
     436!~   ! Impression du resultat. 
     437!~   print '(//,3X,"Valeurs de nx et ny : ",I5,I5/,              & 
     438!~            & 3X,"Temps elapsed       : ",1PE10.3," sec.",/, & 
     439!~            & 3X,"Temps CPU           : ",1PE10.3," sec.",/, & 
     440!~            & 3X,"Norme (PB si /= 0)  : ",1PE10.3,//)', & 
     441!~            nx,ny,temps,t_cpu,norme 
    433442 
    434443  return 
  • branches/iLoveclim/SOURCES/flottab2-0.7.f90

    r4 r77  
    1616module flottab_mod 
    1717   
     18  !$ USE OMP_LIB 
    1819USE module3D_phy 
    1920use module_choix 
     
    112113! cas particulier des runs paleo ou on impose un masque grounded 
    113114 
     115!$OMP PARALLEL PRIVATE(archim,surnet) 
    114116 if (igrdline.eq.2) then 
     117    !$OMP WORKSHARE 
    115118    where ( mk_init(:,:).eq.1)                 ! pose 
    116119       flot(:,:) = .False. 
     
    120123       flot(:,:) = .True. 
    121124    end where 
     125    !$OMP END WORKSHARE 
    122126 end if 
    123127 
     
    129133 
    130134       appel_new_flot=.false. 
     135       !$OMP DO 
    131136       do j=1,ny 
    132137          do i=1,nx 
     
    136141          enddo 
    137142       enddo 
    138  
     143       !$OMP END DO 
     144        
    139145! ICE(:,:)=(H(:,:).gt.1) ! ice=.true. si epaisseur > 1m 
    140146 
     147      !$OMP WORKSHARE 
    141148      ICE(:,:)=0 
    142149      front(:,:)=0 
     
    148155      cotemy(:,:)=.false. 
    149156      boost=.false. 
     157      !$OMP END WORKSHARE 
    150158 
    151159! fin de l'initialisation 
     
    155163! ------------------------------------- 
    156164 
    157  
     165 !$OMP DO 
    158166 do j=1,ny 
    159167   do i=1,nx 
     
    223231    end do 
    224232 end do 
    225  
     233 !$OMP END DO 
    226234 
    227235!!$ do i=1,nx 
     
    240248 
    241249!----------------------------------------------------------------------- 
    242  
     250 !$OMP DO 
    243251domain_x: do j=1,ny        
    244252         do i=2,nx 
     
    280288          end do 
    281289       end do domain_x 
    282  
    283 if (itracebug.eq.1)  call tracebug('  routine flottab apres domain_x') 
     290 !$OMP END DO 
     291!if (itracebug.eq.1)  call tracebug('  routine flottab apres domain_x') 
    284292 
    285293!     3_y    B- NOUVELLE DEFINITION DE FLOTMY 
    286294!         -------------------------------- 
     295 !$OMP DO 
    287296domain_y: do j=2,ny        
    288297         do i=1,nx 
     
    318327          end do 
    319328       end do domain_y 
    320  
     329 !$OMP END DO 
    321330 
    322331 
     
    351360!      4- determination des iles 
    352361!      ------------------------- 
    353   
     362          !$OMP WORKSHARE 
    354363          ilemx(:,:)=.false. 
    355364          ilemy(:,:)=.false. 
    356  
    357 !       selon x  
     365          !$OMP END WORKSHARE 
     366 
     367!       selon x 
     368  !$OMP DO 
    358369ilesx:  do j=2,ny-1 
    359370           do i=3,nx-2 
     
    404415         end do 
    405416      end do ilesx 
    406  
    407 !       selon y  
     417   !$OMP END DO 
     418 
     419!       selon y 
     420   !$OMP DO 
    408421ilesy: do j=3,ny-2 
    409422           do i=2,nx-1 
     
    452465         end do 
    453466      end do ilesy 
     467    !$OMP END DO 
     468    !$OMP END PARALLEL 
    454469! fin des iles 
    455470 
     
    479494 
    480495!   6- calcule les vitesses des points qui sont devenus gzm 
    481           
     496!$OMP PARALLEL 
     497!$OMP DO          
    482498do j=1,ny 
    483499   do i=2,nx-1 
     
    492508   end do 
    493509end do 
    494  
     510!$OMP END DO 
     511 
     512!$OMP DO  
    495513do j=2,ny-1 
    496514   do i=1,nx 
     
    504522    end do 
    505523end do 
    506  
     524!$OMP END DO 
    507525 
    508526 
     
    511529 
    512530if (nt.ge.2) then   ! pour ne pas faire ce calcul lors du premier passage 
     531   !$OMP WORKSHARE 
    513532   uxbar(:,:)=uxs1(:,:) 
    514    uybar(:,:)=uys1(:,:)  
     533   uybar(:,:)=uys1(:,:) 
     534   !$OMP END WORKSHARE 
    515535endif 
    516536 
     537!$OMP WORKSHARE 
    517538flgzmx(:,:)=(marine.and.(flotmx(:,:).or.gzmx(:,:).or.ilemx(:,:)))   & 
    518539     .or.(.not.marine.and.flotmx(:,:)) 
    519540flgzmy(:,:)=(marine.and.(flotmy(:,:).or.gzmy(:,:).or.ilemy(:,:)))   & 
    520541     .or.(.not.marine.and.flotmy(:,:)) 
    521  
     542!$OMP END WORKSHARE 
    522543 
    523544 
     
    526547!       fbm est vrai si le point est flottant mais un des voisins est pose  
    527548!_________________________________________________________________________ 
     549!$OMP DO 
    528550do j=2,ny-1 
    529551  do i=2,nx-1 
     
    536558  end do 
    537559end do 
    538  
     560!$OMP END DO 
    539561 
    540562 
     
    552574!!$end do 
    553575 
     576!$OMP WORKSHARE 
    554577where (flot(:,:)) 
    555578   where (H(:,:).gt.(1.1))  
     
    565588   end where 
    566589end where 
     590!$OMP END WORKSHARE 
     591!$OMP END PARALLEL 
    567592 
    568593call DETERMIN_TACHE  
     
    581606!----------------------------------------------! 
    582607!On determine les differents ice strean/shelf  ! 
    583       call DETERMIN_TACHE                      ! 
     608!      call DETERMIN_TACHE                      ! 
    584609!----------------------------------------------! 
    585610 
     
    594619!!$end if 
    595620 
    596 ! / test aurel 
    597 debug_3d(:,:,43)=table_out(:,:) 
    598  
    599 iceberg(:)=.true. 
    600 do j=1,ny 
    601    do i=1,nx 
    602       if(.not.flot(i,j)) then 
    603          iceberg(table_out(i,j))=.false. 
    604       end if 
    605    end do 
    606 end do 
    607  
    608 do j=1,ny 
    609    do i=1,nx 
    610  
    611       debug_3d(i,j,56)=nb_pts_tache(table_out(i,j)) 
    612       if (iceberg(table_out(i,j))) then 
    613          debug_3d(i,j,57)=1 
    614       else 
    615          debug_3d(i,j,57)=0        
    616       end if 
    617    end do 
    618 end do 
    619 ! fin test aurel / 
    620  
    621  
    622621!ice(:,:)=0   Attention, voir si ca marche toujours pour l'Antarctique et heminord ! 
    623622 
    624623!On compte comme englacé uniquement les calottes dont une partie est posée       
    625  
    626 do i=3,nx-2 
    627    do j=3,ny-2 
     624!$OMP PARALLEL PRIVATE(smax_,smax_coord,smax_i,smax_j,mask_tache_ij) 
     625!$OMP DO 
     626do j=3,ny-2 
     627   do i=3,nx-2 
    628628test1:  if (.not.iceberg(table_out(i,j))) then ! on est pas sur un iceberg  
    629629         if (nb_pts_tache(table_out(i,j)).ge.1) then 
     
    692692   end do 
    693693end do 
    694  
     694!$OMP END DO 
     695!$OMP END PARALLEL 
    695696 
    696697!---------------------------------------------- 
     
    717718!print*, 'front',front(50,30),ice(50,30),flotmx(i,j),uxbar(i,j) 
    718719 
    719  
    720  
    721720end subroutine flottab 
    722721!--------------------------------------------------------------------   
     
    726725!> 
    727726subroutine determin_tache 
     727 
     728!$ USE OMP_LIB 
    728729 
    729730implicit none 
     
    746747enddo 
    747748!      table_in  = .false. 
    748  
     749!$OMP PARALLEL 
     750!$OMP WORKSHARE 
    749751table_out(:,:) = 0 
    750752iceberg(:)  = .true. 
    751753icetrim (:) = .true. 
    752754nb_pts_tache(:) = 0 
    753  
     755!$OMP END WORKSHARE 
     756!$OMP END PARALLEL 
    754757!    open(unit=100,file="tache.data",status='replace') 
    755758 
    756759! 2-reperage des taches 
    757760!---------------------- 
    758 do i=2,nx-1 
    759   do j=2,ny-1 
     761 
     762do j=2,ny-1 
     763  do i=2,nx-1 
    760764 
    761765 
    762766 
    763767     IF (ice(i,j).ge.1) THEN ! on est sur la glace-----------------------------! 
    764  
     768                         
    765769        if ((ice(i-1,j).ge.1).or.(ice(i,j-1).ge.1)) then   !masque de 2 cases adjacentes 
    766770           !      un des voisins est deja en glace 
     
    773777              if (mask(indice).gt.0) label=min(label,mask(indice)) 
    774778           enddo 
     779!cdc       label=min(label,minval(mask(:), mask=mask > 0)) 
    775780 
    776781           !on fixe la valeur de la tache voisine minimun au point etudie (via label) 
     
    829834! On reorganise compt en ecrivant le numero de la tache fondamentale 
    830835! i.e. du plus petit numero present sur la tache (Sans utiliser de recursivité) 
    831 ! On indique aussi le nb de point que contient chaque taches (nb_pts_tache)         
     836! On indique aussi le nb de point que contient chaque taches (nb_pts_tache) 
     837 
    832838do indice=1,label_max 
    833839   vartemp = compt(indice) 
     
    839845enddo 
    840846 
    841 do i=1,nx 
    842    do j=1,ny 
     847!$OMP PARALLEL 
     848!$OMP DO REDUCTION(+:nb_pts_tache) 
     849do j=1,ny 
     850   do i=1,nx 
    843851      if (table_out(i,j).ne.0) then 
    844852         table_out(i,j)=compt(table_out(i,j))   
     
    847855   enddo 
    848856enddo 
    849  
    850  
     857!$OMP END DO 
     858!$OMP END PARALLEL 
    851859 
    852860 
     
    879887!> 
    880888subroutine determin_front 
    881  
     889!!$ USE OMP_LIB 
    882890integer :: i_moins1,i_plus1,i_plus2 
    883891integer :: j_moins1,j_plus1,j_plus2 
    884892       
    885       do i=3,nx-2 
    886        do j=3,ny-2 
     893      !$OMP PARALLEL 
     894      !$OMP DO 
     895      do j=3,ny-2 
     896        do i=3,nx-2 
    887897 
    888898 surice:if  (ice(i,j).eq.0) then 
     
    936946       end do 
    937947      end do 
    938  
     948      !$OMP END DO 
     949      !$OMP ENd PARALLEL 
    939950 
    940951!!$call detect_assym(nx,ny,0,41,1,0,1,0,H,itestf) 
     
    949960 
    950961!     print*,'dans remplissage baies',time 
     962        
    951963baies: do k=1,2 
     964!$OMP PARALLEL 
     965!$OMP DO PRIVATE(i_moins1,j_moins1,i_plus1,j_plus1,i_plus2,j_plus2) 
    952966do j=1,ny 
    953967   do i=1,nx 
     
    984998   end do 
    985999end do 
     1000!$OMP END DO 
     1001!$OMP END PARALLEL 
    9861002end do baies 
    9871003 
     
    9951011!!$end if 
    9961012 
    997  
    998 do i=2,nx-1 
    999    do j=2,ny-1 
     1013!$OMP PARALLEL 
     1014!$OMP DO 
     1015do j=2,ny-1 
     1016   do i=2,nx-1 
    10001017 
    10011018      if (ice(i,j).eq.1) then     !         test si ice=1 
     
    10091026   end do 
    10101027end do 
     1028!$OMP END DO 
    10111029 
    10121030! traitement des bords. On considere que l'exterieur n'a pas de glace 
    10131031! attention ce n'est vrai que sur la grande grille 
    10141032 
    1015  
     1033!$OMP DO PRIVATE(i) 
    10161034do j=2,ny-1 
    10171035   i=1 
     
    10201038   front(i,j)=(ice(i-1,j)+ice(i,j+1)+ice(i,j-1)) 
    10211039end do 
    1022  
     1040!$OMP END DO  
     1041 
     1042!$OMP DO PRIVATE(j) 
    10231043do i=2,nx-1 
    10241044   j=1  
     
    10271047   front(i,j)=(ice(i-1,j)+ice(i+1,j)+ice(i,j-1)) 
    10281048end do 
     1049!$OMP END DO  
    10291050 
    10301051! traitement des coins 
     
    10491070!   si ces deux taches sont posées (ou une des deux), il n'y a pas assez de conditions aux limites 
    10501071 
    1051  
     1072!$OMP DO  
    10521073do j=1,ny 
    10531074   do i=1,nx-1 
     
    10621083   end do 
    10631084end do 
    1064  
     1085!$OMP END DO 
     1086 
     1087!$OMP DO  
    10651088do j=1,ny-1 
    10661089   do i=1,nx 
     
    10751098   end do 
    10761099end do 
     1100!$OMP END DO 
    10771101 
    10781102!isolx signifie pas de voisins en x 
     
    10821106 
    10831107! calcul de frontfacex et isolx 
     1108!$OMP DO 
    10841109do j=1,ny 
    10851110   do i=2,nx-1 
     
    11011126   end do 
    11021127end do 
     1128!$OMP END DO 
    11031129 
    11041130! calcul de frontfacey et isoly 
     1131!$OMP DO 
    11051132do j=2,ny-1 
    11061133   do i=1,nx 
     
    11221149   end do 
    11231150end do 
    1124  
     1151!$OMP END DO 
    11251152 
    11261153 
     
    11281155! attention ce n'est vrai que sur la grande grille 
    11291156 
    1130  
     1157!$OMP DO PRIVATE(i) 
    11311158do j=2,ny-1 
    11321159   i=1 
     
    11471174   end if 
    11481175end do 
    1149  
     1176!$OMP END DO 
     1177 
     1178!$OMP DO PRIVATE(j) 
    11501179do i=2,nx-1 
    11511180   j=1  
     
    11661195   end if 
    11671196end do 
    1168  
    1169  
     1197!$OMP END DO 
     1198!$OMP END PARALLEL 
    11701199 
    11711200return 
  • branches/iLoveclim/SOURCES/initial-0.3.f90

    r35 r77  
    3030  use sorties_ncdf_grisli 
    3131  use util_recovery 
    32   character(len=80) :: filinit 
    3332 
    3433  !------------------------------------------------------------------------------------- 
  • branches/iLoveclim/SOURCES/litho-0.4.f90

    r4 r77  
    3737 
    3838  
    39       subroutine litho 
     39subroutine litho 
     40  !$ USE OMP_LIB 
     41  USE module3D_phy 
     42  USE param_phy_mod 
     43  USE ISO_DECLAR ! module de declaration des variables specifiques a l'isostasie 
    4044 
    41       USE module3D_phy 
    42       USE param_phy_mod 
    43       USE ISO_DECLAR ! module de declaration des variables specifiques a l'isostasie 
     45  implicit none 
    4446 
    45       implicit none 
    46  
    47       INTEGER :: IP,JP,LPX,LPY,II,SOM1,SOM2 
    48       REAL, dimension(:,:), allocatable :: WLOC 
     47  INTEGER :: II,SOM1,SOM2 
     48  REAL, dimension(:,:), allocatable :: WLOC 
    4949 
    5050 
    51 !----- allocation de WLOC  et de croix ----------- 
     51  !----- allocation de WLOC  et de croix ----------- 
    5252 
    53       if (.not.allocated(WLOC)) THEN 
    54          allocate(WLOC(-LBLOC:LBLOC,-LBLOC:LBLOC),stat=err) 
    55          if (err/=0) then 
    56             print *,"Erreur a l'allocation du tableau WLOC",err 
    57             stop 4 
    58          end if 
    59       end if 
     53  if (.not.allocated(WLOC)) THEN 
     54     allocate(WLOC(-LBLOC:LBLOC,-LBLOC:LBLOC),stat=err) 
     55     if (err/=0) then 
     56        print *,"Erreur a l'allocation du tableau WLOC",err 
     57        stop 4 
     58     end if 
     59  end if 
    6060 
    61 !----- fin de l'allocation -------------- 
     61  !----- fin de l'allocation -------------- 
    6262 
    63 !     calcul de la deflexion par sommation des voisins appartenant 
    64 !     au bloc de taille 2*LBLOC 
    65        som1=0. 
    66        som2=0. 
     63  !     calcul de la deflexion par sommation des voisins appartenant 
     64  !     au bloc de taille 2*LBLOC 
     65  som1=0. 
     66  som2=0. 
    6767 
    68 !      On somme aussi les contributions des points exterieurs au domaine 
    69 !      lorsque la charge est due a l'ocean. On suppose alors  que 
    70 !      ces points ont la meme charge que les limites 
    71  
    72 boucleij : do J=1,NY 
    73            do I=1,NX 
     68  !      On somme aussi les contributions des points exterieurs au domaine 
     69  !      lorsque la charge est due a l'ocean. On suppose alors  que 
     70  !      ces points ont la meme charge que les limites 
     71  !$OMP PARALLEL 
     72  !$OMP DO PRIVATE(Wloc) 
     73  boucleij : do J=1,NY 
     74     do I=1,NX 
    7475 
    7576 
    76               W1(I,J)=0.  
    77               ii=0 
     77        W1(I,J)=0.  
     78 !   ii=0 
    7879 
    79 ! Wloc : enfoncement centre sur ij du a chaque charges autour 
    80       Wloc(:,:) = We(:,:) * charge(i-lbloc:i+lbloc,j-lbloc:j+lbloc) 
     80 ! Wloc : enfoncement centre sur ij du a chaque charges autour 
     81        Wloc(:,:) = We(:,:) * charge(i-lbloc:i+lbloc,j-lbloc:j+lbloc) 
    8182 
    8283 
    83       W1(i,j) = sum (Wloc(:,:))   ! effet en ij de toutes les charges autour (distance < lbloc) 
     84        W1(i,j) = sum (Wloc(:,:))   ! effet en ij de toutes les charges autour (distance < lbloc) 
    8485 
    85 !    ------------------------ FIN DE L'INTEGRATION SUR LE PAVE LBLOC 
    86               som1=som1+W1(I,J) 
    87               som2=som2-charge(I,J)/ROMG 
     86 !    ------------------------ FIN DE L'INTEGRATION SUR LE PAVE LBLOC 
     87 !   som1=som1+W1(I,J) 
     88 !   som2=som2-charge(I,J)/ROMG 
    8889 
    89       end do 
    90       end do  boucleij 
    91         
    92 !     write(6,*)'enfoncement total avec rigidite de la lithosphere:', 
    93 !    &  som1 
    94 !     write(6,*)'enfoncement total avec isostasie locale :', 
    95 !    &  som2 
     90     end do 
     91  end do  boucleij 
     92  !$OMP END DO 
     93  !$OMP END PARALLEL 
     94 
     95  !     write(6,*)'enfoncement total avec rigidite de la lithosphere:', 
     96  !    &  som1 
     97  !     write(6,*)'enfoncement total avec isostasie locale :', 
     98  !    &  som2 
    9699 
    97100 
    98     end subroutine litho 
    99        
     101end subroutine litho 
     102 
  • branches/iLoveclim/SOURCES/mix-SIA-L1_mod.f90

    r4 r77  
    5353subroutine mix_SIA_L1 
    5454 
     55!$ USE OMP_LIB 
     56! variables parallelisation openMP 
     57!!$  integer :: rang ,nb_taches 
    5558 
    5659! subroutine qui associe SIA et L1 
     
    5962 
    6063! use module_choix 
    61     if (itracebug.eq.1)  call tracebug(' routine mix_SIA_L1') 
     64if (itracebug.eq.1)  call tracebug(' routine mix_SIA_L1') 
    6265 
    6366debug_3D(:,:,9)=0. 
     
    7376   ! que celles du L1. On garde le L1 comme vitesse basale. 
    7477   ! version utilisee pour les runs MIS11 de Cairns 
    75  
     78        !$OMP PARALLEL 
     79   !$OMP DO 
    7680   do j=2,ny 
    7781      do i=2,nx 
     
    9599      end do 
    96100   end do 
     101   !$OMP END DO 
     102        !$OMP END PARALLEL 
    97103 
    98104else if (i_resolmeca.eq.2) then 
    99105 
    100106! addition systematique 
    101  
     107!       !$OMP PARALLEL PRIVATE(rang,nb_taches) 
     108!       !$ rang=OMP_GET_THREAD_NUM() 
     109!       !$ nb_taches=OMP_GET_NUM_THREADS() 
     110!       !$OMP DO SCHEDULE(STATIC,NY/nb_taches) 
     111        !$OMP PARALLEL 
     112   !$OMP DO 
    102113   do j=2,ny 
    103114      do i=2,nx 
     115! test sur tout le tableau : 
    104116         if (flgzmx(i,j)) then  
    105             debug_3D(i,j,11)=uxflgz(i,j) 
     117!            debug_3D(i,j,11)=uxflgz(i,j) 
    106118            uxbar(i,j)=uxflgz(i,j)+uxdef(i,j)                       ! on ajoute la deform. SIA 
    107119            ubx(i,j) = uxflgz(i,j) 
    108             do k=1,nz 
     120!            do k=1,nz 
     121!               ux(i,j,k)=ux(i,j,k)-ux(i,j,nz)+uxflgz(i,j)           ! remplace le glissement par uxflgz 
     122!            end do 
     123 
     124!            debug_3D(i,j,9)=uxdef(i,j)                    
     125         endif 
     126 
     127         if (flgzmy(i,j)) then  
     128!            debug_3D(i,j,12)=uyflgz(i,j) 
     129            uybar(i,j)=uyflgz(i,j)+uydef(i,j)                       ! on ajoute la deform. SIA 
     130            uby(i,j) = uyflgz(i,j) 
     131!            do k=1,nz 
     132!               uy(i,j,k)=uy(i,j,k)-uy(i,j,nz)+uyflgz(i,j)           ! remplace le glissement par uyflgz 
     133!            end do 
     134 
     135!            debug_3D(i,j,10)=uydef(i,j)               
     136         endif 
     137      end do 
     138   end do 
     139        !$OMP END DO 
     140        !$OMP END PARALLEL 
     141 
     142! on ne recalcul ux que lorsque uxflgz est modifié soit tous les dtt 
     143        if (isynchro.eq.1) then 
     144!       !$OMP PARALLEL PRIVATE(rang,nb_taches) 
     145!       !$ rang=OMP_GET_THREAD_NUM() 
     146!       !$ nb_taches=OMP_GET_NUM_THREADS() 
     147!       !$OMP DO SCHEDULE(STATIC,NY/nb_taches) 
     148        !$OMP PARALLEL 
     149   !$OMP DO 
     150        do j=2,ny 
     151                do i=2,nx 
     152        if (flgzmx(i,j)) then  
     153                        do k=1,nz 
    109154               ux(i,j,k)=ux(i,j,k)-ux(i,j,nz)+uxflgz(i,j)           ! remplace le glissement par uxflgz 
    110155            end do 
    111  
    112             debug_3D(i,j,9)=uxdef(i,j)                    
    113          end if 
    114  
     156         endif 
    115157         if (flgzmy(i,j)) then  
    116             debug_3D(i,j,12)=uyflgz(i,j) 
    117             uybar(i,j)=uyflgz(i,j)+uydef(i,j)                       ! on ajoute la deform. SIA 
    118             uby(i,j) = uyflgz(i,j) 
    119             do k=1,nz 
     158                        do k=1,nz 
    120159               uy(i,j,k)=uy(i,j,k)-uy(i,j,nz)+uyflgz(i,j)           ! remplace le glissement par uyflgz 
    121160            end do 
    122  
    123             debug_3D(i,j,10)=uydef(i,j)               
    124          end if 
    125       end do 
    126    end do 
    127  
    128  
     161         endif 
     162       enddo 
     163   enddo 
     164        !$OMP END DO 
     165        !$OMP END PARALLEL  
     166endif 
    129167 
    130168else ! SIA et L1 en 2 zones separe : pas d'action (uxbar est deja remis a uxflgz dans diffusiv) 
  • branches/iLoveclim/SOURCES/moy_mxmy.f90

    r4 r77  
    1818subroutine moy_mxmy(n1,n2,X2D,X_mx,X_my) 
    1919! fait la moyenne ponderee d'un tableau X2D sur les mailles staggered 
    20  
     20 !$ USE OMP_LIB 
    2121implicit none 
    2222integer, intent(in) :: n1,n2   !< dimension des tableaux 
     
    2929 
    3030 
     31  !$OMP PARALLEL PRIVATE(i_moins1,j_moins1,i_plus1,j_plus1) 
     32  !$OMP DO 
     33        do j=1,n2 
     34                do i=1,n1 
     35                        i_moins1=max(1,i-1) 
     36                        j_moins1=max(1,j-1) 
     37                        i_plus1=min(n1,i+1) 
     38                        j_plus1=min(n2,j+1) 
    3139 
    32 do j=1,n2 
    33    do i=1,n1 
    34       i_moins1=max(1,i-1) 
    35       j_moins1=max(1,j-1) 
    36       i_plus1=min(n1,i+1) 
    37       j_plus1=min(n2,j+1) 
    38  
    39       X_mx(i,j)=0.25*(X2D(i,j)+X2D(i_moins1,j)) & 
     40                        X_mx(i,j)=0.25*(X2D(i,j)+X2D(i_moins1,j)) & 
    4041           + 0.125*((X2D(i_moins1,j_plus1)+X2D(i,j_plus1))   & 
    4142           +       (X2D(i_moins1,j_moins1)+X2D(i,j_moins1))) 
    4243 
    43       X_my(i,j)=0.25*(X2D(i,j)+X2D(i,j_moins1)) & 
     44                        X_my(i,j)=0.25*(X2D(i,j)+X2D(i,j_moins1)) & 
    4445           + 0.125*((X2D(i_plus1,j_moins1)+X2D(i_plus1,j))   & 
    4546           +       (X2D(i_moins1,j_moins1)+X2D(i_moins1,j))) 
    46  
    47  
    48    end do 
    49 end do 
     47                end do 
     48        end do 
     49  !$OMP END DO 
     50  !$OMP END PARALLEL 
    5051 
    5152return 
  • branches/iLoveclim/SOURCES/neffect-0.4.f90

    r4 r77  
    2424      implicit none 
    2525 
    26 !!!!  real pwater,N1,N2,XFRAC,SLOPEM,uxmy,uymx 
    27  
    28       real XFRAC,SLOPEM,uxmy,uymx 
    29 !     real,dimension(nx,ny) :: pwater !!! global var 
    30       real pentem,toslid,topente,neffoto,fonction_N 
    31       real,dimension(nx,ny) :: table_interm 
     26!      real,dimension(nx,ny) :: table_interm 
    3227      real :: Nefmin=1.e5                  ! Pression effective minimum (~ 10 m de glace) 
    3328 
  • branches/iLoveclim/SOURCES/next-time.f90

    r4 r77  
    2121  real  (kind=kind(0.d0)) :: time 
    2222  real (kind=kind(0.d0)) :: time_loc 
    23   real (kind=kind(0.d0)) :: test_time 
    2423  real (kind=kind(0.d0)) :: time2_loc 
    2524  real (kind=kind(0.d0)) :: timesup 
  • branches/iLoveclim/SOURCES/no_spinup_mod.f90

    r4 r77  
    1414module no_spinup 
    1515 
     16use module3d_phy 
    1617 
    1718contains 
     
    2223subroutine init_spinup 
    2324 
    24 use module3d_phy 
    2525implicit none 
    2626 
  • branches/iLoveclim/SOURCES/out_cptr_mod.f90

    r32 r77  
    387387  character(len=20),dimension(4)    :: dimnames3d      !< pour 3d troisieme dim est nz 
    388388  character(len=20),dimension(4)    :: dimnames3dT     !< pour 3d troisieme dim est nz+nzm 
    389   integer                           :: nrecs=1         !< compteur pour les enregistrements temps des variables   
    390   integer                           :: idef=0          !< pour savoir si la variable a ete definie ou non 
     389!  integer                           :: nrecs=1         !< compteur pour les enregistrements temps des variables   
     390!  integer                           :: idef=0          !< pour savoir si la variable a ete definie ou non 
    391391  integer                           :: isortie         !< pour le choix de type de fichier en sortie  
    392392 
  • branches/iLoveclim/SOURCES/out_horiz_mod.f90

    r32 r77  
    7676    integer :: i2 
    7777    integer :: i3 
    78     integer  :: i,j,k !< indices de travail 
     78    integer  :: k !< indices de travail 
    7979 
    8080    integer :: num_dat = 21 
     
    197197integer   :: ifin 
    198198integer   :: npr 
    199 integer  :: i,j,k ! indices de travail 
     199integer  :: i ! indices de travail 
    200200 
    201201 
     
    284284real :: maxcol 
    285285real :: coef 
    286  integer  :: i,j,k ! indices de travail 
    287286 
    288287npos=npos+1 
  • branches/iLoveclim/SOURCES/out_profile_mod.f90

    r4 r77  
    146146integer :: numtime 
    147147!integer :: nmax 
    148 integer :: n,l 
     148integer :: n 
    149149integer, dimension(:), allocatable :: nbr_ligne_prof 
    150150integer :: nbr_ligne_total 
  • branches/iLoveclim/SOURCES/relaxation_water_diffusion.f90

    r45 r77  
    1212 
    1313 
     14 
     15 
    1416CONTAINS 
    1517 
    1618 
    1719subroutine relaxation_waterdif(NXX,NYY,DT,DX,vieuxHWATER,limit_hw,klimit,BMELT,INFILTR,PGMX,PGMY,KOND,KONDMAX,HWATER) 
    18     implicit none 
     20 
     21  !$ USE OMP_LIB 
     22 
     23  implicit none 
    1924 
    2025 
     
    4853    REAL :: RESTE,DELH,VH 
    4954    INTEGER :: ntour 
    50     INTEGER :: mbord 
    5155    REAL  :: DTSRGDX,dtwdx2 
    5256    LOGICAL :: STOPP 
     
    5660 
    5761! write(166,*)' entree  relaxation waterdif' 
     62!$OMP PARALLEL 
     63!$OMP WORKSHARE 
    5864    HWATER(:,:)= vieuxHWATER(:,:) 
    59  
     65!$OMP END WORKSHARE 
    6066    !   calcul de kmx et kmx a partir de KOND 
    6167    !   conductivite hyrdraulique sur les noeuds mineurs 
    6268    !   moyenne harmonique 
    6369    !   ---------------------------------------- 
    64  
     70!$OMP DO 
    6571    do j=2,nyy 
    6672       do i=2,nxx 
     
    7480       end do 
    7581    end do 
    76  
     82!$OMP END DO 
     83 
     84!$OMP DO 
    7785    do j=2,nyy 
    7886       do i=2,nxx 
     
    8593       enddo 
    8694    enddo 
    87  
     95!$OMP END DO 
    8896 
    8997    !   attribution des coefficients  arelax .... 
     
    99107    dtwdx2=dt/dx/dx 
    100108 
    101 arelax(:,:)=0. 
    102 brelax(:,:)=0. 
    103 crelax(:,:)=1. 
    104 drelax(:,:)=0. 
    105 erelax(:,:)=0. 
    106 frelax(:,:)=limit_hw(:,:) 
    107  
    108  
    109  
     109!$OMP WORKSHARE 
     110  arelax(:,:)=0. 
     111  brelax(:,:)=0. 
     112  crelax(:,:)=1. 
     113  drelax(:,:)=0. 
     114  erelax(:,:)=0. 
     115  frelax(:,:)=limit_hw(:,:) 
     116!$OMP END WORKSHARE 
     117 
     118!$OMP DO 
    110119    do J=2,NYY-1 
    111120       do I=2,NXX-1 
    112121 
    113122          if (klimit(i,j).eq.0) then 
    114  
    115123! calcul du vecteur 
    116  
    117124          FRELAX(I,J)= VIEUXHWATER(I,J)+(BMELT(I,J)-INFILTR)*DT 
    118125          frelax(i,j)=frelax(i,j)+(kmx(i,j)*pgmx(i,j)-kmx(i+1,j)*pgmx(i+1,j))*dtsrgdx 
    119126          frelax(i,j)=frelax(i,j)+(kmy(i,j)*pgmy(i,j)-kmy(i,j+1)*pgmy(i,j+1))*dtsrgdx 
    120  
    121127! calcul des diagonales       
    122128          arelax(i,j)=-kmx(i,j)*dtwdx2        ! arelax : diagonale i-1,j  
     
    130136          crelax(i,j)=1.+((kmx(i,j)+kmx(i+1,j))+(kmy(i,j)+kmy(i,j+1)))*dtwdx2  
    131137                                              !crelax : diagonale i,j  
    132  
    133138          else if (klimit(i,j).eq.1) then 
    134139             hwater(i,j)=limit_hw(i,j) 
    135140!             write(6,*) i,j,hwater(i,j),crelax(i,j),frelax(i,j),arelax(i,j) 
    136  
    137141          endif 
    138  
    139142       end do 
    140143    end do 
    141  
    142  
     144!$OMP END DO 
     145!$OMP END PARALLEL 
    143146 
    144147    ! Boucle de relaxation : 
     
    151154       ntour=ntour+1 
    152155!       write(6,*) 'boucle de relaxation numero',ntour 
    153  
     156       !$OMP PARALLEL 
     157       !$OMP DO PRIVATE(reste) 
    154158       do j=2,NYY-1 
    155159          do i=2,NXX-1 
     
    160164 
    161165             DELTAH(I,J) = RESTE/CRELAX(I,J)              
    162  
    163166          end do 
    164167       end do 
    165  
    166 deltah(:,:)=min(deltah(:,:),10.) 
    167 deltah(:,:)=max(deltah(:,:),-10.) 
    168       
    169  
    170  
     168       !$OMP END DO 
     169 
     170       !$OMP WORKSHARE 
     171       deltah(:,:)=min(deltah(:,:),10.) 
     172       deltah(:,:)=max(deltah(:,:),-10.) 
     173       !$OMP END WORKSHARE 
    171174       ! il faut faire le calcul suivant dans une autre boucle car RESTE est fonction 
    172175       ! de hwater sur les points voisins. 
     176       !$OMP DO 
    173177       do j=2,NYY-1 
    174178          do i=2,NXX-1 
    175179             HWATER(I,J) = HWATER(I,J) - DELTAH(I,J) 
    176  
    177180          end do 
    178181       end do 
    179  
     182       !$OMP END DO 
    180183 
    181184       ! critere d'arret: 
    182  
    183        
    184  
    185185       Delh=0 
    186186       Vh=0 
    187  
     187        
     188       !$OMP DO REDUCTION(+:Delh) 
    188189       DO j=2,NYY-1 
    189190          DO i=2,NXX-1 
    190191              
    191192             !   write(166,*) I,J,delh,deltah(i,j) 
    192                          Delh=Delh+deltah(i,j)**2 
     193             Delh=Delh+deltah(i,j)**2 
    193194             !            Vh=Vh+h(i,j)**2. 
    194195          END DO 
    195196       END DO 
    196  
     197       !$OMP END DO 
     198       !$OMP END PARALLEL 
    197199!       write(6,*) delh,maxval(deltah),minval(deltah) 
    198200       !      testh=SQRT(Delh/Vh) 
  • branches/iLoveclim/SOURCES/resol_adv_diff_2D-sept2009.f90

    r4 r77  
    101101subroutine resol_adv_diff_2D_vect(Dfx,Dfy,advx,advy,H_presc,i_Hpresc,bil,vieuxH,newH) 
    102102 
     103!$ USE OMP_LIB 
    103104implicit none 
    104105 
     
    146147 
    147148 
    148 integer :: it1,it2,jt1,jt2           ! pour des tests d'asymétrie 
    149  
    150  
    151149if (itracebug.eq.1)  call tracebug(' Entree dans routine resolution_diffusion') 
    152150 
    153  
     151!$OMP PARALLEL 
     152!$OMP WORKSHARE 
    154153! calcul de bdx et hdx 
    155154hdx(:,:)=dx1*(vieuxH(:,:)-eoshift(vieuxH(:,:),shift=-1,boundary=0.,dim=1)) 
     
    167166Frelax(:,:)=0. 
    168167DeltaH(:,:)=0. 
    169  
     168!$OMP END WORKSHARE 
    170169 
    171170! schema spatial 
    172171 
    173172if (upwind.eq.1.) then                 !schema amont 
    174  
     173!$OMP WORKSHARE 
    175174   where (Advx(:,:).ge.0.) 
    176175      c_west(:,:)=1. 
     
    188187      c_north(:,:)=1. 
    189188   end where 
    190  
     189!$OMP END WORKSHARE 
    191190else if (upwind.lt.1.) then             ! schema centre 
     191!$OMP WORKSHARE 
    192192      c_west(:,:)=0.5 
    193193      c_east(:,:)=0.5 
    194194      c_south(:,:)=0.5 
    195195      c_north(:,:)=0.5 
     196!$OMP END WORKSHARE       
    196197end if 
    197198 
     199 
    198200! attribution des elements des diagonales 
     201!$OMP DO PRIVATE(frdx,frdy,fraxw,fraxe,frays,frayn) 
    199202do j=2,ny-1 
    200203  do i=2,nx-1 
     
    257260     end do 
    258261  end do 
    259  
    260  
     262!$OMP END DO 
     263 
     264!$OMP WORKSHARE 
    261265where (i_hpresc(:,:) .eq.1)          ! thickness prescribed 
    262266   frelax(:,:) = H_presc(:,:) 
     
    267271   erelax(:,:) = 0. 
    268272end where 
     273!$OMP END WORKSHARE 
     274!$OMP END PARALLEL 
    269275 
    270276stopp = .false. 
    271277ntour=0 
    272278 
    273  
    274  
    275279relax_loop: do while(.not.stopp) 
    276280ntour=ntour+1 
    277  
    278  
     281!$OMP PARALLEL 
     282!$OMP DO PRIVATE(reste) 
    279283do j=2,ny-1 
    280284   do i=2,nx-1 
     
    284288           + crelax(i,j)*newH(i,j))- frelax(i,j) 
    285289 
    286 if (ntour.eq.1)  debug_3D(i,j,49)=(((arelax(i,j)*newH(i-1,j) +drelax(i,j)*newH(i,j-1)) & 
    287            + (brelax(i,j)*newH(i+1,j) + erelax(i,j)*newH(i,j+1))) & 
    288            + crelax(i,j)*newH(i,j)) 
     290!if (ntour.eq.1)  debug_3D(i,j,49)=(((arelax(i,j)*newH(i-1,j) +drelax(i,j)*newH(i,j-1)) & 
     291!           + (brelax(i,j)*newH(i+1,j) + erelax(i,j)*newH(i,j+1))) & 
     292!           + crelax(i,j)*newH(i,j)) 
    289293 
    290294 
     
    293297   end do 
    294298end do 
    295  
    296 debug_3D(:,:,50)=arelax(:,:) 
    297 debug_3D(:,:,51)=brelax(:,:) 
    298 debug_3D(:,:,52)=crelax(:,:) 
    299 debug_3D(:,:,53)=drelax(:,:) 
    300 debug_3D(:,:,54)=erelax(:,:) 
    301 debug_3D(:,:,55)=frelax(:,:) 
    302  
    303  
    304  
     299!$OMP END DO 
     300 
     301!debug_3D(:,:,50)=arelax(:,:) 
     302!debug_3D(:,:,51)=brelax(:,:) 
     303!debug_3D(:,:,52)=crelax(:,:) 
     304!debug_3D(:,:,53)=drelax(:,:) 
     305!debug_3D(:,:,54)=erelax(:,:) 
     306!debug_3D(:,:,55)=frelax(:,:) 
     307 
     308 
     309!$OMP WORKSHARE 
    305310newH(:,:)=newH(:,:)-deltaH(:,:) 
    306  
    307  
     311!$OMP END WORKSHARE 
     312!$OMP END PARALLEL 
    308313 
    309314 
     
    313318delh=0 
    314319 
    315  
     320!$OMP PARALLEL 
     321!$OMP DO REDUCTION(+:delh) 
    316322do j=2,ny-1 
    317323   do i=2,nx-1 
     
    319325   end do 
    320326end do 
     327!$OMP END DO 
     328!$OMP END PARALLEL 
    321329 
    322330if (delh.gt.0.) then 
     
    333341 
    334342! thickness at the upwind node 
    335 do j = 1, ny 
    336    do i = 2, nx 
    337       debug_3D(i,j,92) = c_west(i,j) * newH(i-1,j) + c_east(i,j) * newH(i,j) 
    338    end do 
    339 end do 
    340 do j = 2, ny 
    341    do i = 1, nx 
    342       debug_3D(i,j,93) = c_south(i,j) * newH(i,j-1) + c_north(i,j) * newH(i,j) 
    343    end do 
    344 end do 
    345  
    346  if (itracebug.eq.1)  call tracebug(' fin routine resolution_diffusion') 
     343!do j = 1, ny 
     344!   do i = 2, nx 
     345!      debug_3D(i,j,92) = c_west(i,j) * newH(i-1,j) + c_east(i,j) * newH(i,j) 
     346!   end do 
     347!end do 
     348!do j = 2, ny 
     349!   do i = 1, nx 
     350!      debug_3D(i,j,93) = c_south(i,j) * newH(i,j-1) + c_north(i,j) * newH(i,j) 
     351!   end do 
     352!end do 
     353 
     354if (itracebug.eq.1)  call tracebug(' fin routine resolution_diffusion') 
     355 
     356  
    347357return 
    348358 
  • branches/iLoveclim/SOURCES/snaptime.f90

    r4 r77  
    2424double precision :: tunit 
    2525integer :: ipuissance 
    26 integer :: itime,m 
     26integer :: itime 
    2727character(len=1) :: signe,unit,mm  
    2828character(len=1),dimension (4) :: unittab 
  • branches/iLoveclim/SOURCES/spinup_mod.f90

    r31 r77  
    516516 
    517517    implicit none 
    518     real,dimension(nx,ny) :: corr_ghf        !< correction du gflux geothermique 
    519518    real,dimension(nx,ny) :: coefdef_maj     !< coefficient deformation 
    520519    real :: increment_ghf 
  • branches/iLoveclim/SOURCES/steps_time_loop.f90

    r52 r77  
    340340        if (itracebug.eq.1)  call tracebug(' Dans spinup_3_bed') 
    341341 
    342         if ((nbed.eq.1).and.nt.ne.1.and.isynchro.eq.1) then            
    343            call bedrock()                                            !  bedrock adjustment 
     342!        if ((nbed.eq.1).and.nt.ne.1.and.isynchro.eq.1) then 
     343         if ((nbed.eq.1).and.nt.ne.1.and.isynchro.eq.1.and.(mod(abs(TIME),50.).lt.dtmin)) then 
     344           call bedrock                                              !  bedrock adjustment 
    344345        endif 
    345346 
  • branches/iLoveclim/SOURCES/tab-litho-0.3.f90

    r10 r77  
    4747  open(num_kelvin,file=trim(dirnameinp)//'../kelvin.res') 
    4848  read(num_kelvin,*) 
    49   do K=1,NK 
     49  do K=0,NK 
    5050     read(num_kelvin,*) XL,kei(K) 
    5151  end do 
  • branches/iLoveclim/SOURCES/taubed-0.3.f90

    r4 r77  
    4343subroutine taubed() 
    4444 
     45  !$USE OMP_LIB  
    4546  USE module3D_phy 
    4647  USE param_phy_mod 
     
    5253  ! NLITH est defini dans isostasie et permet le choix du modele d'isostasie 
    5354 
     55   
    5456  if (NLITH.eq.1) then 
    5557     !       avec rigidite de la lithosphere 
     58     !$OMP PARALLEL 
     59     !$OMP DO 
    5660     do J=1,NY  
    5761        do I=1,NX 
     
    6569        end do 
    6670     end do 
    67  
     71     !$OMP END DO 
    6872 
    6973     ! il faut remplir CHARGE dans les parties a l'exterieur de la grille : 
    7074     ! a l'exterieur de la grille CHARGE est egale a la valeur sur le bord 
    71  
     75     !$OMP DO 
    7276     do J=1,NY 
    7377        CHARGE(1-LBLOC:0,J)=CHARGE(1,J)      ! bord W 
    7478        CHARGE(NX+1:NX+LBLOC,J)=CHARGE(NX,J) ! bord E 
    7579     end do 
     80     !$OMP END DO 
     81     !$OMP DO 
    7682     do I=1,NX 
    7783        CHARGE(I,1-LBLOC:0)=CHARGE(I,1)      ! bord S 
    7884        CHARGE(I,NY+1:NY+LBLOC)=CHARGE(I,NY) ! bord N 
    7985     end do 
     86     !$OMP END DO 
    8087 
    8188     ! valeur dans les quatres coins exterieurs au domaine        
     89          !$OMP WORKSHARE 
    8290     CHARGE(1-LBLOC:0,1-LBLOC:0)=CHARGE(1,1)           ! coin SW 
    8391     CHARGE(1-LBLOC:0,NY+1:NY+LBLOC)=CHARGE(1,NY)      ! coin NW 
    8492     CHARGE(NX+1:NX+LBLOC,1-LBLOC:0)=CHARGE(NX,1)      ! coin SE 
    8593     CHARGE(NX+1:NX+LBLOC,NY+1:NY+LBLOC)=CHARGE(NX,NY) ! coin NE 
    86  
     94     !$OMP END WORKSHARE 
     95     !$OMP END PARALLEL  
    8796     call litho 
    8897 
    8998  else 
    9099     !     enfoncement local 
     100     !$OMP PARALLEL 
     101     !$OMP DO 
    91102     do J=1,NY 
    92103        do I=1,NX 
     
    100111        end do 
    101112     end do 
     113     !$OMP END DO 
     114     !$OMP END PARALLEL 
    102115  endif 
    103116 
    104117  !     decroissance exponentielle de l'enfoncement 
     118  !$OMP PARALLEL 
     119  !$OMP DO 
    105120  do J=1,NY 
    106121     do I=1,NX 
     
    109124     end do 
    110125  end do 
     126  !$OMP END DO 
     127  !$OMP END PARALLEL 
    111128 
    112129end subroutine taubed 
  • branches/iLoveclim/SOURCES/tracer_mod.f90

    r11 r77  
    66!-------------------------------------------------------------- 
    77! Position des forages dans la grille grisli. 
     8! Groenland grille GreeneemXX 
    89! 
    910! Ordre GMT :  
     
    2930  use tracer_vars             ! module de declaration de variables pour les traceurs 
    3031!cdc  use climat_perturb_mois_mod ! on en a besoin, notamment pour NFT 
    31  
     32! afq, new version of tracer, does not require climat_perturb 
     33   
    3234  implicit none 
    3335 
     
    5153  integer :: time_tra    ! temps traceur 
    5254 
    53   integer :: nft         ! declaration locale de NFT : a corriger plus tard pour recuperer la valeur du module climat 
    54   real    :: rappact     ! pour le calcul du rapport 'accumulation : a corriger plus tard pour recuperer la valeur du module climat 
    55   real,dimension(:),allocatable :: tpert ! temperature for climate forcing : a corriger plus tard pour recuperer la valeur du module climat 
    56   real,dimension(:),allocatable :: TDATE ! time for climate forcing : a corriger plus tard pour recuperer la valeur du module climat 
    57  
    5855 
    5956!=============================================================== 
     
    6966  real :: lambdab  ! fusion basale 'artificielle' pour age des couches  
    7067  real :: agemax   ! age maximum de la glace (pour init_tracer) 
    71   
     68 
     69  integer :: pert_type ! 0 we give tpert/coeft/rappact,1 we give acc_pert only / afq 
     70  character(len=200) :: filforc    ! nom du fichier forcage 
     71  character(len=200) :: filin      ! variable intermediaire 
     72  character(len=8) :: control      ! label to check clim. forc. file (filin) is usable 
     73  integer ::  err                  ! pour l'allocation des tableaux 
     74  real :: bidon                    ! to skip sealevel change in fileforc 
     75   
    7276  integer :: kk   ! indice vertical pour definition de E, mais on veut conserver la valeur de k 
    7377!  real,dimension(nz) :: E   ! vertical coordinate in ice, scaled to H zeta 
     78 
     79  ! on lit les parametres par namelist dorenavant 
     80  namelist/tracer/file_tr_dat,file_tr_out,file_tr_dep,lambdab,agemax,coefT_tra,rappact_tra,filforc,pert_type  
    7481 
    7582 
     
    93100  deltracer = dtt           ! sorte de pas de temps du tracer -  multiple de dtt ! 
    94101 
    95  
    96 ! on lit les parametres par namelist dorenavant 
    97   namelist/tracer/file_tr_dat,file_tr_out,file_tr_dep,lambdab,agemax !aurel : a ne pas oublier paramlist 
    98102 
    99103  rewind(num_param)        ! pour revenir au debut du fichier param_list.dat 
     
    111115  write(num_rep_42,'(A,A)')   'tracer .out file : ', file_tr_out 
    112116  write(num_rep_42,'(A,A)')   'tracer dep. file : ', file_tr_dep 
     117  write(num_rep_42,'(A,A)')   'lambdab : ', lambdab 
     118  write(num_rep_42,'(A,A)')   'agemax : ', agemax 
     119  write(num_rep_42,'(A,A)')   'coefT_tra : ', coefT_tra 
     120  write(num_rep_42,'(A,A)')   'rappact_tra : ', rappact_tra 
     121  write(num_rep_42,'(A,A)')   'fileforc : ', filforc 
     122  write(num_rep_42,'(A,A)')   'pert_type : ', pert_type 
    113123  write(num_rep_42,*)'/'                       
    114124  write(num_rep_42,428) 'declaration des repertoires *traceurs*' 
     
    202212 
    203213 
     214  ! afq marion dufresne: 
     215  ! to build accucumul, we read all what is in climat_perturb here now 
     216  ! meaning: nft, tpert, tdate 
     217  ! OR if pert_type = 1 we read nft, acc_pert, tdate 
     218  ! acc_pert should be the ratio acc_palaeo / acc_present 
     219   
     220    filin=trim(dirforcage)//trim(filforc) 
     221 
     222    open(num_forc,file=filin,status='old') 
     223 
     224    read(num_forc,*) control,nft_tra 
     225 
     226    ! Determination of file size (line nb), allocation of perturbation array 
     227    if (control.ne.'nb_lines') then 
     228       write(6,*) filin,'indiquer le nb de ligne en debut de fichier:' 
     229       write(6,*) 'le nb de lignes et le label de control nb_lines' 
     230       stop 
     231    endif 
     232    if (.not.allocated(tdate_tra)) then 
     233       allocate(tdate_tra(nft_tra),stat=err) 
     234       if (err/=0) then 
     235          print *,"erreur a l'allocation du tableau Tdate",err 
     236          stop 4 
     237       end if 
     238    end if 
     239    if (.not.allocated(tpert_tra)) then 
     240       allocate(tpert_tra(nft_tra),stat=err) 
     241       if (err/=0) then 
     242          print *,"erreur a l'allocation du tableau Tpert",err 
     243          stop 4 
     244       end if 
     245    end if 
     246 
     247    do i=1,nft_tra 
     248       read(num_forc,*) tdate_tra(i),bidon,tpert_tra(i) 
     249    end do 
     250    close(num_forc) 
     251 
     252   
    204253 2009 format(21(f12.1)) 
    205254    
     
    209258  ! chaque indice d'accucumul vaut 100 ans. 
    210259  ! 0 pour le present, 10 pour 1000 ans 
    211    allocate(accucumul(0:nft-1)); accucumul = 0.0 
     260   allocate(accucumul(0:nft_tra-1)); accucumul = 0.0 
    212261   ! watch out its size !!! 
    213262   ! note: tpert(1) = tpert at -422700yr 
     
    217266   ! a la rigueur je pourrais modifier le fichier d'interpolation pour  
    218267   ! l'adapter a tdate 
    219    accucumul(nft-1) =  0. 
    220  
    221 ! todo0710 : marge d'amelioration en tenant compte des accum de depot ?   
    222    do k=2,nft 
    223       accucumul(nft-k) = accucumul(nft-k+1) + (exp(rappact  * tpert(k) )) 
    224    end do 
    225          
    226    time_max_accu = tdate(1) 
    227    !print*, tdate(1), nft , nftnl, rappact 
    228    !print*, tdate(1), nft , rappact!, nftnl, rappact 
     268   accucumul(nft_tra-1) =  0. 
     269 
     270   ! todo0710 : marge d'amelioration en tenant compte des accum de depot ? 
     271 
     272   if (type_accum.eq.0) then   !Tpert is given, needs to be converted in accumulation ratio 
     273      tpert_tra(:)=tpert_tra(:)*coefT_tra 
     274      do k=2,nft_tra 
     275         accucumul(nft_tra-k) = accucumul(nft_tra-k+1) + (exp(rappact_tra  * tpert_tra(k) )) 
     276      end do 
     277   else if (type_accum.eq.1) then ! accum ration is given, nothing to do 
     278      do k=2,nft_tra 
     279         accucumul(nft_tra-k) = accucumul(nft_tra-k+1) + tpert_tra(k) 
     280      end do 
     281   else 
     282      write (*,*) "Problem in tracer, do you provide tpert or accpert???" 
     283      STOP 
     284   end if 
     285   time_max_accu = tdate_tra(1) 
    229286   uxsave(:,:,:) = 0.0 
    230287   uysave(:,:,:) = 0.0 
     
    233290   ydep(:,:,:)=ydepk(:,:,:) 
    234291   tdep(:,:,:)=tdepk(:,:,:) 
    235    freezeon(:,:) = 0.   ! variable added on 19/03/03 
    236  
    237 !   print*, 'tpert ',tpert(:) 
    238 !   print*, 'accucumul ', accucumul(:) 
     292   freezeon(:,:) = 0.     ! variable added on 19/03/03 
     293 
    239294   print*, 'tbegin, tend : ',tbegin, tend 
    240295 
     
    266321        do i=1,nx 
    267322           ! added on 16/12/03: somehow worked before too 
    268            if (h(i,j)>1.5) &     
    269                 uzrsave(i,j,:) = uzrsave(i,j,:) + uzr(i,j,:) *real(dtt) / h(i,j) 
     323           if (h(i,j)>1.5) & 
     324             uzrsave(i,j,:) = uzrsave(i,j,:) + uzr(i,j,:) *real(dtt) / h(i,j) 
    270325        end do 
    271326     end do 
     
    288343     do j=2,ny-1 
    289344        i_jj = j-1 
    290         xdep(:,1,i_jj) = xgrid(2) 
     345        xdep(:,1,i_jj) = xgrid(2) 
    291346        xdep(:,nx-2,i_jj) = xgrid(nx-1) 
    292         ydep(:,1,i_jj) = ygrid(j) 
     347        ydep(:,1,i_jj) = ygrid(j) 
    293348        ydep(:,nx-2,i_jj) = ygrid(j) 
    294349!        tdep(:,1,i_jj) = time_ 
     
    300355     do i=2,nx-1 
    301356        i_ij = i-1 
    302         xdep(:,i_ij,1) = xgrid(i) 
     357        xdep(:,i_ij,1) = xgrid(i) 
    303358        xdep(:,i_ij,ny-2) = xgrid(i) 
    304         ydep(:,i_ij,1) = ygrid(2) 
    305         ydep(:,i_ij,ny-2) = ygrid(ny-1) 
     359        ydep(:,i_ij,1) = ygrid(2) 
     360        ydep(:,i_ij,ny-2) = ygrid(ny-1) 
    306361!       tdep(:,i_ij,1) =  time_ 
    307362!       tdep(:,i_ij,ny-2) =  time_ 
    308         tdep(:,i_ij,1) =  time    
    309         tdep(:,i_ij,ny-2) =  time 
     363        tdep(:,i_ij,1) =  time    
     364        tdep(:,i_ij,ny-2) =  time 
    310365     end do 
    311366 
     
    318373 
    319374! nl 11/03/04 
    320           if (h(i,j)<=1.5) then 
     375          if (h(i,j)<=1.5) then 
    321376            xdep(:,i_ij,i_jj) = xgrid(i) 
    322377            ydep(:,i_ij,i_jj) = ygrid(j) 
    323378            tdep(:,i_ij,i_jj) =  time   
    324             cycle 
    325           end if 
     379            cycle 
     380          end if 
    326381          freezeon(i_ij,i_jj) = max(0.0, freezeon(i_ij,i_jj)-bmelt(i,j) ) 
    327            
     382           
    328383          ip = i+1 
    329384          jp = j+1 
     
    333388            v_zij       = uzrsave(i,j,k) 
    334389 
    335             x_tra       = xgrid(i) - v_xij      !* real(deltracer) 
    336             y_tra       = ygrid(j) - v_yij      !* real(deltracer) 
    337             e_tra       = e(k) - v_zij          !* real(deltracer) 
     390            x_tra       = xgrid(i) - v_xij      !* real(deltracer) 
     391            y_tra       = ygrid(j) - v_yij      !* real(deltracer) 
     392            e_tra       = e(k) - v_zij          !* real(deltracer) 
    338393 
    339394            if ((k==nz).and.(bmelt(i,j)<-1.e-4)) then   ! bottom freezeon 
    340395               xdep(k,i_ij,i_jj) = xgrid(i) 
    341396               ydep(k,i_ij,i_jj) = ygrid(j) 
    342                if (h(i,j)>100.) then 
     397               if (h(i,j)>100.) then 
    343398                 tdep(k,i_ij,i_jj) =  tdepk(k,i_ij,i_jj) - & 
    344                         min( abs( (tdepk(k-1,i_ij,i_jj)-tdepk(k,i_ij,i_jj)) *  & 
    345                           bmelt(i,j)  / ( ( e(k)-e(k-1) )*h(i,j) ) ), 2.) * deltracer 
    346                   ! this added 26/03/04 so that not more 2.*deltracer new years of refreezing  
    347                else 
    348                 tdep(k,i_ij,i_jj) =  tdepk(k,i_ij,i_jj) 
     399                        min( abs( (tdepk(k-1,i_ij,i_jj)-tdepk(k,i_ij,i_jj)) *  & 
     400                          bmelt(i,j)  / ( ( e(k)-e(k-1) )*h(i,j) ) ), 2.) * deltracer 
     401                  ! this added 26/03/04 so that not more 2.*deltracer new years of refreezing  
     402               else 
     403                tdep(k,i_ij,i_jj) =  tdepk(k,i_ij,i_jj) 
    349404                  
    350                end if  
     405               end if  
    351406                !fix:    need to track where freeze-on happens 
    352407                ! *1.001        proven to be dumb 
     
    375430                !print*,'i,j,k avt interp',i,j,k 
    376431 
    377                 call interpolate(i_ij, i_jj, k, im-1, jm-1, km, fx,fy,fz, e_tra, nft)  
     432                call interpolate(i_ij, i_jj, k, im-1, jm-1, km, fx,fy,fz, e_tra, nft_tra)  
    378433 
    379434                if((tdep(k,i_ij,i_jj)<=time  -  1500000.) .or. (tdep(k,i_ij,i_jj)> time   )) then 
     
    469524 
    470525 
    471  
    472  
    473  
    474  
    475  
    476526!======================================================================== 
    477527!======================================================================== 
  • branches/iLoveclim/SOURCES/tracer_vars_mod.f90

    r4 r77  
    2525  integer :: nspectimes 
    2626  real :: time_max_accu 
     27 
     28  ! afq marion dufresne: tracer with no climat perturb 
     29  ! i.e. we read the Forcage Tpert to compute past accumulation via 
     30  ! rappact 
     31  ! OR we read directly past accum (choice in namelist) 
     32  ! if past accum is given it will still be read with the name Tpert 
     33  ! the past accum given should be the ratio acc_palaeo / acc_present 
     34  integer :: nft_tra                         ! number of snapshot Tpert 
     35  integer :: type_accum                      ! Tpert is given (=0) or accpert (1) 
     36  real    :: rappact_tra                     ! accumulation ratio to convert Tpert 
     37  real    :: coeft_tra                       ! coeft to convert Tpert 
     38  real,dimension(:),allocatable :: tpert_tra ! temperature perturbation 
     39  real,dimension(:),allocatable :: tdate_tra ! time for Tpert 
     40 
    2741   
    2842  integer, dimension(maxspectimes) :: trout 
  • branches/iLoveclim/SOURCES/velocities-polyn-0.3.f90

    r4 r77  
    2323!     Attention la vitesse verticale est "super reduite" 
    2424! ========================================================================== 
    25  
     25!$ USE OMP_LIB 
    2626use module3d_phy 
    2727!use deform_declar  
     
    3232if (itracebug.eq.1)  call tracebug(' Entree dans routine SIA_velocity') 
    3333 
    34      
     34!$OMP PARALLEL 
     35!$OMP DO COLLAPSE(2)     
    3536do k=1,nz 
    3637   do j=2,ny-1 
     
    101102   end do 
    102103end do 
    103  
     104!$OMP END DO 
    104105 
    105106!       *************************** Z VELOCITIES ****************** 
    106107 
    107  
     108!$OMP DO 
    108109do j=2,ny-1 
    109110   do i=2,nx-1 
     
    144145     end do 
    145146 end do 
     147!$OMP END DO 
    146148 
     149!$OMP DO 
    147150  do j=2,ny-1 
    148151     do i=2,nx-1   
     
    151154     end do 
    152155  end do 
    153  
     156!$OMP END DO 
     157!$OMP END PARALLEL 
    154158 
    155159end subroutine SIA_velocities 
  • branches/iLoveclim/SOURCES/write_datfile.f90

    r4 r77  
    2222 
    2323integer  :: i,j                ! working integers 
    24 integer  :: lx,ly              ! nxx, nyy read in the file 
    25  
    2624 
    2725open(22,file=trim(filename)) 
     
    5553 
    5654integer  :: i,j                ! working integers 
    57 integer  :: lx,ly              ! nxx, nyy read in the file 
    58  
    5955 
    6056open(22,file=trim(filename)) 
Note: See TracChangeset for help on using the changeset viewer.