fgmax メモ †fg は fixed grid monitoring のこと. v5.7.0 †v5.7.0より,ファイルによる定義がなくなり,setrun.py 上で設定用のモジュールを呼び出して使うようになった. from clawpack.geoclaw import fgmax_tools # Domain 1 fg = fgmax_tools.FGmaxGrid() fg.point_style = 2 # uniform rectangular x-y grid fg.x1 = -20790.0 fg.x2 = 28710.0 fg.y1 = -82690.0 fg.y2 = -19690.0 fg.dx = 90.0 # desired resolution of fgmax grid fg.min_level_check = 1 # which levels to monitor max on fg.tstart_max = 0.0 # just before wave arrives fg.tend_max = 1.e10 # when to stop monitoring max values fg.dt_check = 60.0 # how often to update max values fg.interp_method = 0 # 0 ==> pw const in cells, recommended rundata.fgmax_data.fgmax_grids.append(fg) # written to fgmax_grids.data # Domain 2 fg = fgmax_tools.FGmaxGrid() fg.point_style = 2 # uniform rectangular x-y grid fg.x1 = -11730.0 fg.x2 = 7770.0 fg.y1 = -49630.0 fg.y2 = -19930.0 fg.dx = 30.0 # desired resolution of fgmax grid fg.min_level_check = 1 # which levels to monitor max on fg.tstart_max = 0.0 # just before wave arrives fg.tend_max = 1.e10 # when to stop monitoring max values fg.dt_check = 60.0 # how often to update max values fg.interp_method = 0 # 0 ==> pw const in cells, recommended rundata.fgmax_data.fgmax_grids.append(fg) # written to fgmax_grids.data # num_fgmax_val rundata.fgmax_data.num_fgmax_val = 5
# Domain 4
topo_file = topotools.Topography(os.path.join('topofile.asc'), topo_type=3)
fg = fgmax_tools.FGmaxGrid()
fg.point_style = 2 # uniform rectangular x-y grid
fg.dx = topo_file.delta[0] # desired resolution of fgmax grid
fg.x1 = topo_file.x[0]
fg.x2 = topo_file.x[-1]
fg.y1 = topo_file.y[0]
fg.y2 = topo_file.y[-1]
fg.min_level_check = 1 # which levels to monitor max on
fg.arrival_tol = 1.0e-1
fg.tstart_max = 0.0 # just before wave arrives
fg.tend_max = 1.e10 # when to stop monitoring max values
fg.dt_check = 1.0 # how often to update max values
fg.interp_method = 0 # 0 ==> pw const in cells, recommended
rundata.fgmax_data.fgmax_grids.append(fg) # written to fgmax_grids.data
v5.6.1 †読み取りのカラムについては,GEOLIB の fgmax_finalize.f90 の format 文を参考に. do k=1,fg%npts do mv=1,FG_NUM_VAL if (abs(fg%valuemax(mv,k)) .lt. 1.d-90) then fg%valuemax(mv,k) = 0.d0 endif enddo write(FG_UNIT,111) fg%x(k),fg%y(k), fg%levelmax(k), & (fg%valuemax(mv,k), mv=1,FG_NUM_VAL), & (fg%tmax(mv,k), mv=1,FG_NUM_VAL), fg%arrival_time(k) 111 format(2e17.8,i4,21e17.8) enddo fort.FGX.aux1 には,1, 2 列目は x, y, 3列目以降に各 AMR level レベルでの水深 (bathymetry) が入っている??? do ma=1,FG_NUM_AUX
cma = char(ichar('0') + ma)
fname = 'fort.FG' // cfg // '.aux' // cma
print *, 'Writing to file ', fname
open(unit=FG_UNIT,file=trim(fname),status='unknown',form='formatted')
do k=1,fg%npts
write(FG_UNIT,112) fg%x(k),fg%y(k), &
(fg%aux(level,ma,k), level=1,mxnest)
112 format(2e17.8,20e17.8)
enddo
close(FG_UNIT)
enddo
chile2010 の topo ファイルを例に,fgmax を全体に定義し,fort.FG1.valuemax の AMElevel と fort.FG1.aux1 の 水深をそれぞれを書き出してみた.
|