- Timestamp:
- 10/20/17 09:31:39 (7 years ago)
- Location:
- branches/iLoveclim
- Files:
-
- 27 edited
- 6 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/iLoveclim
- Property svn:mergeinfo changed
/trunk merged: 124,127-145
- Property svn:mergeinfo changed
-
branches/iLoveclim/SOURCES/3D-physique-gen_mod.f90
r126 r146 36 36 integer :: err !< pour l'allocation des tableaux 37 37 integer :: igrdline !< si 1 fixe la position en jouant sur la fusion shelf 38 integer :: ibmelt_inv !< si 1 inversion du bmelt (avec igrdline=1) 38 39 integer :: i_resolmeca !< defini le type d'association SIA-L1 39 40 integer :: iter_beta !< pour la determination du frottement … … 225 226 integer,dimension(nx,ny) :: FRONTFACEY!< type de front sur les faces y 226 227 integer,dimension(nx,ny) :: gr_line_schoof ! points ou on impose le flux de schoof (pour sorties) 228 integer,dimension(nx,ny) :: gr_line !< points grounding line pour les sorties 227 229 integer,dimension(nx,ny) :: ICE !< presence de glace au point considere, 228 230 !< seuil 0 si pose, 1 si flottant … … 443 445 444 446 real,dimension(nx,ny) :: debug_2D 445 real,dimension(nx,ny, 199) :: debug_3D447 real,dimension(nx,ny,220) :: debug_3D 446 448 447 449 ! tableaux qui permettent de faire des sorties netcdf avec les variables qui ne sont pas globales -
branches/iLoveclim/SOURCES/Ant40_files/lect-anteis_mod.f90
r123 r146 228 228 do J=1,NY 229 229 do I=1,NX 230 if (( (BSOC(I,J)+H(I,J)*RO/ROW -SEALEVEL).LT.0.).and.(H(I,J).gt.1.E-3)) then230 if ((BSOC(I,J)+H(I,J)*RO/ROW -SEALEVEL).LT.0.) then 231 231 FLOT(I,J)=.TRUE. 232 232 else -
branches/iLoveclim/SOURCES/Ant40_files/output_anta40_mod-0.4.f90
r123 r146 15 15 USE module3D_phy 16 16 use bilan_eau_mod 17 17 use netcdf 18 use io_netcdf_grisli 19 use bilan_flux_mod 18 20 19 21 implicit none 20 22 21 23 !real :: vol ; !integer :: np 24 integer :: nflot !< nbr de point flottant 22 25 real :: bmean !< 23 26 real :: accmean !< accumulation moyenne … … 35 38 real :: hdotmean !< moyenne derivee / temps de h 36 39 real :: bdotmean !< moyenne bedrock derive / temps 37 real :: volf !< volume au dessus de la flottaison 40 real :: volf !< volume au dessus de la flottaison 41 42 real :: lim !< Total ice mass 43 real :: iareag !< surface posee 44 real :: iareaf !< surface flottante 45 real :: tendacabf !< Total SMB flux 46 real :: tendlibmassbf !< Total Basal mass balance flux 47 real :: tendlicalvf !< Total calving flux 48 real :: tendligroundf !< Total grounding line flux 49 50 real,dimension(nx,ny) :: corrsurf !< facteur de correction de la surface 51 !real,parameter :: ice_density=910. !< densite de la glace pour conversion en masse 52 53 ! variables netcdf 54 integer,parameter :: ncshortout=1 ! 1 sorties netcdf short initMIP 55 integer,parameter :: nvar=8 ! nombre de variables dans le fichier de sortie temporel netcdf 56 integer :: ncid 57 integer :: status 58 integer :: timeDimID 59 integer :: timeVarID 60 integer,dimension(nvar) :: varID 61 integer :: nbtimeout ! index time output 62 63 real,dimension(nvar) :: var_shortoutput 38 64 39 65 … … 41 67 42 68 subroutine init_outshort 69 70 double precision,dimension(:,:),pointer :: tab !< tableau 2d real pointer 71 character(len=100),dimension(nvar) :: namevar ! name, standard_name, long_name, units 72 character(len=100),dimension(nvar) :: standard_name 73 character(len=100),dimension(nvar) :: long_name 74 character(len=100),dimension(nvar) :: units 43 75 44 76 !ndisp sorite courte tous les ndisp 45 77 NDISP=100 78 79 80 81 if (ncshortout.eq.1) then ! ecriture netcdf 82 83 ! lecture du fichier avec les corrections de surface 84 call Read_Ncdf_var('z',trim(DIRNAMEINP)//'/corrsurf-initMIP-16km.grd',tab) 85 corrsurf(:,:)=tab(:,:) 86 87 open(568,file=trim(dirsource)//'/Fichiers-parametres/short-initMIPnc.dat',status='old') 88 ! lecture en-tete 89 read(568,*) 90 read(568,*) 91 read(568,*) 92 read(568,*) 93 read(568,*) 94 ! lecture des infos sur les variables : 95 do k=1,nvar 96 read(568,'(a100)') namevar(k) 97 read(568,'(a100)') standard_name(k) 98 read(568,'(a100)') long_name(k) 99 read(568,'(a100)') units(k) 100 read(568,*) 101 enddo 102 close(568) 103 ! Fichier Netcdf initMIP 104 ! creation du fichier Netcdf : 105 status=nf90_create(path = 'short'//runname//'.nc', cmode = nf90_clobber, ncid = ncid) 106 if (status /= nf90_noerr) call handle_err(status) 107 108 ! definition des dimension : 109 status=nf90_def_dim(ncid, name="time", len=NF90_UNLIMITED, dimid=timeDimID) 110 if (status /= nf90_noerr) call handle_err(status) 111 status=nf90_def_var(ncid, name="time", xtype=nf90_float, dimids=(/ timeDimID/), varid=timeVarID) 112 if (status /= nf90_noerr) call handle_err(status) 113 status=nf90_put_att(ncid, timeVarID, "standard_name", "time") 114 if (status /= nf90_noerr) call handle_err(status) 115 status=nf90_put_att(ncid, timeVarID,"units", "years since 2007-01-01 00:00:00") 116 if (status /= nf90_noerr) call handle_err(status) 117 118 ! definition des variables de sortie : 119 do k=1,nvar ! boucle sur le nbr de variable a definir 120 status=nf90_def_var(ncid, name=trim(namevar(k)), xtype=nf90_float, dimids= & 121 (/ timeDimID /), varid=varID(k)) 122 if (status /= nf90_noerr) call handle_err(status) 123 status=nf90_put_att(ncid, varID(k), "standard_name", trim(standard_name(k))) 124 if (status /= nf90_noerr) call handle_err(status) 125 status=nf90_put_att(ncid, varID(k), "long_name", trim(long_name(k))) 126 if (status /= nf90_noerr) call handle_err(status) 127 status=nf90_put_att(ncid, varID(k), "units", trim(units(k))) 128 if (status /= nf90_noerr) call handle_err(status) 129 enddo 130 131 ! fin de la definition du fchier : 132 status=nf90_enddef(ncid) 133 if (status /= nf90_noerr) call handle_err(status) 134 nbtimeout = 0 ! initialisation compteur sorties axe time 135 else ! pas de sortie netcdf et sans correction de surface 136 corrsurf(:,:)=1. 137 endif 138 46 139 end subroutine init_outshort 47 140 … … 54 147 !------------------ 55 148 real :: smax 149 56 150 vol=0. 57 151 np=0 152 nflot=0 58 153 hmax=0. 59 154 smax=0. … … 74 169 bdotmean=0. 75 170 volf=0. 76 171 lim=0. 172 tendacabf=0. 173 iareag=0. 174 iareaf=0. 175 tendlicalvf=0. 176 tendligroundf=0. 177 tendlibmassbf=0. 77 178 ! 2_preparing outputs 78 179 !-------------------- 79 do i=1,nx80 do j=1,ny81 if ( .not.flot(i,j)) then82 ! if (h(i,j).gt.1.) then83 np=np+184 vol=vol+h(i,j)85 86 ! calcul de la hauteur au dessus de la flottaison 87 if (sealevel-B(i,j).le.0.) then ! socle au dessus du niveau des mers 88 volf=volf+h(i,j)89 else90 volf=volf+h(i,j)-row/ro*(sealevel-b(i,j))91 endif92 93 94 if (h(i,j).gt.hmax) hmax=h(i,j)95 if (s(i,j).gt.smax) smax=s(i,j)96 bmean=bm(i,j)+bmean97 accmean=acc(i,j)+accmean98 tbmean=tbmean+t(i,j,nz)99 tbdotmean=tbdotmean+tbdot(i,j)100 vsmean=vsmean+sqrt(ux(i,j,1)**2+uy(i,j,1)**2)180 do j=1,ny 181 do i=1,nx 182 if (ice(i,j).eq.1) then ! point englace 183 if (.not.flot(i,j)) then ! point pose 184 np=np+1 185 vol=vol+h(i,j) 186 iareag=iareag+1.*corrsurf(i,j) ! surface englacee posee 187 188 ! calcul de la hauteur au dessus de la flottaison 189 if (sealevel-B(i,j).le.0.) then ! socle au dessus du niveau des mers 190 volf=volf+h(i,j)*corrsurf(i,j) ! volume au-dessus de la flottaison 191 else 192 volf=volf+(h(i,j)-row/ro*(sealevel-b(i,j)))*corrsurf(i,j) ! volume au-dessus de la flottaison 193 endif 194 195 if (h(i,j).gt.hmax) hmax=h(i,j) 196 if (s(i,j).gt.smax) smax=s(i,j) 197 bmean=bm(i,j)+bmean 198 accmean=acc(i,j)+accmean 199 tbmean=tbmean+t(i,j,nz) 200 tbdotmean=tbdotmean+tbdot(i,j) 201 vsmean=vsmean+sqrt(ux(i,j,1)**2+uy(i,j,1)**2) 101 202 ! vsdotmean=vsdotmean+vsdot(i,j) 102 203 ! uzsmean=uzsmean+uz(i,j,1) 103 uzsdotmean=uzsdotmean+uzsdot(i,j) 104 uzkmean=uzkmean+uzk(i,j) 105 hdotmean=hdotmean+abs(hdot(i,j)) 106 bdotmean=bdotmean+abs(bdot(i,j)) 107 bmeltmean=bmeltmean+bmelt(i,j) 204 uzsdotmean=uzsdotmean+uzsdot(i,j) 205 uzkmean=uzkmean+uzk(i,j) 206 hdotmean=hdotmean+abs(hdot(i,j)) 207 bdotmean=bdotmean+abs(bdot(i,j)) 208 bmeltmean=bmeltmean+bmelt(i,j) 209 else ! point flottant 210 iareaf=iareaf+1.*corrsurf(i,j) ! surface flottante 211 endif 212 lim=lim+h(i,j)*corrsurf(i,j) ! volume total de glace 213 tendacabf=tendacabf+bm_dtt(i,j)*corrsurf(i,j)/dtt ! smb surface 214 tendlibmassbf=tendlibmassbf-bmelt_dtt(i,j)*corrsurf(i,j)/dtt ! fonte basale 108 215 endif 109 calvmean=calvmean+calv(i,j) 110 ablbordmean=ablbordmean+ablbord(i,j) 216 tendlicalvf=tendlicalvf+calv_dtt(i,j)*corrsurf(i,j)/dtt ! calving 217 tendlibmassbf=tendlibmassbf-ablbord_dtt(i,j)*corrsurf(i,j)/dtt ! partie ablbord de la fonte basale 218 tendligroundf=tendligroundf+grline_dtt(i,j)*corrsurf(i,j)/dtt ! flux a la grounding line 111 219 end do 112 220 end do 113 221 114 222 … … 116 224 hmean=vol/np 117 225 vol=vol*dx*dy 118 volf=volf*dx*dy 226 volf=volf*dx*dy*ice_density 119 227 bmean=bmean/np 120 228 accmean=accmean/np … … 130 238 uzsdotmean=uzsdotmean/np 131 239 uzkmean=uzkmean/np 132 hdotmean=hdotmean/np 133 endif 134 240 hdotmean=hdotmean/np 241 endif 242 lim=lim*dx*dy*ice_density 243 iareag=iareag*dx*dy 244 iareaf=iareaf*dx*dy 245 tendacabf=tendacabf*dx*dy*ice_density/secyear 246 tendlibmassbf=tendlibmassbf*dx*dy*ice_density/secyear 247 tendlicalvf=tendlicalvf*dx*dy*ice_density/secyear 248 tendligroundf=tendligroundf*ice_density/secyear 249 250 135 251 bdotmean=bdotmean/nx/ny 136 252 … … 154 270 !940 format('%%%% ',a,' time=',f8.0,' %%%%') 155 271 272 273 if (ncshortout.eq.1) then ! ecriture netcdf 274 ! Total ice mass 275 var_shortoutput(1)=lim 276 ! Mass above floatation 277 var_shortoutput(2)=volf 278 ! Grounded ice area 279 var_shortoutput(3)=iareag 280 ! Floating ice area 281 var_shortoutput(4)=iareaf 282 ! Total SMB flux 283 var_shortoutput(5)=tendacabf 284 ! Total Basal mass balance flux 285 var_shortoutput(6)=tendlibmassbf 286 ! Total calving flux 287 var_shortoutput(7)=tendlicalvf 288 ! Total grounding line flux 289 var_shortoutput(8)=tendligroundf 290 291 nbtimeout=nbtimeout+1 292 293 status=nf90_put_var(ncid, timeVarID, time, start=(/nbtimeout/)) 294 if (status /= nf90_noerr) call handle_err(status) 295 296 do k=1,nvar ! boucle sur le nbr de variable a ecrire 297 status=nf90_put_var(ncid, varID(k), var_shortoutput(k),start=(/nbtimeout/)) 298 if (status /= nf90_noerr) call handle_err(status) 299 enddo 300 status=nf90_sync(ncid) 301 if (status /= nf90_noerr) call handle_err(status) 302 endif 303 304 156 305 end subroutine shortoutput 306 307 subroutine handle_err(status) 308 integer, intent(in) :: status 309 if (status /= nf90_noerr) then 310 print*,trim(nf90_strerror(status)) 311 stop "stopped" 312 end if 313 end subroutine handle_err 314 157 315 end module output_antarcti_mod -
branches/iLoveclim/SOURCES/Fichiers-parametres/hemin40_param_list.dat
r123 r146 43 43 !___________________________________________________________ 44 44 &topo_file 45 topo_ref = "Greenland_Bamber-et-al_composite_hemin40.nc" !" etopo1_grisliN_GMT.g40"46 topo_dep = "Greenland_Bamber-et-al_composite_hemin40.nc" !" etopo1_grisliN_GMT.g40"45 topo_ref = "Greenland_Bamber-et-al_composite_hemin40.nc" !"SHB_GLAC1D_21k_hemin40.nc" !"ICE6G_21k.nc" !"Greenland_Bamber-et-al_composite_hemin40.nc" 46 topo_dep = "Greenland_Bamber-et-al_composite_hemin40.nc" !"SHB_GLAC1D_21k_hemin40.nc" !"ICE6G_21k.nc" !"Greenland_Bamber-et-al_composite_hemin40.nc" 47 47 grid_topo = "coord-nord-40km.dat" 48 48 ghf_fich = "ijphi_hemin40.nc" … … 79 79 hmax_till = 20.00000 80 80 poro_till = 0.5000000 81 kond0 = 1 .E-6 !10.000000E-0581 kond0 = 10.000000E-05 82 82 / 83 83 ! hmax_till (m) : epaisseur max du sediment … … 128 128 &drag_neff_slope ! nom du bloc dragging neff slope 129 129 130 cf = 2 .e-5 ! 1.e-4130 cf = 20.e-5 ! 1.e-4 131 131 betamax = 1000. 132 132 betamin = 10. … … 169 169 170 170 Hcoup_plateau = 50 ! tres petit quand shelves fixes sinon 250 171 Hcoup_abysses = 300 ! tres petit quand shelves fixes sinon 250172 prof_plateau = 50 ! tres petit quand shelves fixes sinon 250173 prof_abysses = 1000 ! tres petit quand shelves fixes sinon 250171 Hcoup_abysses = 400 ! tres petit quand shelves fixes sinon 250 172 prof_plateau = 100 ! tres petit quand shelves fixes sinon 250 173 prof_abysses = 800 ! tres petit quand shelves fixes sinon 250 174 174 ifrange = 4 175 175 meth_Hcoup = 0 -
branches/iLoveclim/SOURCES/Hemin40_files/output_hemin40_mod.f90
r126 r146 30 30 ! afq for CONSEAU REAL, dimension(nx,ny) :: old_H_dtt ! Epaisseur de glace au pas de temps precedent 31 31 integer, dimension(nx,ny) :: write_mask 32 real :: ilc_units !afq, unit change from Grisli to iLoveclim 32 33 33 34 CONTAINS … … 184 185 ! afq for CONSEAU REAL, dimension(nx,ny) :: delta_H_dtt 185 186 187 ilc_units = dx*dy/DICE 186 188 187 189 ! open(unit=4145,file='reg_output_nord.dat') … … 330 332 331 333 ! afq -- iLOVECLIM water conservation: 332 trendWAC = diff_H*dx*dy !or water_bilan 333 smbWAC(:,:) = (ablbord_dtt(:,:)+ Bm_dtt(:,:))*dx*dy/dtt 334 bmeltWAC(:,:) = Bmelt_dtt(:,:)*dx*dy/dtt 335 calvingWAC(:,:) = Calv_dtt(:,:)*dx*dy/dtt 334 ! units: GRISLI is in m i.e. / yr 335 ! iLOVECLIM expects m3 w.e. /yr 336 trendWAC = diff_H*ilc_units !or water_bilan 337 smbWAC(:,:) = (-ablbord_dtt(:,:)+ Bm_dtt(:,:))*ilc_units/dtt 338 bmeltWAC(:,:) = -Bmelt_dtt(:,:)*ilc_units/dtt 339 calvingWAC(:,:) = Calv_dtt(:,:)*ilc_units/dtt 336 340 !check-> 337 341 if (abs(1-diff_H/(water_bilan+1e-20)).gt.0.01) then 338 write(*,*) "Water isnot conserved in GRISLI", diff_H, water_bilan, abs(1-diff_H/(water_bilan+1e-20))342 write(*,*) "Water not conserved in GRISLI", diff_H, water_bilan, abs(1-diff_H/(water_bilan+1e-20)) 339 343 endif 340 344 -
branches/iLoveclim/SOURCES/Makefile.grisli.inc
r123 r146 43 43 climat-forcage-insolation_mod.o climat_GrIce2sea_years_mod.o \ 44 44 climat_GrIce2sea_years_perturb_mod.o \ 45 climat_InitMIP_years_perturb_mod.o \ 45 46 climat-perturb_mod-0.4.o \ 46 47 ablation_mod.o no_ablation_mod.o \ … … 77 78 calving_frange.o no_calving.o no_lakes.o \ 78 79 out_profile_mod.o printtable_mod.o mix-SIA-L1_mod.o \ 79 furst_schoof_mod.o \80 furst_schoof_mod.o bilan_flux_output_mod.o \ 80 81 relaxation_water_diffusion.o \ 81 82 prescribe-H-i2s_mod.o \ … … 97 98 calving_frange.o no_calving.o no_lakes.o \ 98 99 out_profile_mod.o printtable_mod.o mix-SIA-L1_mod.o \ 99 furst_schoof_mod.o \100 furst_schoof_mod.o bilan_flux_output_mod.o \ 100 101 relaxation_water_diffusion.o \ 101 102 prescribe-H-i2s_mod.o \ … … 187 188 188 189 190 Liste_ANT16 = output_anta40_mod-0.4.o \ 191 dragging_prescr_beta_mod.o \ 192 dragging_prescr_beta_nolin_mod.o \ 193 lect-Ant_gen2010_dat.o \ 194 lect-anteis_mod.o \ 195 bmelt-ant-regions_mod.o \ 196 bmelt-ant-regions-initmip_mod.o \ 197 fake-routines-ant_mod.o \ 198 beta_iter_vitbil_mod.o \ 199 module_choix-ant16km.o \ 200 massb-ant_perturb_Tparam.o \ 201 track_ant40_mod.o 202 189 203 Liste_ANT15-LBq = output_anta_mod-0.4.o \ 190 204 dragging_prescr_beta_mod.o \ … … 197 211 module_choix_antar15_LBq.o \ 198 212 massb-ant_perturb_Tparam.o \ 199 track_ant40_mod.o \213 track_ant40_mod.o 200 214 201 215 Liste_hudson = sedim_declar_hudson_mod.o climat-hudson_mod.o \ … … 296 310 297 311 Dim_GrIce2sea = paradim-GrIce2sea-cut_Tamsin.o geography-GrIce2sea.o 312 313 Dim_ANT16 = paradim-ant16_mod.o geography-ant16.o 298 314 299 315 Dim_ANT15-LBq = paradim-ant15_LBq_mod.o geography-Ant15_LBq.o … … 382 398 %.o: Ant40_files/%.f90 383 399 $(FT) $(NCDF_INC) -c Ant40_files/$*.f90 400 401 # Ant16_files 402 %.o: Ant16_files/%.f90 403 $(FT) $(NCDF_INC) -c Ant16_files/$*.f90 384 404 385 405 # ANT15-LBq_files … … 436 456 #--------------------------------------- 437 457 458 Ant-16 : $(Dim_ANT16) $(mod_dim_communs) \ 459 $(toy_recul) \ 460 $(mod_communs) \ 461 $(mod_clim_tof) \ 462 $(mod_no_tracers) \ 463 $(mod_ell) $(Liste_ANT16) \ 464 $(diagnoshelf) \ 465 $(Liste_Netcdf) \ 466 $(routines_communes) steps_time_loop.o \ 467 $(routine_elliptiques) \ 468 $(Liste_BLAS) 469 470 $(LK) -o ../bin/Ant-16 \ 471 $(Dim_ANT16) $(mod_dim_communs) \ 472 $(toy_recul) \ 473 $(mod_communs) \ 474 $(mod_clim_tof) \ 475 $(mod_no_tracers) \ 476 $(mod_ell) $(Liste_ANT16) \ 477 $(diagnoshelf) \ 478 $(Liste_Netcdf) \ 479 $(routines_communes) steps_time_loop.o \ 480 $(routine_elliptiques) $(NCDF_LIB) $(MKL_LIB) $(Liste_BLAS) 481 482 Ant-16_iterbeta : $(Dim_ANT16) $(mod_dim_communs) \ 483 $(toy_recul) \ 484 $(mod_communs) \ 485 $(mod_clim_tof) \ 486 $(mod_no_tracers) \ 487 $(mod_ell) $(Liste_ANT16) \ 488 $(diagnoshelf) \ 489 $(Liste_Netcdf) \ 490 $(routines_communes) steps_time_loop_avec_iterbeta.o \ 491 $(routine_elliptiques) \ 492 $(Liste_BLAS) 493 494 $(LK) -o ../bin/Ant-16_iterbeta \ 495 $(Dim_ANT16) $(mod_dim_communs) \ 496 $(toy_recul) \ 497 $(mod_communs) \ 498 $(mod_clim_tof) \ 499 $(mod_no_tracers) \ 500 $(mod_ell) $(Liste_ANT16) \ 501 $(diagnoshelf) \ 502 $(Liste_Netcdf) \ 503 $(routines_communes) steps_time_loop_avec_iterbeta.o \ 504 $(routine_elliptiques) $(NCDF_LIB) $(MKL_LIB) $(Liste_BLAS) 505 438 506 Ant-15 : $(Dim_ANT15-LBq) $(mod_dim_communs) \ 439 507 $(toy_recul) \ -
branches/iLoveclim/SOURCES/Netcdf-routines/Description_Variables.dat
r123 r146 1416 1416 "drag_centre" !~ description 1417 1417 ------------------------------------------------------ 1418 "acabf" ! nom de la variable 1419 206 acabf 5 ! number, name in grisli, class 1420 "o" ! node type : "o" ,"^", ">" 1421 "land_ice_surface_specific_mass_balance_flux" !~ long name 1422 "land_ice_surface_specific_mass_balance_flux" !~ standard name 1423 "kg/m2/s" !~ unit 1424 "Surface mass balance flux" !~ description 1425 ------------------------------------------------------ 1426 "libmassbf" ! nom de la variable 1427 207 libmassbf 5 ! number, name in grisli, class 1428 "o" ! node type : "o" ,"^", ">" 1429 "land_ice_basal_specific_mass_balance_flux" !~ long name 1430 "land_ice_basal_specific_mass_balance_flux" !~ standard name 1431 "kg/m2/s" !~ unit 1432 "Basal mass balance flux" !~ description 1433 ------------------------------------------------------ 1434 "dlithkdt" ! nom de la variable 1435 208 dlithkdt 5 ! number, name in grisli, class 1436 "o" ! node type : "o" ,"^", ">" 1437 "tendency_of_land_ice_thickness" !~ long name 1438 "tendency_of_land_ice_thickness" !~ standard name 1439 "m/s" !~ unit 1440 "Ice thickness imbalance" !~ description 1441 ------------------------------------------------------ 1442 "licalvf" ! nom de la variable 1443 209 licalvf 5 ! number, name in grisli, class 1444 "o" ! node type : "o" ,"^", ">" 1445 "land_ice_specific_mass_flux_due_to_calving" !~ long name 1446 "land_ice_specific_mass_flux_due_to_calving" !~ standard name 1447 "kg/m2/s" !~ unit 1448 "Calving flux" !~ description 1449 ------------------------------------------------------ 1450 "ligroundf" ! nom de la variable 1451 210 ligroundf 5 ! number, name in grisli, class 1452 "o" ! node type : "o" ,"^", ">" 1453 "land_ice_specific_mass_flux_due_at_grounding_line" !~ long name 1454 "land_ice_specific_mass_flux_due_at_grounding_line" !~ standard name 1455 "kg/m2/s" !~ unit 1456 "Grounding line flux" !~ description 1457 ------------------------------------------------------ 1458 "uvelsurf" ! nom de la variable 1459 211 uvelsurf 5 ! number, name in grisli, class 1460 "o" ! node type : "o" ,"^", ">" 1461 "land_ice_surface_x_velocityuvelsurf" !~ long name 1462 "land_ice_surface_x_velocityuvelsurf" !~ standard name 1463 "m/s" !~ unit 1464 "Surface velocity in x" !~ description 1465 ------------------------------------------------------ 1466 "vvelsurf" ! nom de la variable 1467 212 vvelsurf 5 ! number, name in grisli, class 1468 "o" ! node type : "o" ,"^", ">" 1469 "land_ice_surface_y_velocity" !~ long name 1470 "land_ice_surface_y_velocity" !~ standard name 1471 "m/s" !~ unit 1472 "Surface velocity in y" !~ description 1473 ------------------------------------------------------ 1474 "wvelsurf" ! nom de la variable 1475 213 wvelsurf 5 ! number, name in grisli, class 1476 "o" ! node type : "o" ,"^", ">" 1477 "land_ice_surface_upward_velocity" !~ long name 1478 "land_ice_surface_upward_velocity" !~ standard name 1479 "m/s" !~ unit 1480 "Surface velocity in z" !~ description 1481 ------------------------------------------------------ 1482 "uvelbase" ! nom de la variable 1483 214 uvelbase 5 ! number, name in grisli, class 1484 "o" ! node type : "o" ,"^", ">" 1485 "land_ice_basal_x_velocity" !~ long name 1486 "land_ice_basal_x_velocity" !~ standard name 1487 "m/s" !~ unit 1488 "Basal velocity in x" !~ description 1489 ------------------------------------------------------ 1490 "vvelbase" ! nom de la variable 1491 215 vvelbase 5 ! number, name in grisli, class 1492 "o" ! node type : "o" ,"^", ">" 1493 "land_ice_basal_y_velocity" !~ long name 1494 "land_ice_basal_y_velocity" !~ standard name 1495 "m/s" !~ unit 1496 "Basal velocity in y" !~ description 1497 ------------------------------------------------------ 1498 "wvelbase" ! nom de la variable 1499 216 wvelbase 5 ! number, name in grisli, class 1500 "o" ! node type : "o" ,"^", ">" 1501 "land_ice_basal_upward_velocity" !~ long name 1502 "land_ice_basal_upward_velocity" !~ standard name 1503 "m/s" !~ unit 1504 "Basal velocity in z" !~ description 1505 ------------------------------------------------------ 1506 "strbasemag" ! nom de la variable 1507 217 strbasemag 5 ! number, name in grisli, class 1508 "o" ! node type : "o" ,"^", ">" 1509 "magnitude_of_land_ice_basal_drag" !~ long name 1510 "magnitude_of_land_ice_basal_drag" !~ standard name 1511 "Pa" !~ unit 1512 "Basal drag" !~ description 1513 ------------------------------------------------------ 1514 "sftgrf" ! nom de la variable 1515 218 sftgrf 5 ! number, name in grisli, class 1516 "o" ! node type : "o" ,"^", ">" 1517 "grounded_ice_sheet_area_fraction" !~ long name 1518 "grounded_ice_sheet_area_fraction" !~ standard name 1519 "-" !~ unit 1520 "Grounded ice sheet area fraction" !~ description 1521 ------------------------------------------------------ 1522 "sftflf" ! nom de la variable 1523 219 sftflf 5 ! number, name in grisli, class 1524 "o" ! node type : "o" ,"^", ">" 1525 "floating_ice_sheet_area_fraction" !~ long name 1526 "floating_ice_sheet_area_fraction" !~ standard name 1527 "-" !~ unit 1528 "Floating ice sheet area fraction" !~ description 1529 ------------------------------------------------------ 1530 "litempbot" ! nom de la variable 1531 220 litempbot 5 ! number, name in grisli, class 1532 "o" ! node type : "o" ,"^", ">" 1533 "land_ice_basal_temperature" !~ long name 1534 "land_ice_basal_temperature" !~ standard name 1535 "K" !~ unit 1536 "Basal temperature" !~ description 1537 ------------------------------------------------------ 1538 -
branches/iLoveclim/SOURCES/New-remplimat/diagno-L2_mod.f90
r123 r146 273 273 enddo 274 274 !$OMP END DO 275 275 !$OMP BARRIER 276 277 ! afq -- initMIP outputs: 278 !$OMP DO 279 do j=2,ny-1 280 do i=2,nx-1 281 taub(i,j) = sqrt( ((tobmx(i,j)+tobmx(i+1,j))*0.5)**2 & 282 + ((tobmy(i,j)+tobmy(i,j+1))*0.5)**2 ) 283 end do 284 end do 285 !$OMP END DO 286 !$OMP WORKSHARE 287 debug_3d(:,:,117) = taub(:,:) 288 !$OMP END WORKSHARE 289 290 276 291 ! Mise ne réserve des vitesses flgzmx et flgzmy 277 292 !$OMP WORKSHARE -
branches/iLoveclim/SOURCES/Temperature-routines/icetemp_mod.f90
r123 r146 305 305 !~ nx,ny,temps,t_cpu,norme 306 306 307 307 debug_3D(:,:,120) = T(:,:,nz)+273.15 308 308 309 If (Itracebug.Eq.1) Write(num_tracebug,*)' fin routine icetemp' 309 310 return -
branches/iLoveclim/SOURCES/ablation_bord.f90
r123 r146 55 55 ablbord_dtt(:,:) = ablbord_dtt(:,:) + ablbord(:,:) 56 56 57 ablbord(:,:)=0.57 !cdc deplace dans bilan_flux_output_mod ablbord(:,:)=0. 58 58 59 59 end subroutine ablation_bord -
branches/iLoveclim/SOURCES/bilan_eau_mod.f90
r126 r146 31 31 real,dimension(nx,ny) :: Bmelt_dtt !< basal melting on ice points accumulated during dtt 32 32 real,dimension(nx,ny) :: calv_dtt !< calving sur dtt (pour calcul bilan d'eau) 33 real,dimension(nx,ny) :: archimtab ! point pose si > 0 34 real,dimension(nx,ny) :: grline_dtt ! grounding line flux during dtt 33 35 34 36 real :: sum_H_old 35 37 real :: diff_H 38 real :: alpha_flot ! ro/row 36 39 37 40 real,dimension(nx,ny) :: bm_dt,bmelt_dt … … 42 45 subroutine init_bilan_eau 43 46 ! initialisation des variables 44 diff_H=0. 45 sum_H_old = sum(H(2:nx-1,2:ny-1),mask=ice(2:nx-1,2:ny-1)==1) 46 tot_water(:,:)=0. 47 bm_dt(:,:)=0. 48 bmelt_dt(:,:)=0. 47 diff_H=0. 48 sum_H_old = sum(H(2:nx-1,2:ny-1),mask=ice(2:nx-1,2:ny-1)==1) 49 tot_water(:,:)=0. 50 bm_dt(:,:)=0. 51 bmelt_dt(:,:)=0. 52 alpha_flot=ro/row 49 53 ! iLOVECLIM initialisation of water conservation related variables 50 51 52 53 54 trendWAC=0. 55 smbWAC(:,:)=0. 56 bmeltWAC(:,:)=0. 57 calvingWAC(:,:)=0. 54 58 end subroutine init_bilan_eau 55 59 56 60 57 61 58 62 … … 88 92 89 93 where (ice(2:nx-1,2:ny-1).eq.1) 90 91 94 Bm_dtt(2:nx-1,2:ny-1) = Bm_dtt(2:nx-1,2:ny-1) + Bm_dt(2:nx-1,2:ny-1) !* dt ! somme Bm sur dt 95 bmelt_dtt(2:nx-1,2:ny-1) = bmelt_dtt(2:nx-1,2:ny-1) + bmelt_dt(2:nx-1,2:ny-1) ! * dt ! somme bmelt sur dt 92 96 endwhere 97 98 archimtab(:,:) = Bsoc(:,:)+H(:,:)*alpha_flot - sealevel 99 gr_line(:,:)=0 100 do j=1,ny 101 do i=1,nx 102 !afq if ((H(i,j).gt.0.).and.(archimtab(i,j).GE.0.).and.(Bsoc(i,j).LE.sealevel)) then ! grounded with ice 103 if ((H(i,j).gt.0.).and.(archimtab(i,j).GE.0.)) then ! grounded with ice 104 if (archimtab(i-1,j).LT.0..and.Uxbar(i,j).LT.0..and..not.flot_marais(i-1,j)) gr_line(i,j)=1 105 if (archimtab(i+1,j).LT.0..and.Uxbar(i+1,j).GT.0..and..not.flot_marais(i+1,j)) gr_line(i,j)=1 106 if (archimtab(i,j-1).LT.0..and.Uybar(i,j).LT.0..and..not.flot_marais(i,j-1)) gr_line(i,j)=1 107 if (archimtab(i,j+1).LT.0..and.Uybar(i,j+1).GT.0..and..not.flot_marais(i,j+1)) gr_line(i,j)=1 108 endif 109 enddo 110 enddo 111 112 where (gr_line(:,:).eq.1) 113 !~ grline_dtt(:,:)= (((uxbar(:,:)+eoshift(uxbar(:,:),shift=1,boundary=0.,dim=1))**2+ & 114 !~ (uybar(:,:)+eoshift(uybar(:,:),shift=1,boundary=0.,dim=2))**2)**0.5)*0.5 & 115 !~ *H(:,:) + grline_dtt(:,:) 116 grline_dtt(:,:)= - sqrt( & 117 ( (uxbar(:,:)+eoshift(uxbar(:,:),shift=1,boundary=0.,dim=1))*dy/2. )**2 + & 118 ( (uybar(:,:)+eoshift(uybar(:,:),shift=1,boundary=0.,dim=2))*dx/2. )**2 ) & 119 * H(:,:) * dt + grline_dtt(:,:) 120 endwhere 121 93 122 94 123 if (isynchro.eq.1) then … … 103 132 104 133 ! bilan d'eau sur la grille : 105 106 134 water_bilan=sum(tot_water(:,:)) 135 diff_H = diff_H/dtt 107 136 108 137 !999 format(f0.2,1x,e15.8,1x,i10,8(1x,e15.8)) 109 138 ! write(6,999),time,sum_H,count(ice(:,:)==1),diff_H,water_bilan,sum(calv_dtt(:,:))/dtt,sum(ablbord_dtt(:,:))/dtt,sum(bmelt_dtt(:,:),mask=ice(:,:)==1)/dtt,sum(bm(:,:),mask=ice(:,:)==1),sum(Bm_dtt(:,:))/dtt,sum(bmelt_dtt(:,:))/dtt 110 139 diff_H_water_bilan(2:nx-1,2:ny-1)=tot_water(2:nx-1,2:ny-1)-diff_H_2D(2:nx-1,2:ny-1) 111 140 112 141 endif -
branches/iLoveclim/SOURCES/bmelt-seuil-profondeur_mod.f90
r77 r146 16 16 module bmelt_seuil_prof 17 17 18 ! prametrise la fusion basale (ice shelves)19 ! Pour l'actuel : 2 valeurs pour 2 domaines de profondeur20 ! + une valeur pour bmgrz21 ! A choisir dans le module_choix18 ! prametrise la fusion basale (ice shelves) 19 ! Pour l'actuel : 2 valeurs pour 2 domaines de profondeur 20 ! + une valeur pour bmgrz 21 ! A choisir dans le module_choix 22 22 23 use module3d_phy23 use module3d_phy 24 24 25 25 26 implicit none26 implicit none 27 27 28 real :: bm_grz !< valeur prescrite a la grounding zone29 real,dimension(nx,ny) :: bmgrz !< tabelau fusion basale a la grounding zone28 real :: bm_grz !< valeur prescrite a la grounding zone 29 real,dimension(nx,ny) :: bmgrz !< tabelau fusion basale a la grounding zone 30 30 31 real :: bmshelf_plateau !< valeur prescrite sur le plateau cont.32 real :: bmshelf_abysses !< valeur prescrite au dessus de l'ocean profond33 real :: depth_talus !< profondeur de transition34 real,dimension(nx,ny) :: bmshelf !< tableau fusion basale sous shelf31 real :: bmshelf_plateau !< valeur prescrite sur le plateau cont. 32 real :: bmshelf_abysses !< valeur prescrite au dessus de l'ocean profond 33 real :: depth_talus !< profondeur de transition 34 real,dimension(nx,ny) :: bmshelf !< tableau fusion basale sous shelf 35 35 36 36 37 37 contains 38 !-------------------------------------------------------------------------------39 !> SUBROUTINE: init_bmelt40 !! Cette routine fait l'initialisation pour la fusion basale.41 !! @note Elle est appelée par inputfile-vec-0.5.f9042 !!43 !>44 subroutine init_bmelt38 !------------------------------------------------------------------------------- 39 !> SUBROUTINE: init_bmelt 40 !! Cette routine fait l'initialisation pour la fusion basale. 41 !! @note Elle est appelée par inputfile-vec-0.5.f90 42 !! 43 !> 44 subroutine init_bmelt 45 45 46 46 47 47 48 ! Cette routine fait l'initialisation pour la fusion basale.49 ! Elle est appelée par inputfile-vec-0.5.f9048 ! Cette routine fait l'initialisation pour la fusion basale. 49 ! Elle est appelée par inputfile-vec-0.5.f90 50 50 51 51 52 namelist/bmelt_seuil/bm_grz,bmshelf_plateau,bmshelf_abysses,depth_talus52 namelist/bmelt_seuil/bm_grz,bmshelf_plateau,bmshelf_abysses,depth_talus 53 53 54 if (itracebug.eq.1) call tracebug('entree dans init_bmelt de bmelt_seuil_prof')54 if (itracebug.eq.1) call tracebug('entree dans init_bmelt de bmelt_seuil_prof') 55 55 56 rewind(num_param) ! pour revenir au debut du fichier param_list.dat57 read(num_param,bmelt_seuil)58 write(num_rep_42,bmelt_seuil)56 rewind(num_param) ! pour revenir au debut du fichier param_list.dat 57 read(num_param,bmelt_seuil) 58 write(num_rep_42,bmelt_seuil) 59 59 60 ! ecriture dans le fichier parametres60 ! ecriture dans le fichier parametres 61 61 62 62 428 format(A) 63 63 64 write(num_rep_42,428)'!___________________________________________________________'65 write(num_rep_42,428) '&bmelt_seuil ! module bmelt_seuil_prof'66 write(num_rep_42,*) 'bm_grz =',bm_grz67 write(num_rep_42,*) 'bmshelf_plateau =',bmshelf_plateau68 write(num_rep_42,*) 'bmshelf_abysses =',bmshelf_abysses69 write(num_rep_42,*) 'depth_talus =',depth_talus70 write(num_rep_42,*)'/'71 write(num_rep_42,428) '! Pour l actuel : bm_grz a la grounding line'72 write(num_rep_42,428) '! bmshelf_plateau sur le plateau continental'73 write(num_rep_42,428) '! bmshelf_abysses pour les grandes profondeurs'74 write(num_rep_42,428) '! depth_talus, negative, separation entre les 2 domaines'75 write(num_rep_42,*)76 write(num_rep_42,428)'!___________________________________________________________'64 write(num_rep_42,428)'!___________________________________________________________' 65 write(num_rep_42,428) '&bmelt_seuil ! module bmelt_seuil_prof' 66 write(num_rep_42,*) 'bm_grz =',bm_grz 67 write(num_rep_42,*) 'bmshelf_plateau =',bmshelf_plateau 68 write(num_rep_42,*) 'bmshelf_abysses =',bmshelf_abysses 69 write(num_rep_42,*) 'depth_talus =',depth_talus 70 write(num_rep_42,*)'/' 71 write(num_rep_42,428) '! Pour l actuel : bm_grz a la grounding line' 72 write(num_rep_42,428) '! bmshelf_plateau sur le plateau continental' 73 write(num_rep_42,428) '! bmshelf_abysses pour les grandes profondeurs' 74 write(num_rep_42,428) '! depth_talus, negative, separation entre les 2 domaines' 75 write(num_rep_42,*) 76 write(num_rep_42,428)'!___________________________________________________________' 77 77 78 78 79 79 80 bmgrz(:,:) = bm_grz80 bmgrz(:,:) = bm_grz 81 81 82 where (Bsoc0(:,:).lt.depth_talus)83 bmshelf(:,:)=bmshelf_abysses84 elsewhere85 bmshelf(:,:)=bmshelf_plateau86 end where82 where (Bsoc0(:,:).lt.depth_talus) 83 bmshelf(:,:)=bmshelf_abysses 84 elsewhere 85 bmshelf(:,:)=bmshelf_plateau 86 end where 87 87 88 debug_3D(:,:,34)=bmshelf(:,:)89 return90 end subroutine init_bmelt88 debug_3D(:,:,34)=bmshelf(:,:) 89 return 90 end subroutine init_bmelt 91 91 92 !________________________________________________________________________________92 !________________________________________________________________________________ 93 93 94 !> SUBROUTINE: bmeltshelf95 !! Cette routine calcule la fusion basale proprement dite pour les points flottants96 !! @note coefbmshelf a ete calcule par forclim et permet de faire varier en fonction du climat97 !>94 !> SUBROUTINE: bmeltshelf 95 !! Cette routine calcule la fusion basale proprement dite pour les points flottants 96 !! @note coefbmshelf a ete calcule par forclim et permet de faire varier en fonction du climat 97 !> 98 98 99 subroutine bmeltshelf99 subroutine bmeltshelf 100 100 101 101 102 ! cette routine calcule la fusion basale proprement dite pour les points flottants103 ! coefbmshelf a ete calcule par forclim et permet de faire varier en fonction du climat102 ! cette routine calcule la fusion basale proprement dite pour les points flottants 103 ! coefbmshelf a ete calcule par forclim et permet de faire varier en fonction du climat 104 104 105 integer :: ngr ! nombre de voisins flottants106 real :: coef_talus ! pour ne pas changer la fusion au dessus de l'ocean profond105 integer :: ngr ! nombre de voisins flottants 106 real :: coef_talus ! pour ne pas changer la fusion au dessus de l'ocean profond 107 107 108 if (itracebug.eq.1) call tracebug('entree dans bmeltshelf de bmelt_seuil_prof')108 if (itracebug.eq.1) call tracebug('entree dans bmeltshelf de bmelt_seuil_prof') 109 109 110 where (Bsoc0(:,:).lt.depth_talus)111 bmshelf(:,:)=bmshelf_abysses112 elsewhere113 bmshelf(:,:)=bmshelf_plateau114 end where110 where (Bsoc0(:,:).lt.depth_talus) 111 bmshelf(:,:)=bmshelf_abysses 112 elsewhere 113 bmshelf(:,:)=bmshelf_plateau 114 end where 115 115 116 do j=1,ny117 do i=1,nx116 do j=1,ny 117 do i=1,nx 118 118 119 talus_nochange: if (Bsoc0(i,j).lt.depth_talus) then120 coef_talus = 1 ! pas de changement au dessus de l'ocecan profond119 talus_nochange: if (Bsoc0(i,j).lt.depth_talus) then 120 coef_talus = 1 ! pas de changement au dessus de l'ocecan profond 121 121 else 122 coef_talus = coefbmshelf122 coef_talus = coefbmshelf 123 123 endif talus_nochange 124 124 125 125 126 shelf:if (flot(i,j)) then ! partie flottante126 shelf: if (flot(i,j)) then ! partie flottante 127 127 128 128 bmelt(i,j)=coef_talus*bmshelf(i,j) 129 129 130 ! fbm est vrai si le point est flottant mais un des voisins est pose131 ! calcule dans flottab130 ! fbm est vrai si le point est flottant mais un des voisins est pose 131 ! calcule dans flottab 132 132 133 133 if (fbm(i,j)) then 134 bmelt(i,j)=coef_talus*bmgrz(i,j)135 endif 134 bmelt(i,j)=coef_talus*bmgrz(i,j) 135 endif 136 136 137 137 138 138 139 ! ATTENTION le bloc suivant sert a determiner la fusion basale d'equilibre140 ! pour les shelves stationnaires139 ! ATTENTION le bloc suivant sert a determiner la fusion basale d'equilibre 140 ! pour les shelves stationnaires 141 141 142 if (igrdline.eq.1) then 143 corrbmelt(i,j)=hdot(i,j)+bmelt(i,j) ! le bmelt d'equilibre 144 debug_3D(i,j,28)=corrbmelt(i,j) 145 endif 142 if ((igrdline.eq.1).and.(ibmelt_inv.eq.1)) then 143 ! corrbmelt(i,j)=hdot(i,j)+bmelt(i,j) ! le bmelt d'equilibre 144 ! bmelt(i,j)=corrbmelt(i,j) 145 corrbmelt(i,j)=corrbmelt(i,j)+hdot(i,j)*0.85 146 bmelt(i,j)=bmelt(i,j)+corrbmelt(i,j) 147 endif 146 148 147 149 148 150 else ! point posé, on compte le nombre de voisins flottants 149 ngr=0 150 if ((i.ne.1).and.(i.ne.nx).and.(j.ne.1).and.(j.ne.ny)) then 151 if (flot(i+1,j)) ngr=ngr+1 152 if (flot(i-1,j)) ngr=ngr+1 153 if (flot(i,j+1)) ngr=ngr+1 154 if (flot(i,j-1)) ngr=ngr+1 155 end if 156 151 ngr=0 152 if ((i.ne.1).and.(i.ne.nx).and.(j.ne.1).and.(j.ne.ny)) then 153 if (flot(i+1,j)) ngr=ngr+1 154 if (flot(i-1,j)) ngr=ngr+1 155 if (flot(i,j+1)) ngr=ngr+1 156 if (flot(i,j-1)) ngr=ngr+1 157 end if 157 158 158 ! la fusion des points limites est une combinaison entre valeur posée et valeur flottante159 ! en fonction du nombre de points flottants160 159 161 bmelt(i,j)= ngr/4.*bmgrz(i,j)*coef_talus+(1.-ngr/4.)*bmelt(i,j)162 160 ! la fusion des points limites est une combinaison entre valeur posée et valeur flottante 161 ! en fonction du nombre de points flottants 163 162 163 bmelt(i,j)= ngr/4.*bmgrz(i,j)*coef_talus+(1.-ngr/4.)*bmelt(i,j) 164 165 if ((igrdline.eq.1).and.(ibmelt_inv.eq.1)) then 166 corrbmelt(i,j)=corrbmelt(i,j)+hdot(i,j) !*0.85 167 bmelt(i,j)=bmelt(i,j)+corrbmelt(i,j) 168 endif 164 169 endif shelf 165 166 end do 170 end do 167 171 end do 168 172 169 170 if (igrdline.eq.1) then 171 bmelt(:,:)=0. ! hdot donne alors le -bmelt 173 if ((igrdline.eq.1).and.(ibmelt_inv.eq.0)) then 174 where (i_Hp(:,:).eq.1) 175 bmelt(:,:)=0. ! hdot donne alors le -bmelt 176 endwhere 172 177 endif 173 174 178 175 179 return -
branches/iLoveclim/SOURCES/calving_frange.f90
r126 r146 122 122 mass_total=0d0 123 123 !afq for CONSEAU calvtest=0. 124 mass_total=0d0125 124 126 125 ! calcul du dhdt lagrangien … … 159 158 160 159 !ifint: if((front(i,j).gt.0).and.(front(i,j).lt.4)) then 161 ifint: if(front(i,j).lt.4) then 160 !cdc pb avec front ifint: if(front(i,j).lt.4) then 161 ifint: if((H(i-1,j).lt.2.).or.(H(i+1,j).lt.2.).or.(H(i,j-1).lt.2.).or.(H(i,j+1).lt.2)) then ! si on est au bord avec test sur H 162 162 ! ifint: le point doit avoir au - 1 voisin mais ne pas etre entouré de glace 163 163 ! ce qui evite la formation des polynies dans les shelfs … … 491 491 S(i,j)=H(i,j)*(1.-ro/row) + sealevel 492 492 B(i,j)=S(i,j) - H(i,j) 493 ! ATTENTION ne pas mettre ice=0 sinon degradation bilan d'eau (bm et bmelt non comptabilises dans ce cas) 493 494 endif 494 495 !H(i,j)=1 -
branches/iLoveclim/SOURCES/conserv-mass-adv-diff_sept2009_mod.f90
r123 r146 416 416 417 417 ! if ((time.lt.time_gl(1)).or.(nt.lt.2)) then ATTENTION test seulement si version prescribe-H_mod.f90 418 call prescribe_present_H_gl ! prescribe present thickness at the grounding line 418 if (ibmelt_inv.eq.0) then 419 call prescribe_present_H_gl ! prescribe present thickness at the grounding line 420 else if (ibmelt_inv.eq.1) then ! inversion bmelt 421 call prescribe_present_H_gl_bmelt ! prescribe only grounding line points 422 else 423 print*,'ibmelt_inv value must be 0 or 1 !!!' 424 stop 425 endif 419 426 ! else 420 427 ! call prescribe_retreat … … 550 557 H(:,:)=max(H(:,:),0.) ! pas d'epaisseur negative 551 558 552 !~ ! calcul du masque "ice"553 !~ where (flot(:,:)) ! points flottants, sera éventuellement réévalué dans flottab554 !~ where(H(:,:).gt.max(Hmin,Hmin+BM(:,:)-Bmelt(:,:)))555 !~ ice(:,:)=1556 !~ elsewhere557 !~ ice(:,:)=0558 !~ H(:,:)=max(1.,min(0.,(sealevel - Bsoc(:,:))*row/ro-0.01))559 !~ endwhere560 !~ ! H(:,:)=max(H(:,:),1.) ! dans la partie marine l'épaisseur mini est 1 m561 !~ ! H(:,:)=max(1.,min(0.,(sealevel - Bsoc(:,:))*row/ro-0.01))562 !~ elsewhere ! points posés563 !~ where(H(:,:).gt.0.)564 !~ ice(:,:)=1565 !~ elsewhere566 !~ ice(:,:)=0567 !~ endwhere568 !~ endwhere569 570 559 ! eventuellement retirer apres spinup ou avoir un cas serac 571 560 Hdot(:,:)=(H(:,:)-vieuxH(:,:))/dt 572 561 !$OMP END WORKSHARE 573 562 574 !~ if (igrdline.ne.3) then 575 !~ !$OMP WORKSHARE 576 !~ Hdot(:,:)=min(Hdot(:,:),10.) 577 !~ Hdot(:,:)=max(Hdot(:,:),-10.) 578 !~ !$OMP END WORKSHARE 579 !~ endif 563 if (ibmelt_inv.eq.1) then ! inversion du bmelt avec igrdline=1 564 !$OMP WORKSHARE 565 where (i_Hp(:,:).eq.1) 566 H(:,:)=Hp(:,:) 567 endwhere 568 !$OMP END WORKSHARE 569 endif 580 570 581 571 !$OMP WORKSHARE 582 where (i_hp(:,:).ne.1)583 H(:,:)=vieuxH(:,:)+Hdot(:,:)*dt584 end where585 586 587 588 572 ! si mk0=-1, on garde l'epaisseur precedente 589 573 ! en attendant un masque plus propre -
branches/iLoveclim/SOURCES/dragging_param_beta_mod.f90
r123 r146 36 36 real :: betamin ! betamin : (Pa) frottement mini sous les streams 37 37 38 real :: beta_slope ! = A in: logB = A log Neff +K39 real :: beta_ intercept ! = K in: logB = A log Neff +K38 real :: beta_slope ! = A in: B = A x Neff ** K 39 real :: beta_expo ! = K in: B = A x Neff ** K 40 40 41 41 real,dimension(nx,ny) :: neff ! pression effective noeuds majeurs … … 61 61 implicit none 62 62 63 ! local variables, defining the rugosity-enhanced flow 64 real :: expo_slope 65 real :: pente_min, pente_max 66 67 namelist/drag_param_beta/beta_intercept,beta_slope,betamax,betamin,coef_ile 63 namelist/drag_param_beta/beta_slope,beta_expo,betamax,betamin,coef_ile 68 64 69 65 if (itracebug.eq.1) call tracebug(' dragging avec neff et slope') … … 82 78 write(num_rep_42,428) '&drag_param_beta ! nom du bloc dragging param beta' 83 79 write(num_rep_42,*) 84 write(num_rep_42,*) 'beta_intercept = ', beta_intercept85 80 write(num_rep_42,*) 'beta_slope = ', beta_slope 81 write(num_rep_42,*) 'beta_expo = ', beta_expo 86 82 write(num_rep_42,*) 'betamax = ', betamax 87 83 write(num_rep_42,*) 'betamin = ', betamin 88 84 write(num_rep_42,*)'/' 89 write(num_rep_42,428) '! Intercept & slope of linear reg on loglog'85 write(num_rep_42,428) '! Slope & expo of beta = - slope x Neff ** expo' 90 86 91 87 !------------------------------------------------------------------- … … 181 177 !$OMP END DO 182 178 183 184 179 !$OMP WORKSHARE 185 180 186 181 ! new parametrisation of beta on Neff: 187 !betamx(:,:)=exp(beta_intercept * log(10.) )*neffmx(:,:)**(beta_slope) 188 !betamy(:,:)=exp(beta_intercept * log(10.) )*neffmy(:,:)**(beta_slope) 189 betamx(:,:)= (10.**beta_intercept)*(neffmx(:,:)**beta_slope) 190 betamy(:,:)= (10.**beta_intercept)*(neffmy(:,:)**beta_slope) 191 182 betamx(:,:)= beta_slope*(neffmx(:,:)**beta_expo) 183 betamy(:,:)= beta_slope*(neffmy(:,:)**beta_expo) 192 184 193 185 where (ilemx(:,:)) betamx(:,:) = betamx(:,:) * coef_ile … … 203 195 where ( hwatmy(:,:) .lt. 0.5 ) betamy(:,:) = betamax 204 196 205 ! aurel, we add the neff threshold:206 !where ((ibase(:,:).ne.1).and.(.not.flot(:,:)).and.(H(:,:).gt.1.)) fleuve(:,:)=.true.207 !where ( (betamx(:,:).lt.betamax) .or. (betamy(:,:).lt. betamax) ) fleuve(:,:)=.true.208 197 !$OMP END WORKSHARE 209 198 -
branches/iLoveclim/SOURCES/flottab2-0.7.f90
r123 r146 68 68 integer :: numtache 69 69 integer :: nb_pt 70 real :: petit_H=0.001 ! pour test ice sur zone flottante 70 71 contains 71 72 ! ----------------------------------------------------------------------------------- … … 593 594 where (flot(:,:)) 594 595 !cdc 1m where (H(:,:).gt.max(Hmin,Hmin+BM(:,:)-Bmelt(:,:))) 595 where (H(:,:).gt.0.) 596 where (H(:,:).gt.max(BM(:,:)-Bmelt(:,:)+petit_H,0.)*dt) 597 !cdc where (H(:,:).gt.0.) 596 598 ice(:,:)=1 597 599 elsewhere … … 745 747 746 748 call determin_marais 749 750 ! pour sorties initMIP: 751 debug_3D(:,:,118) = ice(:,:)*(1-mk(:,:)) 752 debug_3D(:,:,119) = ice(:,:)*mk(:,:) 753 747 754 748 755 end subroutine flottab … … 1270 1277 end do 1271 1278 !$OMP END DO 1272 1279 !$OMP BARRIER 1273 1280 ! traitement des coins 1274 1281 … … 1279 1286 1280 1287 ! Les points à plus d'un point de grille du bord sont front=-1 1288 !$OMP WORKSHARE 1281 1289 nofront(:,:)=0 1290 !$OMP END WORKSHARE 1291 !$OMP BARRIER 1282 1292 1283 1293 !$OMP DO … … 1290 1300 enddo 1291 1301 !$OMP END DO 1302 !$OMP BARRIER 1303 1304 !$OMP WORKSHARE 1292 1305 where (nofront(:,:).eq.-1) 1293 1306 front(:,:)=-1 1294 1307 endwhere 1295 1308 !$OMP END WORKSHARE 1296 1309 !$OMP END PARALLEL 1297 1310 -
branches/iLoveclim/SOURCES/initial-0.3.f90
r123 r146 30 30 use sorties_ncdf_grisli 31 31 use util_recovery 32 use bilan_flux_mod 32 33 33 34 !------------------------------------------------------------------------------------- … … 137 138 call init_calving 138 139 140 call init_bilan_flux 139 141 ! 140 142 !------------------------------------------------------------------------------------- -
branches/iLoveclim/SOURCES/initial-phy-2.f90
r123 r146 27 27 28 28 namelist/runpar/runname,icompteur,iout,reprcptr,itracebug,num_tracebug,comment_run 29 namelist/grdline/igrdline,Schoof 29 namelist/grdline/igrdline,Schoof,ibmelt_inv 30 30 namelist/timesteps/dtmin,dtmax,dtt,testdiag,tbegin,tend 31 31 … … 127 127 write(num_rep_42,*) 'igrdline = ',igrdline 128 128 write(num_rep_42,*) 'Schoof = ',Schoof 129 write(num_rep_42,*) 'ibmelt_inv = ',ibmelt_inv 129 130 write(num_rep_42,*)'/' 130 write(num_rep_42,428)'! igrdline : 1 ligne d echouage fixée, sinon 0' 131 write(num_rep_42,428)'! Schoof : 0 pas de Schoof, 1 flux de Schoof' 131 write(num_rep_42,428)'! igrdline : 1 ligne d echouage fixée, sinon 0' 132 write(num_rep_42,428)'! Schoof : 0 pas de Schoof, 1 flux de Schoof' 133 write(num_rep_42,428)'! ibmelt_inv : 0 cas std, 1 inversion du bmelt (avec igrdline=1)' 132 134 write(num_rep_42,*) 133 135 -
branches/iLoveclim/SOURCES/main3D-0.4-40km.f90
r126 r146 237 237 238 238 239 240 if (iter_beta.eq.0) then241 242 if (itracebug.eq.1) call tracebug(' Avant appel routine icethick3')243 call icethick3244 debug_3D(:,:,88) = S(:,:)245 if (itracebug.eq.1) call tracebug(' Apres appel routine icethick3')246 end if239 !cdc supprime pour initialisation propre 240 !~ if (iter_beta.eq.0) then 241 242 !~ if (itracebug.eq.1) call tracebug(' Avant appel routine icethick3') 243 !~ call icethick3 244 !~ debug_3D(:,:,88) = S(:,:) 245 !~ if (itracebug.eq.1) call tracebug(' Apres appel routine icethick3') 246 !~ end if 247 247 248 248 … … 305 305 end do 306 306 307 308 307 call Neffect() 309 308 call flottab() 310 311 309 call calving 310 call ablation_bord 311 call flottab 312 312 call Neffect() 313 314 315 313 call diffusiv() 316 314 call SIA_velocities() 317 318 315 endif 319 316 -
branches/iLoveclim/SOURCES/mix-SIA-L1_mod.f90
r77 r146 171 171 endif 172 172 173 174 ! afq -- initMIP outputs: 175 176 !$OMP WORKSHARE 177 debug_3d(:,:,111) = ( (ux (:,:,1) + eoshift( ux(:,:,1) ,shift=1,boundary=0.,dim=1))/2. )/secyear 178 debug_3d(:,:,112) = ( (uy (:,:,1) + eoshift( uy(:,:,1) ,shift=1,boundary=0.,dim=2))/2. )/secyear 179 debug_3d(:,:,113) = ( uzr (:,:,1) * ice(:,:) )/secyear 180 debug_3d(:,:,114) = ( (ux (:,:,nz) + eoshift( ux(:,:,nz),shift=1,boundary=0.,dim=1))/2. )/secyear 181 debug_3d(:,:,115) = ( (uy (:,:,nz) + eoshift( uy(:,:,nz),shift=1,boundary=0.,dim=2))/2. )/secyear 182 debug_3d(:,:,116) = ( uzr (:,:,nz) * ice(:,:) )/secyear 183 !$OMP END WORKSHARE 184 185 173 186 end subroutine mix_SIA_L1 174 187 -
branches/iLoveclim/SOURCES/out_cptr_mod.f90
r77 r146 312 312 Uyflgz(:,:) = Uy(:,:,nz) 313 313 314 debug_3D(:,:,120) = T(:,:,nz) + 273.15 314 315 315 316 -
branches/iLoveclim/SOURCES/prescribe-H-i2s_mod.f90
r4 r146 127 127 hp(:,:) = Hp0(:,:) 128 128 end where 129 if (itracebug.eq.1) call tracebug(' fin prescribe_present_H_gl 129 if (itracebug.eq.1) call tracebug(' fin prescribe_present_H_gl') 130 130 131 131 132 132 end subroutine prescribe_present_H_gl 133 134 !______________________________________________________________________________________ 135 !> function prescribe_present_H_gl_bmelt 136 !! calculate the initial grounding line position 137 !! only grounding line points are prescribed to present value 138 !! @return i_hp(:,:) and hp(:,:) 139 140 subroutine prescribe_present_H_gl_bmelt 141 142 implicit none 143 144 if (itracebug.eq.1) call tracebug(' Entree dans routine prescribe_present_H_gl_bmelt') 145 146 ! where (MK_gl0(:,:) .eq. 1) ! grounding line only !cdc pour calcule fonte basale 147 ! i_hp(:,:) = 1 ! thickness prescribed to present value 148 ! hp(:,:) = Hp0(:,:) 149 ! end where 150 i_hp(:,:) = 0 151 if (itracebug.eq.1) call tracebug(' fin prescribe_present_H_gl_bmelt') 152 153 154 end subroutine prescribe_present_H_gl_bmelt 133 155 134 156 !______________________________________________________________________________________ -
branches/iLoveclim/SOURCES/resol_adv_diff_2D-sept2009.f90
r77 r146 278 278 279 279 relax_loop: do while(.not.stopp) 280 ntour=ntour+1 281 !$OMP PARALLEL 282 !$OMP DO PRIVATE(reste) 283 do j=2,ny-1 284 do i=2,nx-1 285 286 reste = (((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))- frelax(i,j) 289 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)) 293 294 295 deltaH(i,j) = reste/crelax(i,j) 296 280 ntour=ntour+1 281 !$OMP PARALLEL 282 !$OMP DO PRIVATE(reste) 283 do j=2,ny-1 284 do i=2,nx-1 285 reste = (((arelax(i,j)*newH(i-1,j) +drelax(i,j)*newH(i,j-1)) & 286 + (brelax(i,j)*newH(i+1,j) + erelax(i,j)*newH(i,j+1))) & 287 + crelax(i,j)*newH(i,j))- frelax(i,j) 288 289 deltaH(i,j) = reste/crelax(i,j) 290 end do 297 291 end do 298 end do 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 310 newH(:,:)=newH(:,:)-deltaH(:,:) 311 !$OMP END WORKSHARE 312 !$OMP END PARALLEL 292 !$OMP END DO 293 294 !$OMP WORKSHARE 295 newH(:,:)=newH(:,:)-deltaH(:,:) 296 !$OMP END WORKSHARE 297 !$OMP END PARALLEL 313 298 314 299 315 300 ! critere d'arret: 316 301 ! ---------------- 317 318 delh=0 319 320 !$OMP PARALLEL 321 !$OMP DO REDUCTION(+:delh) 322 do j=2,ny-1323 do i=2,nx-1324 delh=delh+deltaH(i,j)**2302 delh=0 303 304 !$OMP PARALLEL 305 !$OMP DO REDUCTION(+:delh) 306 do j=2,ny-1 307 do i=2,nx-1 308 delh=delh+deltaH(i,j)**2 309 end do 325 310 end do 326 end do 327 !$OMP END DO 328 !$OMP END PARALLEL 329 330 if (delh.gt.0.) then 331 testh=sqrt(delh)/((nx-2)*(ny-2)) 332 else 333 testh=0. 334 endif 335 stopp = (testh.lt.1.e-4).or.(ntour.gt.100) 336 337 311 !$OMP END DO 312 !$OMP END PARALLEL 313 314 if (delh.gt.0.) then 315 testh=sqrt(delh)/((nx-2)*(ny-2)) 316 else 317 testh=0. 318 endif 319 stopp = (testh.lt.1.e-4).or.(ntour.gt.100) 338 320 339 321 end do relax_loop 340 322 341 342 ! thickness at the upwind node343 !do j = 1, ny344 ! do i = 2, nx345 ! debug_3D(i,j,92) = c_west(i,j) * newH(i-1,j) + c_east(i,j) * newH(i,j)346 ! end do347 !end do348 !do j = 2, ny349 ! do i = 1, nx350 ! debug_3D(i,j,93) = c_south(i,j) * newH(i,j-1) + c_north(i,j) * newH(i,j)351 ! end do352 !end do353 354 323 if (itracebug.eq.1) call tracebug(' fin routine resolution_diffusion') 355 356 324 357 325 return -
branches/iLoveclim/SOURCES/spinup_mod.f90
r123 r146 102 102 case default 103 103 print*,'type_vitbil valeur invalide dans spinup_vitbil' 104 stop 104 105 end select 105 106 … … 257 258 ddbx(:,:)=0. 258 259 ddby(:,:)=0. 259 260 gzmx(:,:)=.true. 261 gzmy(:,:)=.true. 262 flgzmx(:,:)=.false. 263 flgzmy(:,:)=.false. 264 fleuvemx(:,:)=.false. 265 fleuvemy(:,:)=.false. 266 267 do j=2,ny 268 do i=2,nx 269 if (flot(i,j).and.(flot(i-1,j))) then 270 flotmx(i,j)=.true. 271 flgzmx(i,j)=.true. 272 gzmx(i,j)=.false. 273 end if 274 if (flot(i,j).and.(flot(i,j-1))) then 275 flotmy(i,j)=.true. 276 flgzmy(i,j)=.true. 277 gzmy(i,j)=.false. 278 end if 279 end do 280 end do 281 282 where (coefmxbmelt(:,:).le.0.) 283 gzmx(:,:)=.false. 284 endwhere 285 where (coefmybmelt(:,:).le.0.) 286 gzmy(:,:)=.false. 287 endwhere 288 flgzmx(:,:) = flgzmx(:,:) .or. gzmx(:,:) 289 flgzmy(:,:) = flgzmy(:,:) .or. gzmy(:,:) 290 fleuvemx(:,:)=gzmx(:,:) 291 fleuvemy(:,:)=gzmy(:,:) 292 260 293 if (itracebug.eq.1) call tracebug(' Subroutine calc_coef_vitbil') 261 294 call slope_surf -
branches/iLoveclim/SOURCES/steps_time_loop.f90
r123 r146 22 22 use icetempmod 23 23 use diagno_mod 24 use bilan_eau_mod 24 use bilan_eau_mod 25 use bilan_flux_mod 25 26 ! use track_debug 26 27 … … 56 57 57 58 call icethick3 58 59 59 call flottab 60 61 60 call calving 62 63 61 call ablation_bord 64 65 62 call bilan_eau 66 if (isynchro.eq.1) then 67 call shortoutput 68 diff_H = 0. 69 Bm_dtt(:,:) = 0. 70 bmelt_dtt(:,:) = 0. 71 calv_dtt(:,:)=0. 72 ablbord_dtt(:,:)=0. 73 diff_H_2D(:,:)=0. 74 endif 63 call bilan_flux_output 64 65 !~ if (isynchro.eq.1) then 66 !~ call shortoutput 67 !~ diff_H = 0. 68 !~ Bm_dtt(:,:) = 0. 69 !~ bmelt_dtt(:,:) = 0. 70 !~ calv_dtt(:,:)=0. 71 !~ ablbord_dtt(:,:)=0. 72 !~ diff_H_2D(:,:)=0. 73 !~ grline_dtt(:,:)=0. 74 !~ endif 75 75 76 76 call flottab … … 158 158 call testsort_time_ncdf(time) 159 159 if (iglob_ncdf .EQ. 1) call sortie_ncdf_cat 160 160 if (isynchro.eq.1) then 161 call shortoutput 162 diff_H = 0. 163 Bm_dtt(:,:) = 0. 164 bmelt_dtt(:,:) = 0. 165 calv_dtt(:,:)=0. 166 ablbord_dtt(:,:)=0. 167 diff_H_2D(:,:)=0. 168 grline_dtt(:,:)=0. 169 endif 161 170 162 171 ! sortie compteur tous les dtcpt ans … … 449 458 end if 450 459 451 iter_visco= 10 ! warning, test sur l'impact iteration dragging et visco460 !cdc iter_visco= 10 ! warning, test sur l'impact iteration dragging et visco 452 461 ! Cat 18 janv 2013 453 462 -
branches/iLoveclim/SOURCES/util_recovery.f90
r32 r146 76 76 character(len=*),intent(inout) :: filin 77 77 character(len=10) :: ntime 78 character(len=1) :: signe,unite 78 79 79 80 if (itracebug.eq.1) call tracebug(' Entree dans routine testout_recovery ') … … 88 89 ! un identifiant "grestart" pour identifier ces .nc restarts 89 90 ! des autres 90 91 92 predef: do indice=1,size(tab_time) 93 difftime=abs(TIME-tab_time(indice)) 94 if ( difftime.lt.dtmin ) then 95 ipredef=1 96 time_out(1)=tab_time(indice) 97 exit predef 98 end if 99 end do predef 100 91 101 if ((mod(abs(dble(TIME)),dble(DTOUT)).lt.dble(dtmin)).OR. & 92 102 (ABS(TIME+297000).LT.dtmin) .OR. & … … 94 104 (ABS(TIME+21000) .LT.dtmin) .OR. & 95 105 (ABS(TIME+16000) .LT.dtmin) .OR. & 96 (TIME .EQ. TEND) ) THEN 97 98 predef: do indice=1,size(tab_time) 99 difftime=abs(TIME-tab_time(indice)) 100 if ( difftime.lt.dtmin ) then 101 ipredef=1 102 time_out(1)=tab_time(indice) 103 exit predef 104 end if 105 end do predef 106 (TIME .EQ. TEND).OR.(ipredef.eq.1) ) THEN 106 107 107 108 if (ipredef .EQ. 1) then 108 write(ntime,'(i10)') INT(abs(dble(tab_time(indice)))/dble(DTOUT))109 if (tab_time(indice) .Lt. 0) then110 filin=runname//'-grestart-k'//trim(ADJUSTL(ntime))111 else112 filin=runname//'-grestart+k'//trim(ADJUSTL(ntime))113 endif109 ! pour changer de signe entre le passe et le futur 110 if (tab_time(indice).GT.0.) then 111 signe= '+' 112 else 113 signe= '-' 114 endif 114 115 115 else !ipredef==0 116 if (TIME .ge. Tend) then 117 time_out(1)=TIME 118 filin=runname//'-grestart_2' 119 else 120 time_out(1)=TIME 121 filin=runname//'-grestart_1' 122 end if 123 end if 124 logic_out=.TRUE. 125 endif 116 if (int(mod(abs(tab_time(indice)),1000.)).eq.0) then 117 ! temps multiple de 1000 118 unite='k' 119 write(ntime,'(i10)') int(abs(tab_time(indice)/1000.)) 120 else if (int(mod(abs(tab_time(indice)),100.)).eq.0) then 121 ! temps multiple de 100 122 unite='c' 123 write(ntime,'(i10)') int(abs(tab_time(indice)/100.)) 124 else if (int(mod(abs(tab_time(indice)),10.)).eq.0) then 125 ! temps multiple de 10 126 unite='d' 127 write(ntime,'(i10)') int(abs(tab_time(indice)/10.)) 128 else 129 ! temps en annees 130 unite='a' 131 write(ntime,'(i10)') int(abs(tab_time(indice)/1.)) 132 endif 133 filin=runname//'-grestart'//signe//unite//trim(ADJUSTL(ntime)) 134 135 else !ipredef==0 136 if (TIME .ge. Tend) then 137 time_out(1)=TIME 138 filin=runname//'-grestart_2' 139 else 140 time_out(1)=TIME 141 filin=runname//'-grestart_1' 142 end if 143 end if 144 logic_out=.TRUE. 145 endif 126 146 127 147 end subroutine testout_recovery
Note: See TracChangeset
for help on using the changeset viewer.