- Timestamp:
- 02/09/24 10:58:55 (4 months ago)
- Location:
- branches/GRISLIv3/SOURCES
- Files:
-
- 34 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GRISLIv3/SOURCES/3D-physique-gen_mod.f90
r474 r481 32 32 integer :: i_resolmeca !< defini le type d'association SIA-L1 33 33 integer :: inv_beta !< 0 : run std, 1 : inversion du beta 34 integer :: ICOUPLE !<35 34 integer :: ICOMPTEUR !< reprise fichier cptr 36 35 integer :: IOUT !< type de fichier de sortie pour reprise … … 40 39 integer :: NTMAX !< 41 40 42 integer :: ITEMP !<43 41 integer :: niter_nolin !< number of velocity iterations for non-linear dragging laws 44 42 integer :: ndebug !< pour faire des sorties de debug a plusieurs pas de temps -
branches/GRISLIv3/SOURCES/Ant16_files/bmelt-seuil-profondeur_initmip_inv_mod.f90
r446 r481 69 69 real*8, dimension(:,:), pointer :: tab !< tableau 2d real pointer 70 70 character(len=100) :: file_number_shelves ! fichier avec les zones ice-shelves 71 character(len=100) :: file_bmelt_anom72 71 real,dimension(nx,ny) :: dist_talus ! distance au talus 73 character(len=100) :: file_dist_talus ! pas utilise ici mais pour compatibilite lecture namelist72 character(len=100) :: file_dist_talus 74 73 real :: bmelt_dist0 ! pas utilise ici mais pour compatibilite lecture namelist 75 74 -
branches/GRISLIv3/SOURCES/Climate_modules/climat-perturb_mod-0.4.f90
r467 r481 193 193 194 194 195 character(len=80):: filin196 integer :: i,j197 integer :: ivo,jvo198 199 195 namelist/clim_pert/coefT,rappact,retroac,rapbmshelf,mincoefbmelt,maxcoefbmelt,filforc 200 196 … … 217 213 write(num_rep_42,*)'/' 218 214 write(num_rep_42,*) 219 220 221 222 !cdc Commente pour être compatible avec lecture fichiers Cat Schoofing223 224 !~ !!!!!!!! ATTENTION AJOUTE POUR TEST MAIS A REMETTRE AU PROPRE PLUS TARD C. DUMAS !!!!!!!!!!225 !~ !!!!!!!! ancien input_climat_ref de lect_clim_act_anteis226 !~ ! accumulation de Philippe227 !~ filin='accumHUY40km.dat'228 !~ call lect_eis(nx,ny,precip,filin,DIRNAMEINP)229 !~ !====================================== La reponse est 42 ===========230 !~ write(num_rep_42,*) 'fichier accum : ', filin231 232 !~ ! cas particulier de Vostok233 !~ ivo=101234 !~ jvo=62235 !~ do j=jvo-1,jvo+1236 !~ do i=ivo-1,ivo+1237 !~ precip(i,j)=0.02 ! valeur plus faible a Vostok.238 !~ end do239 !~ end do240 !~ acc(:,:)=precip(:,:)241 242 !~ ! temperature en surface :243 !~ ! parametrisation de Fortuin pour la temperature annuelle.244 !~ do j=1,ny245 !~ do i=1,nx246 247 !~ if (s0(i,j).le.200.) then ! shelfs248 !~ tann(i,j)=49.642-0.943*abs(ylat(i,j))249 !~ else if ((s0(i,j).gt.200.).and.(s0(i,j).lt.1500.)) then ! pente250 !~ tann(i,j)=36.689-0.005102*s0(i,j)-0.725*abs(ylat(i,j))251 !~ else if (s0(i,j).ge.1500.) then ! plateau252 !~ tann(i,j)=7.405-0.014285*s0(i,j)-0.180*abs(ylat(i,j))253 !~ endif254 255 !~ ta0(i,j)=tann(i,j)256 !~ ! pour la temperature d'ete, idem parametrisation huybrechts257 !~ tjuly(i,j)=tann(i,j)-17.65+0.00222*s0(i,j)&258 !~ +0.40802*abs(ylat(i,j))259 !~ end do260 !~ end do261 !~ !!!!!!!! FIN MODIF TEMPORAIRE !!!!!!!!!!262 !cdc fin Commente pour être compatible avec lecture fichiers Cat Schoofing263 215 264 216 return -
branches/GRISLIv3/SOURCES/Climate_modules/climat_InitMIP_years_perturb_mod.f90
r451 r481 82 82 83 83 integer :: err ! recuperation d'erreur 84 integer :: i,k 85 86 !aurel for Tafor: 87 character(len=8) :: control !label to check clim. forc. file (filin) is usable 88 character(len=80) :: filin 89 84 integer :: k 85 90 86 real :: time_depart_snaps !> temps du debut premier snapshot 91 87 92 88 namelist/clim_smb_T_gen/smb_file,coef_smb_unit,temp_annual_file 93 ! version Aurelien Groenland avec file_lapse :94 ! namelist/smb_anom_initMIP/file_smb_anom,file_lapse,coef_smb_anom_unit,nb_snap,time_depart_snaps,massb_time95 ! version utilisee pour Antarctique :96 89 namelist/smb_anom_initMIP/file_smb_anom,file_lapse,coef_smb_anom_unit,nb_snap,time_depart_snaps,massb_time 97 90 98 !!!!! namelist/clim_snap/nb_snap,file_smb_snap,massb_time_snap99 91 100 92 428 format(A) … … 319 311 implicit none 320 312 321 integer i,ift322 313 real :: coefanomtime 323 314 -
branches/GRISLIv3/SOURCES/Climate_modules/climat_forcage_mod.f90
r451 r481 80 80 implicit none 81 81 character(len=8) :: control !< label to check clim. forc. file (filin) is usable 82 integer :: l !< in snapshot files:the first column is the mask, read but not used83 82 integer :: err !< recuperation erreur 84 integer :: i, j,k,m83 integer :: i,k,m 85 84 real*8, dimension(:,:), pointer :: tab2d => null() !< tableau 2d pointer 86 85 real*8, dimension(:,:,:), pointer :: tab3d => null() !< tableau 3d pointer … … 292 291 ttr(k)=ttr_temp(k) 293 292 enddo 294 295 296 !~ write(num_rep_42,'(A)')'!___________________________________________________________'297 !~ write(num_rep_42,'(A)') '&clim_forcage ! nom du bloc '298 !~ write(num_rep_42,*)299 !~ write(num_rep_42,'(A,A,A)') 'clim_ref_file = "',trim(clim_ref_file),'"'300 !~ write(num_rep_42,*) 'ttr = ', ttr301 !~ ! write(num_rep_42,'(A,A,A)') 'forcage_file= "',trim(forcage_file),'"'302 !~ write(num_rep_42,'(A,A,A)') 'forcage_file1 = "',trim(forcage_file1),'"'303 !~ write(num_rep_42,'(A,A,A)') 'forcage_file2 = "',trim(forcage_file2),'"'304 !~ write(num_rep_42,*) 'typerun = ', typerun305 !~ write(num_rep_42,*) 'lapserate = ', lapserate306 !~ write(num_rep_42,*) 'rappact = ', rappact307 !~ write(num_rep_42,'(A,A,A)') ' filforc = "',trim(filforc),'"'308 !~ write(num_rep_42,*) 'pertbmb = ', pertbmb309 !~ write(num_rep_42,*) 'coefT = ', coefT310 !~ write(num_rep_42,*) 'coefbmb = ', coefbmb311 !~ write(num_rep_42,*) 'r_atmvar = ', r_atmvar312 !~ write(num_rep_42,*)'/'313 !~ write(num_rep_42,*)314 293 315 294 PYY=2.*PI/50. … … 330 309 integer :: l !< dumm index for loops on snapsots files l=itr,ntr-1 331 310 integer :: itr !< nb of the current snapshot file (change with time) 332 integer :: i, j,k,m311 integer :: i,m 333 312 integer :: ift !< indice correspondant au pas de temps du fichier de forcage 334 real :: TEMP !< calcul du nbr de jour < psolid335 313 real,dimension(nx,ny) :: deltaZs ! diff temp par rapport a topo orog0 336 314 real,dimension(nx,ny,12) :: prmois ! precip sur topo Zs -
branches/GRISLIv3/SOURCES/Climate_modules/climat_smb_perturb_mod.f90
r452 r481 65 65 character(len=100) :: smb_file ! fichier smb 66 66 character(len=100) :: temp_annual_file ! temperature annuelles 67 character(len=100) :: file_smb_snap !> nom du fichier dans lequel sont les snapshots68 67 69 68 integer :: err ! recuperation d'erreur 70 integer :: i ,j,k69 integer :: i 71 70 72 71 !aurel for Tafor: -
branches/GRISLIv3/SOURCES/Climate_modules/climat_transient_GCM_mod.f90
r451 r481 47 47 real*8, dimension(:,:), pointer :: tab2D !< tableau 2d real pointer 48 48 real*8, dimension(:,:,:), pointer :: tab3D !< tableau 3d real pointer 49 real*8, dimension(:,:,:,:), pointer :: tab4D !< tableau 4d real pointer50 49 51 50 real :: time_depart_snaps !> temps du debut premier snapshot -
branches/GRISLIv3/SOURCES/Draggings_modules/dragging_beta_iter_vitbil_mod.f90
r449 r481 23 23 24 24 use io_netcdf_grisli, only: read_ncdf_var 25 use runparam, only: itracebug ,num_tracebug25 use runparam, only: itracebug 26 26 use geography, only: dirnameinp,nx,ny 27 27 use module3D_phy, only: num_param,num_rep_42,inv_beta,betamax,betamax_2d,mk_init,flot,beta_centre, & -
branches/GRISLIv3/SOURCES/Draggings_modules/dragging_coulomb_friction_mod.f90
r473 r481 185 185 186 186 use geography, only: nx,ny 187 use module3d_phy, only: betamax,beta_centre,betamx,betamy,neffmx,neffmy,hwater,flot, ux,uy,&187 use module3d_phy, only: betamax,beta_centre,betamx,betamy,neffmx,neffmy,hwater,flot, & 188 188 uxbar,uybar 189 189 -
branches/GRISLIv3/SOURCES/Draggings_modules/dragging_coulomb_friction_simplhydro_mod.f90
r408 r481 199 199 200 200 use geography, only: nx,ny 201 use module3d_phy, only: betamax,beta_centre,betamx,betamy,hwater,flot, ux,uy,H,B,bsoc,sealevel_2d, &201 use module3d_phy, only: betamax,beta_centre,betamx,betamy,hwater,flot,H,bsoc,sealevel_2d, & 202 202 uxbar,uybar 203 203 use param_phy_mod,only: G,RO,ROFRESH -
branches/GRISLIv3/SOURCES/Draggings_modules/dragging_prescr_beta_mod.f90
r408 r481 52 52 ! nouvelle version : lit les fichiers nc 53 53 54 use runparam, only: itracebug ,num_tracebug54 use runparam, only: itracebug 55 55 use geography, only: dirnameinp 56 56 use module3d_phy, only: num_param,num_rep_42,inv_beta,betamax,betamax_2d,mk_init,h,bsoc, & -
branches/GRISLIv3/SOURCES/Fichiers-parametres/Makefile.tof-lsce3130.inc
r361 r481 23 23 24 24 # mettre debug à 1 pour compiler avec options strictes 25 debug ?= 025 debug ?= 1 26 26 27 27 # compilation avec ifort : -
branches/GRISLIv3/SOURCES/Netcdf-routines/io_netcdf_GRISLI.f90
r449 r481 839 839 subroutine Write_Ncdf_var2d_Real(varname,dimname,file,tabvar,typevar) 840 840 use netcdf,only: nf90_open,nf90_close,nf90_write,nf90_noerr,nf90_inq_varid, & 841 nf90_def_var,nf90_put_var,nf90_inq_dimid,nf90_enddef,nf90_redef 841 nf90_def_var,nf90_put_var,nf90_inq_dimid,nf90_enddef,nf90_redef, & 842 nf90_double,nf90_float 842 843 ! 843 844 ! implicit none … … 1427 1428 !!@param[in] typevar : type of the variable to write 1428 1429 !!@return idef 1429 subroutine Write_Ncdf_var1d_Int_t(varname,dimname,file,tabvar,time,idef ,typevar)1430 subroutine Write_Ncdf_var1d_Int_t(varname,dimname,file,tabvar,time,idef) 1430 1431 use netcdf,only: nf90_open,nf90_close,nf90_write,nf90_noerr,nf90_inq_varid,nf90_double, & 1431 1432 nf90_float,nf90_def_var,nf90_put_var,nf90_inq_dimid,nf90_enddef,nf90_redef … … 1433 1434 implicit none 1434 1435 ! 1435 Character(*),intent(in) :: varname,file ,typevar1436 Character(*),intent(in) :: varname,file 1436 1437 Character(*),dimension(2),intent(in) :: dimname 1437 1438 Integer :: time -
branches/GRISLIv3/SOURCES/Netcdf-routines/sortie_netcdf_GRISLI_mod.0.2-hassine.f90
r471 r481 665 665 use geography, only: nx,ny,nz,nzm,dx,dy 666 666 use runparam, only: itracebug,xmin,ymin,dirsource 667 use module3d_phy, only: s,s0,h, h0,b,sealevel,mk,mk_init,hdot,dhdt,tann,tjuly,t,tpmp, &668 acc, abl,ghf,phid,bmelt,uxbar,uybar,ux,uy,frotmx,frotmy,tobmx,tobmy, &667 use module3d_phy, only: s,s0,h,b,sealevel,mk,mk_init,hdot,dhdt,tann,tjuly,t,tpmp, & 668 acc,ghf,phid,bmelt,uxbar,uybar,ux,uy,frotmx,frotmy,tobmx,tobmy, & 669 669 taushelf,epsxx,epsyy,epsxy,eps,abar,pvi,pvm,betamx,betamy,beta_centre, & 670 670 ablbord_dtt,ice,front,gr_line_schoof,hwater,hdotwater,bsoc,bm, & -
branches/GRISLIv3/SOURCES/New-remplimat/diagno-L2_mod.f90
r471 r481 683 683 subroutine mismip_boundary_cond 684 684 685 use module3d_phy, only: imx_diag,imy_diag,u xbar,uybar685 use module3d_phy, only: imx_diag,imy_diag,uybar 686 686 use runparam, only: itracebug 687 687 -
branches/GRISLIv3/SOURCES/New-remplimat/remplimat-shelves-tabTu.f90
r478 r481 107 107 real, dimension(nx,ny) :: Hmy_oppos ! 108 108 109 integer i,j ,err109 integer i,j 110 110 111 111 if (itracebug.eq.1) call tracebug(' Subroutine rempli_L2') -
branches/GRISLIv3/SOURCES/Temperature-routines/icetemp_mod.f90
r467 r481 17 17 !> 18 18 19 Subroutine init_icetemp(Num_rep_42_m) 19 Subroutine init_icetemp 20 20 21 Use Icetemp_declar, only: Nfracq,Iq,Ecart_phid 21 22 Use module3D_phy, only: tbdot … … 23 24 Implicit None 24 25 25 !< Arguments26 Integer, Intent(In)::Num_rep_42_m !< Id Of Reponse27 ! Character(Len=80) :: Filin28 26 !________________________________________________________________ 29 27 ! La Temperature Du Point De Congelation De L'Eau De Mer … … 36 34 Nfracq=1 37 35 38 ! Write(Num_rep_42_m,*) 'Calcul Des Temperatures'39 ! Write(Num_rep_42_m,*) 'Nfracq=',Nfracq40 41 36 Iq=1 42 ! If (Iq.Eq.1) Write(Num_rep_42_m,*) 'Chaleur Demi Maille, Iq=',Iq43 ! If (Iq.Eq.2) Write(Num_rep_42_m,*) 'Chaleur Centree, Iq=',Iq44 ! If (Iq.Eq.3) Write(Num_rep_42_m,*) 'Chaleur Pente, Iq=',Iq45 ! If (Iq.Eq.4) Write(Num_rep_42_m,*) 'Chaleur U_taub, Iq=',Iq46 ! If (Iq.Eq.5) Write(Num_rep_42_m,*) 'Chaleur U_taub_stag, Iq=',Iq47 ! If (Iq.Eq.6) Write(Num_rep_42_m,*) 'Chaleur Q_sia_stag,Iq=',Iq48 ! If (Iq.Eq.7) Write(Num_rep_42_m,*) 'Chaleur Q_all_stag,Iq=',Iq49 ! Write(Num_rep_42_m,*)50 37 51 38 Ecart_phid=0.5 52 ! Write(Num_rep_42_m,*) ' Si Base Froide, La Chaleur De Glissement Est En Exp(Delta T * Ecart_phid)'53 ! Write(Num_rep_42_m,*) 'Ecart_phid=',Ecart_phid54 ! Write(Num_rep_42_m,*) '---------------------------------------------------------------------------'55 39 56 40 tbdot(:,:) = 0. … … 70 54 subroutine icetemp 71 55 !$ use OMP_LIB 72 use module3D_phy, only: uxbar,uybar,dtt,nzm,time,ux,uy,uzr,ts,h, b,&56 use module3D_phy, only: uxbar,uybar,dtt,nzm,time,ux,uy,uzr,ts,h, & 73 57 ghf,t,tpmp,phid,flot,ibase,debug_3D,tbdot 74 58 use runparam, only: itracebug,num_tracebug -
branches/GRISLIv3/SOURCES/bmelt-beckmann-gcm_mod.f90
r472 r481 167 167 call Read_Ncdf_var('thetao',file_inputs,tab3d) 168 168 temp_ocean(:,:,:) = tab3d(:,:,:) 169 169 170 170 file_inputs=TRIM(DIRNAMEINP)//'Snapshots-GCM/'//TRIM(SO_file) 171 171 call Read_Ncdf_var('so',file_inputs,tab3d) … … 339 339 ! print*, 'salinity_ocean', salinity_ocean(1,1,:) 340 340 341 342 341 !temp_ocean(:,:,:) = temp_ocean(:,:,:) - 273.15 342 343 343 !coef_OM = K_t * 0.01420418516 344 344 coef_OM = K_t * (row * cpw / (cl * ro))**2 … … 512 512 ! This will be the netCDF ID for the file and data variable. 513 513 integer :: ncid, varid, status 514 integer, dimension(3) :: count515 integer, dimension(3) :: start516 514 517 515 ! Open the file. -
branches/GRISLIv3/SOURCES/celltest_tracer.f90
r446 r481 5 5 6 6 !! Find the cell origin index for the previous time_tra step 7 use module3d_phy, only: e,u xbar,uybar,flotmx,flotmy,ux,uy,gzmx,gzmy7 use module3d_phy, only: e,uybar,flotmy,uy,gzmy 8 8 use geography, only: nx,ny,nz,dx,dy 9 9 use tracer_vars, only: xgrid,ygrid … … 87 87 print *,"CellTest(y+;",time_tra,"): Out-of-range increment (",ic,",",jc,",",kc,")", v_y 88 88 ! print*, ytracer, ygrid(jm) 89 90 91 92 89 print*, uybar(ic,jc), uybar(ic,jc+1), flotmy(ic,jc), flotmy(ic, jc+1) 90 print *, uy(ic,jc,:) 91 print *, uy(ic,jc+1,:) 92 print*, gzmy(ic, jc), gzmy(ic,jc+1) 93 93 ! STOP 94 94 jm = jc-1 … … 114 114 if(E_k < E(1)) then 115 115 E_k = E(1) 116 km=1 116 km=1 117 117 118 118 else if(E_k > E(nz)) then 119 119 E_k = E(nz) 120 120 km=nz-1 121 121 122 122 else ! this used to be a loop on its own, now shortcuts if E_k is special 123 123 124 124 if(v_E>=0.0) then !! Downward flow of ice in E system 125 126 125 if (kc==1) then 126 !! No action, pending tactical discussion with GKCC 127 127 km = 1 128 128 else 129 129 km=kc - 1 130 130 do 131 131 if( (E_k >= E(km)) .and. (E_k <= E(km+1)) ) exit -
branches/GRISLIv3/SOURCES/flottab2-0.7.f90
r477 r481 68 68 use module3D_phy, only:igrdline,mk_init,flot,H,sealevel_2d,Bsoc,S,H,B,& 69 69 ice,front,& 70 iceberg,uxbar,uybar,mk,gzmx,gzmy,flotmx,flotmy,hmx,hmy, isynchro,&70 iceberg,uxbar,uybar,mk,gzmx,gzmy,flotmx,flotmy,hmx,hmy,& 71 71 flgzmx,flgzmy,fbm,bm,bmelt,debug_3D,dt 72 72 use param_phy_mod, only:row,ro … … 83 83 real,dimension(nx,ny) :: uys1 !< uybar a l'entree de flottab 84 84 85 integer :: nb_pt86 85 real :: petit_H=0.001 ! pour test ice sur zone flottante 87 86 88 integer :: i,j ,ii,jj87 integer :: i,j 89 88 90 89 if (itracebug.eq.1) call tracebug(' Entree dans routine flottab') -
branches/GRISLIv3/SOURCES/furst_schoof_mod.f90
r470 r481 130 130 frot_coef = betamx(i+1,j) 131 131 endif 132 call flux_Schoof4Schoof (Hgl,Abar(i,j),frot_coef,alpha_flot,glen(1), m_weert,bfx,phi_prescr)132 call flux_Schoof4Schoof (Hgl,Abar(i,j),frot_coef,alpha_flot,glen(1),bfx,phi_prescr) 133 133 else 134 134 print*,'ATTENTION FLUX AUTRE QUE TSAI OU SCHOOF NON IMPLEMENTE' … … 220 220 frot_coef = betamx(i+1,j) 221 221 endif 222 call flux_Schoof4Schoof (Hgl,Abar(i,j),frot_coef,alpha_flot,glen(1), m_weert,bfx,phi_prescr)222 call flux_Schoof4Schoof (Hgl,Abar(i,j),frot_coef,alpha_flot,glen(1),bfx,phi_prescr) 223 223 else 224 224 print*,'ATTENTION FLUX AUTRE QUE TSAI OU SCHOOF NON IMPLEMENTE' … … 307 307 frot_coef = betamy(i,j+1) 308 308 endif 309 call flux_Schoof4Schoof (Hgl,Abar(i,j),frot_coef,alpha_flot,glen(1), m_weert,bfy,phi_prescr)309 call flux_Schoof4Schoof (Hgl,Abar(i,j),frot_coef,alpha_flot,glen(1),bfy,phi_prescr) 310 310 else 311 311 print*,'ATTENTION FLUX AUTRE QUE TSAI OU SCHOOF NON IMPLEMENTE' … … 391 391 frot_coef = betamy(i,j+1) 392 392 endif 393 call flux_Schoof4Schoof (Hgl,Abar(i,j),frot_coef,alpha_flot,glen(1), m_weert,bfy,phi_prescr)393 call flux_Schoof4Schoof (Hgl,Abar(i,j),frot_coef,alpha_flot,glen(1),bfy,phi_prescr) 394 394 else 395 395 print*,'ATTENTION FLUX AUTRE QUE TSAI OU SCHOOF NON IMPLEMENTE' … … 573 573 ! Dans un premier temps, pas de terme horizontal (regarder dans toy_recul une tentative de confinement) 574 574 575 subroutine flux_Schoof4Schoof (Hgl,A_mean,C_frot,alpha,n_glen, m_weert,back_force_coef,phi_schoof)575 subroutine flux_Schoof4Schoof (Hgl,A_mean,C_frot,alpha,n_glen,back_force_coef,phi_schoof) 576 576 577 577 use param_phy_mod, only:rog … … 584 584 real,intent(in) :: alpha 585 585 real,intent(in) :: n_glen 586 real,intent(in) :: m_weert587 586 real,intent(in) :: back_force_coef 588 587 real,intent(out) :: phi_schoof -
branches/GRISLIv3/SOURCES/initial-0.3.f90
r474 r481 22 22 subroutine initial 23 23 24 use module3D_phy, only:time,H,hmx,hmy,T,tpmp,bmelt,icompteur ,num_rep_4224 use module3D_phy, only:time,H,hmx,hmy,T,tpmp,bmelt,icompteur 25 25 use geography, only: geoplace 26 26 use runparam, only: tbegin … … 85 85 86 86 if (geoplace(1:5).ne.'mism3') then 87 call init_icetemp (num_rep_42)! initialise le calcul de temperature87 call init_icetemp ! initialise le calcul de temperature 88 88 call thermal_prop_icetemp ! appel aux proprietes thermiques 89 89 call init_bmelt ! Appel aux tableaux d'initialisation des ice shelves -
branches/GRISLIv3/SOURCES/interpolate_tracer.f90
r409 r481 9 9 integer, intent(IN) :: ic, jc, kc, im, jm, km 10 10 real, intent(INOUT) :: fx, fy, fz, E_k 11 real :: fx_1, fy_1, fz_1, a_xy, a_xy_p, f_zt,a_tmp, ac , al11 real :: fx_1, fy_1, fz_1, a_xy, a_xy_p, a_tmp, ac , al 12 12 real :: fra1, fra2, fra0, accucumul1, accucumul2, accucumul0, & 13 13 thinning, thinning2, f_k, a_xy_m, fzz, fprime, fsec -
branches/GRISLIv3/SOURCES/isostasie_mod-0.3.f90
r468 r481 33 33 34 34 use iso_declar,only: nlith,dt_iso,tausoc,dl,rl,lbloc,we,charge 35 use module3D_phy, only: icouple,err,h0,bsoc0,sealevel_2d35 use module3D_phy, only: err,h0,bsoc0,sealevel_2d 36 36 use geography, only: geoplace,nx,ny,dx,dy 37 37 use param_phy_mod, only: ro,row,rog,rowg,romg -
branches/GRISLIv3/SOURCES/lake_rsl_mod.f90
r449 r481 35 35 implicit none 36 36 37 !~ !* General & discrete parameters 38 !~ real :: undef=-9999. !undef=1.e20 39 40 41 !~ !* Parameters and arrays used in the Initialization step 42 real, dimension(nx,ny) :: orog, orog_lake, lake_level 43 integer, dimension(nx,ny) :: omsk, cmsk 44 integer, dimension(nx,ny) :: cont!, conttrack, contsave, runoff_msk, mask_search, exut 45 integer, dimension(nx,ny) :: ocean 46 integer, dimension(nx,ny) :: pot_lake 47 integer :: hi_res_runoff ! select 1 : interpolation on hi resolution topo or 0 : no interpolation 48 49 integer :: countcont ! nbr de continents 50 !~ integer :: nbocean, countocean 51 52 !~ !* Parameters and arrays of the runoff calculation 53 integer, dimension(nx,ny) :: rtm 54 55 !~ !* Debug mode & nc files 56 character(len=100) :: file_topo_hi_res, coord_topo_hi_res 57 !~ character(len=15) :: invar 58 !~ integer :: ncid, xdimid, ydimid, varid 59 !~ integer :: latid, lonid, rtmid, orogid, cmskid, contid, oroglakeid, lake_levelid 37 integer :: hi_res_runoff ! select 1 : interpolation on hi resolution topo or 0: no interpolation 60 38 61 39 !* Routing code parameter 62 40 integer, dimension(8,2) :: inc 63 64 !~ !cdc variable ajoutees65 66 !~ integer, dimension(8) :: loccont ! cont des 8 points autour du point ii jj67 68 !~ integer :: sumcont ! somme des cont des 8 points autour du point ii jj69 70 71 !72 !~ integer :: maxloop ! pour debug evite boucle infinies73 !~ integer,dimension(2) :: ijcoord ! coordonnees ij du point le plus bas74 !~ integer,dimension(2) :: ijcoord_cmsk ! coordonnees ij du point cotier le plus bas75 !~ real, dimension(8) :: locorog ! orog des 8 points voisins76 integer,dimension(nx,ny) :: lake ! 1 si lac, 0 sinon77 !~ integer,dimension(8) :: locexut ! 1 si exutoire => permet de gerer les lacs78 79 !~ !integer :: contprint=0 ! pour debug et arret du print80 !~ integer :: contexut ! compte les points sous le niveau du lac81 82 !~ logical :: stop_lake83 !~ integer, dimension(2) :: ij_lake84 !~ integer,dimension(8) :: locomsk ! omsk des 8 voisins85 !~ integer :: kloc86 87 41 integer,dimension(80,2) :: inclake ! 80 voisins (+4 -4) en i,j 88 integer, dimension(nx,ny) :: mask_extlake ! extension du lac sous la glace89 real, dimension(nx,ny) :: orog_extlake ! niveau du lac sur les zones glace a proximité (rayon de 4 pts de grille)90 !~ integer, dimension(nx,ny) :: clake ! point lac avec voisin point englace91 42 real, dimension(nx,ny) :: sealevel_2D_loc 92 43 … … 112 63 real, dimension(nxhi,nyhi) :: anom_Bsoc_hi, anom_S_hi, anom_H_hi ! anomalie de topo resol std vs resol_hi 113 64 real, dimension(nxhi,nyhi) :: Bsoc_hi, S_hi, H_hi ! topo haute resolution a l'instant t 114 real, dimension(nxhi,nyhi) :: orog_hi ! orographie hi_res 115 real, dimension(nxhi,nyhi) :: S_interp_hi, H_interp_hi ! interpolation de S et H low res vers hi_res sans anomalie (pour faire topo englacee non bruitee) 116 integer, dimension(nxhi,nyhi) :: omsk_hi, cmsk_hi 117 integer, dimension(nxhi,nyhi) :: cont_hi ! masque des points continent hi_res 118 integer, dimension(nxhi,nyhi) :: ocean_hi ! masque des points ocean hi_res 119 integer, dimension(nxhi,nyhi) :: pot_lake_hi 120 integer, dimension(nxhi,nyhi) :: lake_hi ! 1 si lac, 0 sinon 121 integer, dimension(nxhi,nyhi) :: rtm_hi ! runoff direction (1 to 8) 122 real, dimension(nxhi,nyhi) :: lake_level_hi ! niveau du lac sur grille hi_res 123 real, dimension(nxhi,nyhi) :: orog_lake_hi ! orographie a la surface des lacs 124 125 integer :: countcont_hi ! nbr de continents sur grille hi_res 65 126 66 127 67 contains … … 140 80 141 81 namelist/lake_rsl/hi_res_runoff, file_topo_hi_res, coord_topo_hi_res 82 83 !~ !* Debug mode & nc files 84 character(len=100) :: file_topo_hi_res, coord_topo_hi_res 85 142 86 143 87 integer :: ii, i, j, k … … 158 102 write(num_rep_42,*) 159 103 160 !~ print*,'Debut input_rsl'161 162 !* Continent number (outfile)163 !ncfilecont = "continent_number_test-0.05.nc"164 !ncfilecmsk = "coastal_mask_test-0.05.nc"165 !* Runoff & corrected topo166 !ncfilernff = "runoff_20Ma_Fred.nc"167 !ncfiletopoout = "Topo.20Ma_Fred.OK_runoff.nc"168 !ncfilernff = "runoff_NorthAm_15ka_test-0.05.nc"169 !ncfiletopoout = "Topo.NorthAm_15ka_test.OK_runoff-0.05.nc"170 104 171 105 !*************************** … … 237 171 enddo 238 172 close(2004) 239 240 ! xmin=xcc(1,1)/1000.241 ! ymin=ycc(1,1)/1000.242 ! xmax=xcc(nx,ny)/1000.243 ! ymax=ycc(nx,ny)/1000.244 173 245 174 … … 302 231 implicit none 303 232 304 integer :: i, j, k, l 305 integer :: ii, jj 306 ! pour les lectures ncdf 307 real*8, dimension(:,:), pointer :: tab => null() !< tableau 2d real pointer 233 integer :: i, j, k 234 235 !~ !* Parameters and arrays used in the Initialization step 236 real, dimension(nx,ny) :: orog, orog_lake, lake_level 237 integer, dimension(nx,ny) :: omsk, cmsk 238 integer, dimension(nx,ny) :: cont!, conttrack, contsave, runoff_msk,mask_search, exut 239 integer, dimension(nx,ny) :: ocean 240 integer, dimension(nx,ny) :: pot_lake 241 242 integer :: countcont ! nbr de continents 243 !~ integer :: nbocean, countocean 244 245 !~ !* Parameters and arrays of the runoff calculation 246 integer, dimension(nx,ny) :: rtm 247 248 integer,dimension(nx,ny) :: lake ! 1 si lac, 0 sinon 249 integer, dimension(nx,ny) :: mask_extlake ! extension du lac sous la glace 250 real, dimension(nx,ny) :: orog_extlake ! niveau du lac sur les zones glace a proximité (rayon de 4 pts de grille) 308 251 309 252 real, dimension(nx,ny) :: orog_lake_tmp ! pour calculer orog_lake a partir de orog_lake_hi 253 254 real, dimension(nxhi,nyhi) :: orog_hi ! orographie hi_res 255 real, dimension(nxhi,nyhi) :: S_interp_hi, H_interp_hi ! interpolation de S et H low res vers hi_res sans anomalie (pour faire topo englacee non bruitee) 256 integer, dimension(nxhi,nyhi) :: omsk_hi, cmsk_hi 257 integer, dimension(nxhi,nyhi) :: cont_hi ! masque des points continent hi_res 258 integer, dimension(nxhi,nyhi) :: ocean_hi ! masque des points ocean hi_res 259 integer, dimension(nxhi,nyhi) :: pot_lake_hi 260 integer, dimension(nxhi,nyhi) :: lake_hi ! 1 si lac, 0 sinon 261 integer, dimension(nxhi,nyhi) :: rtm_hi ! runoff direction (1 to 8) 262 real, dimension(nxhi,nyhi) :: lake_level_hi ! niveau du lac sur grille hi_res 263 real, dimension(nxhi,nyhi) :: orog_lake_hi ! orographie a la surface des lacs 264 265 integer :: countcont_hi ! nbr de continents sur grille hi_res 266 310 267 ! pour debug : ecriture resultats hi_res 311 character(len=100) :: ncfilecont , ncfilernff, ncfiletopoout,ncfilecmsk! nom fichier netcdf de sortie268 character(len=100) :: ncfilecont ! nom fichier netcdf de sortie 312 269 character(len=1),dimension(2) :: dimname ! nom des dimensions du fichier netcdf de sortie 313 270 integer :: ncid, xdimid, ydimid, S_hivarid, H_hivarid, Bsoc_hivarid, rtm_hivarid, cont_hivarid, ocean_hivarid, cmsk_hivarid, orog_lake_hivarid, lake_hivarid … … 398 355 ! mise à jour du niveau des lacs et du routage : 399 356 if (mod(abs(TIME),500.).lt.dtmin) then 400 call mask_orog_ocean(nx,ny,o rog,omsk,cmsk,cont,ocean,countcont,pot_lake)357 call mask_orog_ocean(nx,ny,omsk,cmsk,cont,ocean,countcont,pot_lake) 401 358 402 359 !~ print*,'3/ rsl' 403 360 if (hi_res_runoff.eq.1) then 404 call mask_orog_ocean(nxhi,nyhi,o rog_hi,omsk_hi,cmsk_hi,cont_hi,ocean_hi,countcont_hi,pot_lake_hi)361 call mask_orog_ocean(nxhi,nyhi,omsk_hi,cmsk_hi,cont_hi,ocean_hi,countcont_hi,pot_lake_hi) 405 362 call runoff(nxhi,nyhi,countcont_hi,cont_hi,cmsk_hi,omsk_hi,pot_lake_hi,lake_hi,rtm_hi,lake_level_hi,orog_lake_hi) 406 363 ! interpolation des variables sur grille std : … … 444 401 endwhere 445 402 446 if (hi_res_runoff.eq.1) then 403 if (hi_res_runoff.eq.1) then !afq-- this block is only for debug as it is called each timestep!! 447 404 448 405 !* Save mode … … 494 451 ! Subroutine de recherche des points terre, cotiers et ocean 495 452 !---------------------------------------------------------------------------- 496 subroutine mask_orog_ocean(nx_loc,ny_loc,o rog_loc,omsk_loc,cmsk_loc,cont_loc,ocean_loc,countcont_loc,pot_lake_loc)453 subroutine mask_orog_ocean(nx_loc,ny_loc,omsk_loc,cmsk_loc,cont_loc,ocean_loc,countcont_loc,pot_lake_loc) 497 454 498 455 implicit none 499 456 500 457 integer,intent(in) :: nx_loc,ny_loc 501 real,dimension(nx_loc,ny_loc), intent(in) :: orog_loc502 458 integer,dimension(nx_loc,ny_loc), intent(inout) :: omsk_loc 503 459 integer,dimension(nx_loc,ny_loc), intent(out) :: cmsk_loc, cont_loc … … 744 700 real,dimension(nx_loc,ny_loc), intent(out) :: lake_level_loc ! lake level 745 701 real,dimension(nx_loc,ny_loc), intent(inout) :: orog_lake_loc ! orographie a la surface des lacs 746 747 real,dimension(nx_loc,ny_loc) :: orog_extlake ! niveau du lac sur les zones glace a proximité (rayon de 4 pts de grille)748 702 749 703 integer,dimension(nx_loc,ny_loc) :: exut ! > 0 si exutoire, 0 sinon … … 917 871 918 872 919 -
branches/GRISLIv3/SOURCES/lineartemp-0.2.f90
r469 r481 13 13 14 14 use geography, only:nx,ny,nz,nzm 15 use module3D_phy, only:H, B,bmelt,T,TS,tpmp,ghf15 use module3D_phy, only:H,bmelt,T,TS,tpmp,ghf 16 16 use icetemp_declar, only:Dzm,Cm 17 17 -
branches/GRISLIv3/SOURCES/main3D-0.4-40km.f90
r476 r481 131 131 subroutine grisli_init 132 132 133 USE module3D_phy, only: i temp,icouple,isynchro,icompteur,iglen, &133 USE module3D_phy, only: isynchro,icompteur,iglen, & 134 134 ice,bm,bmelt,ablbord,ablbord_dtt,dt, & 135 135 s,h,b,bsoc,flot,mk,mk0,uxbar,uybar,hwater,time,timemax,ndebug,ndebug_max 136 use runparam, only: nt,tbegin,dtprofile,dtcpt,dirnameout, runname,itracebug136 use runparam, only: nt,tbegin,dtprofile,dtcpt,dirnameout,itracebug 137 137 use geography, only: nx,ny,geoplace 138 138 use deformation_mod_2lois, only:n1poly,n2poly … … 156 156 ! 1 ou 2 passe (se met a 0 tout seul si on prend un fichier .cptr) 157 157 158 ITEMP=0159 160 ! switch couple physique faible => CP et CT independant T161 ! 0 pas de trait. vert. A FAIRE niveau L0162 ! 1 pas de couplage , faible physique niveau L1163 ! 2 couplage, faible physique niveau L2164 ! 3 couplage, physique complete sans CBT niveau L3165 ! 4 idem 3 mais loi de def. Duval niveau L4166 ICOUPLE=4167 168 158 nt=-1 ! utilisee dans initialisation flottab 169 159 ! sortie profile tous les dtprofile … … 209 199 tcpt:if (ICOMPTEUR.eq.0) then 210 200 211 212 213 if ((ITEMP.eq.0).or.(ITEMP.eq.3)) then214 201 call masque(flot,mk,mk0,itracebug) 215 202 … … 224 211 ! ======================================================== 225 212 226 if (ITEMP.eq.0)call lineartemp()213 call lineartemp() 227 214 228 215 call bmelt_grounded … … 244 231 call diffusiv() 245 232 call SIA_velocities() 246 endif247 233 248 234 else ! tcpt on reprend un fichier compteur (ICOMPTEUR.eq.1) -
branches/GRISLIv3/SOURCES/mix-SIA-L1_mod.f90
r416 r481 56 56 !$ USE OMP_LIB 57 57 use geography, only:nx,ny,nz 58 use module3D_phy, only:debug_3D,ubx,uby, num_rep_42,flgzmx,flgzmy,uxbar,uybar,ux,uy,uzr,ice,i_resolmeca,&58 use module3D_phy, only:debug_3D,ubx,uby,flgzmx,flgzmy,uxbar,uybar,ux,uy,uzr,ice,i_resolmeca,& 59 59 uxflgz,uyflgz,uxdef,uydef,isynchro,secyear 60 60 use runparam, only:itracebug -
branches/GRISLIv3/SOURCES/readinput.f90
r449 r481 182 182 real,dimension(:,:),intent(inout) :: Tab 183 183 character(*),intent(in) :: filename 184 real*8, dimension(:,:), pointer :: tabvar185 184 end subroutine lect_ncfile 186 185 end interface !<<<<<<<<<<<<<<<<<<< -
branches/GRISLIv3/SOURCES/spinup_mod.f90
r467 r481 161 161 subroutine lect_vitbil_Lebrocq 162 162 163 use module3D_phy, only: num_rep_42, mstream_mx,num_param,pi163 use module3D_phy, only: num_rep_42,num_param,pi 164 164 use io_netcdf_grisli, only: Read_Ncdf_var 165 165 use geography, only: dirnameinp -
branches/GRISLIv3/SOURCES/steps_time_loop.f90
r477 r481 14 14 subroutine step_time_loop 15 15 16 use module3d_phy, only: ispinup,isynchro,time max,time,flot,S,B,Bsoc,H,sealevel_2d,hmx,hmy,&16 use module3d_phy, only: ispinup,isynchro,time,flot,S,B,Bsoc,H,sealevel_2d,hmx,hmy,& 17 17 ice,bm,bmelt,ablbord,ablbord_dtt,dt, & 18 18 uxbar,uybar,hdot,dtmax,dtmin,iout,flot_marais,debug_3D -
branches/GRISLIv3/SOURCES/tab-litho-0.3.f90
r469 r481 72 72 73 73 74 75 !open(55,file='iso-cat')76 !write(55,*) 'WE avec LBLOC sur 480 km'77 !do i=-lbloc,lbloc78 ! write(55,'25(i4,1x)') (int(WE(i,j)*1.e08),j=-lbloc,lbloc)79 !end do80 !close(55)81 82 74 ! sommation des elements de WE dans som pour normaliser 83 75 ! la somme des enfoncements a 1 -
branches/GRISLIv3/SOURCES/tracebug.f90
r465 r481 21 21 implicit none 22 22 23 integer :: i,j24 23 character(len=*),intent(in):: chaine ! chaine a imprimer 25 24 26 i=5 27 j=5 25 write(num_tracebug,*) chaine 28 26 29 write(num_tracebug,*) chaine30 31 ! write(num_tracebug,901) chaine,i,j,mk_init(i,j),S(i,j),H(i,j),Bsoc(i,j),B(i,j),pvi(i,j),pvm(i,j)32 901 format(A50,' S0,S,H0,H,B0,B ',3(i0,1x),2x, 4(f0.1,1x),2(es12.4,1x) )33 34 ! write(num_tracebug,898) chaine,i,j,ibase(i,j),mstream_mx(i,j), betamx(i,j), uxflgz(i,j), gzmx(i,j),ok_umat(i,j)35 898 format(A50,' ibase, mstream,betamx,drag_mx ',4(i0,1x),3x, 2(es12.4,1x), 2x,2(l5,1x))36 37 ! write(num_tracebug,896) chaine,i,j,Uxbar(i-1:i+1,j),Uxflgz(i-1:i+1,j),Uxbar(i-1:i+1,j)-Uxflgz(i-1:i+1,j),Hdot(i,j),dt38 896 format(A50,' i,j,Uxbar,Uxflgz,Uxdef ', 2(i0,1x),8(f0.3,1x))39 40 ! write(num_tracebug+1,897) chaine, eps(i,j), pvi(i,j),Hdot(i-1:i+1,j),betamx(i,j)41 897 format(A50,' eps,pvi,Hdot,beta ', 6(es12.4,1x))42 43 44 45 ! (195,154) un point ile46 ! (30,253)47 ! write(num_tracebug,889) chaine,i,j,S(i,j),H(i,j),Bsoc(i,j),Hp(i,j),Mk_init(i,j),i_hp(i,j)48 ! write(num_tracebug,895) chaine, i,j,i_HP(i,j),i_Hp0(i,j),Hp(i,j),Hp0(i,j),H(i,j)49 50 !write(num_tracebug,894) chaine,i,j,H(i,j),uxbar(i,j),uxbar(i+1,j),pvi(i,j),eps(i,j)51 52 !write(num_tracebug,*) flotmx(i-1:i+5,j),' ',flot(i-1:i+5,j)53 54 55 ! write(num_tracebug,887) chaine, ispinup,iter_beta56 ! write(num_tracebug,891) chaine,Vcol_x(i,j),Vsl_x(i,j),uxbar(i,j),ubx(i,j),uxdef(i,j),betamx(i,j)57 ! write(num_tracebug,880) chaine58 59 ! write(num_tracebug,*) chaine,'xmin,ymin',xmin,ymin60 61 ! S(30,253),S(178,121) 1 point ile + 1 point shelf62 63 887 format(A50,' ispinup =',i0,' iter_beta =',i0)64 888 format(A50,' S(30,253)) = ',f0.3, ' S(178,121) = ',f0.3)65 889 format(A50,' SHBMk de ', 2(i0,1x),': '4(f0.3,1x),2(i0,1x))66 890 format(A50,' S Ux Uy ', 2(i0,1x),': '6(f0.3,1x))67 891 format(A50,' uxbal Vsl Ux uxb uxdef beta : '6(f0.2,1x))68 892 format(A50,' Uxbar ', 2(i0,1x),': '(f0.3,1x))69 893 format(A50,' betamx, drag_mx, beta_c ', 2(i0,1x),': '4(f0.3,1x))70 894 format(A50,' H, Uxbar, pvi,epsxx,eps ', 2(i0,1x),': '3(f0.2,1x),2(es12.4,1x) )71 895 format(A50,' i,j,ihp,ihp0,hp,hp0,h ', 4(i0,1x),': '3(f0.2,1x) )72 27 end subroutine tracebug -
branches/GRISLIv3/SOURCES/util_recovery.f90
r446 r481 13 13 14 14 module util_recovery 15 15 16 implicit none 16 17 double precision ,dimension(:),allocatable :: tab_time … … 18 19 real*8, dimension(:), pointer :: time_out 19 20 logical :: logic_out 21 20 22 contains 21 23 … … 26 28 subroutine init_recovery 27 29 28 use module3d_phy, only: time29 30 use runparam, only: itracebug,dirsource 30 31
Note: See TracChangeset
for help on using the changeset viewer.