Skip to content

Commit 3523802

Browse files
authored
Merge pull request #676 from mandli/change-refinement-criteria-none
Change storm refinement to use None instead of bool
2 parents e64d8e5 + 5460071 commit 3523802

File tree

3 files changed

+19
-34
lines changed

3 files changed

+19
-34
lines changed

src/2d/shallow/multilayer/flag2refine2.f90

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ subroutine flag2refine2(mx,my,mbc,mbuff,meqn,maux,xlower,ylower,dx,dy,t,level, &
8181
! the storm and refine if we are
8282
if (storm_specification_type /= 0) then
8383
R_eye = storm_location(t)
84-
do m=1,size(R_refine,1)
84+
do m=1, min(size(R_refine), mxnest)
8585
if (coordinate_system == 2) then
8686
ds = spherical_distance(x_c, y_c, R_eye(1), R_eye(2))
8787
else
@@ -97,7 +97,7 @@ subroutine flag2refine2(mx,my,mbc,mbuff,meqn,maux,xlower,ylower,dx,dy,t,level, &
9797
! Refine based on wind speed
9898
if (wind_forcing) then
9999
wind_speed = sqrt(aux(wind_index,i,j)**2 + aux(wind_index+1,i,j)**2)
100-
do m=1,size(wind_refine,1)
100+
do m=1, min(size(wind_refine), mxnest)
101101
if ((wind_speed > wind_refine(m)) .and. (level <= m)) then
102102
amrflags(i,j) = DOFLAG
103103
cycle x_loop
@@ -107,7 +107,6 @@ subroutine flag2refine2(mx,my,mbc,mbuff,meqn,maux,xlower,ylower,dx,dy,t,level, &
107107
endif
108108

109109
! ********* criteria applied only to wet cells:
110-
111110
b = aux(1,i,j)
112111
do layer = num_layers, 1, -1
113112
if (q(3*layer-2,i,j) / rho(layer) > dry_tolerance(layer)) then
@@ -125,12 +124,13 @@ subroutine flag2refine2(mx,my,mbc,mbuff,meqn,maux,xlower,ylower,dx,dy,t,level, &
125124
! gradient based
126125
speed = sqrt(q(3*layer-1,i,j)**2 + q(3*layer,i,j)**2) &
127126
/ q(3*layer-2,i,j)
128-
do m=1,min(size(speed_tolerance),mxnest)
127+
do m=1,min(size(speed_tolerance), mxnest)
129128
if (speed > speed_tolerance(m) .and. level <= m) then
130129
amrflags(i,j) = DOFLAG
131130
cycle x_loop
132131
endif
133132
enddo
133+
134134
b = b + q(3*layer-2,i,j) / rho(layer)
135135
endif
136136
enddo

src/2d/shallow/surge/storm_module.f90

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -177,22 +177,10 @@ subroutine set_storm(data_file)
177177

178178
! AMR parameters
179179
read(unit,'(a)') line
180-
if (line(1:1) == "F") then
181-
allocate(wind_refine(1))
182-
wind_refine(1) = huge(1.d0)
183-
else
184-
allocate(wind_refine(get_value_count(line)))
185-
read(line,*) (wind_refine(i),i=1,size(wind_refine,1))
186-
end if
180+
allocate(wind_refine(get_value_count(line)))
187181
read(unit,'(a)') line
188-
if (line(1:1) == "F") then
189-
allocate(R_refine(1))
190-
R_refine(1) = -huge(1.d0)
191-
else
192-
allocate(R_refine(get_value_count(line)))
193-
read(line,*) (R_refine(i),i=1,size(R_refine,1))
194-
end if
195-
read(unit,*)
182+
allocate(R_refine(get_value_count(line)))
183+
read(unit, *)
196184

197185
! Storm Setup
198186
read(unit, "(i2)") storm_specification_type
@@ -509,4 +497,4 @@ logical pure function S_rotation(x, y) result(rotation)
509497
rotation = .false.
510498
end function S_rotation
511499

512-
end module storm_module
500+
end module storm_module

src/python/geoclaw/data.py

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -646,25 +646,22 @@ def write(self, out_file='surge.data', data_source="setrun.py"):
646646
description='(Display time relative to landfall)')
647647
self.data_write()
648648

649+
# AMR storm refinement criteria
650+
# Handle older style of refinement for turning it off, F -> None
649651
if isinstance(self.wind_refine, bool):
650652
if not self.wind_refine:
651-
self.data_write('wind_refine', value=False,
652-
description='(Refinement ratios)')
653-
elif isinstance(self.wind_refine, type(None)):
654-
self.data_write('wind_refine', value=False,
655-
description='(Refinement ratios)')
656-
else:
657-
self.data_write('wind_refine',description='(Refinement ratios)')
653+
self.wind_refine = None
658654
if isinstance(self.R_refine, bool):
659655
if not self.R_refine:
660-
self.data_write('R_refine', value=False,
661-
description='(Refinement ratios)')
662-
elif isinstance(self.R_refine, type(None)):
663-
self.data_write('R_refine', value=False,
664-
description='(Refinement ratios)')
665-
else:
666-
self.data_write('R_refine', description='(Refinement ratios)')
656+
self.R_refine = None
667657
self.data_write()
658+
659+
if isinstance(self.wind_refine, float):
660+
self.wind_refine = [self.wind_refine]
661+
self.data_write('wind_refine', description='(Wind speed refinement criteria)')
662+
if isinstance(self.R_refine, float):
663+
self.R_refine = [self.R_refine]
664+
self.data_write('R_refine', description='(Wind speed refinement criteria)')
668665

669666
# Storm specification
670667
# Handle deprecated member value

0 commit comments

Comments
 (0)