Skip to content

Commit 506bdfc

Browse files
authored
Merge pull request #674 from mandli/fix-speed-tolerances
Implement zero-sized speed array to limit checking
2 parents ac5a54b + 2150c45 commit 506bdfc

File tree

3 files changed

+20
-15
lines changed

3 files changed

+20
-15
lines changed

src/2d/shallow/flag2refine2.f90

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ subroutine flag2refine2(mx,my,mbc,mbuff,meqn,maux,xlower,ylower,dx,dy,t,level, &
100100
! the storm and refine if we are
101101
if (storm_specification_type /= 0) then
102102
R_eye = storm_location(t)
103-
do m=1,size(R_refine,1)
103+
do m=1,min(size(R_refine), mxnest)
104104
if (coordinate_system == 2) then
105105
ds = spherical_distance(x_c, y_c, R_eye(1), R_eye(2))
106106
else
@@ -116,7 +116,7 @@ subroutine flag2refine2(mx,my,mbc,mbuff,meqn,maux,xlower,ylower,dx,dy,t,level, &
116116
! Refine based on wind speed
117117
if (wind_forcing) then
118118
wind_speed = sqrt(aux(wind_index,i,j)**2 + aux(wind_index+1,i,j)**2)
119-
do m=1,size(wind_refine,1)
119+
do m=1,min(size(wind_refine), mxnest)
120120
if ((wind_speed > wind_refine(m)) .and. (level <= m)) then
121121
amrflags(i,j) = DOFLAG
122122
cycle x_loop
@@ -147,7 +147,7 @@ subroutine flag2refine2(mx,my,mbc,mbuff,meqn,maux,xlower,ylower,dx,dy,t,level, &
147147
! also have a per layer criteria since this is not
148148
! gradient based
149149
speed = sqrt(q(2,i,j)**2 + q(3,i,j)**2) / q(1,i,j)
150-
do m=1,min(size(speed_tolerance),mxnest)
150+
do m=1,min(size(speed_tolerance), mxnest)
151151
if (speed > speed_tolerance(m) .and. level <= m) then
152152
amrflags(i,j) = DOFLAG
153153
cycle x_loop

src/2d/shallow/utility_module.f90

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,21 @@ integer function get_value_count(line) result(count)
5252

5353
search_buffer = trim(line(1:index(line,"=:") - 2))
5454

55-
do i=1,len_trim(search_buffer)
56-
if (search_buffer(i:i) == " ") then
57-
if (.not. found) then
58-
found = .true.
59-
count = count + 1
55+
if (len_trim(search_buffer) == 0 .or. &
56+
trim(search_buffer) == "None") then
57+
count = 0
58+
else
59+
do i=1,len_trim(search_buffer)
60+
if (search_buffer(i:i) == " ") then
61+
if (.not. found) then
62+
found = .true.
63+
count = count + 1
64+
endif
65+
else
66+
found = .false.
6067
endif
61-
else
62-
found = .false.
63-
endif
64-
enddo
68+
enddo
69+
end if
6570

6671
end function get_value_count
6772

src/python/geoclaw/data.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ def __init__(self):
125125

126126
# Refinement controls
127127
self.add_attribute('wave_tolerance',1.0e-1)
128-
self.add_attribute('speed_tolerance',[1.0e12]*6)
128+
self.add_attribute('speed_tolerance', None)
129129
self.add_attribute('deep_depth',None) # deprecated
130130
self.add_attribute('max_level_deep',None) # deprecated
131131
self.add_attribute('variable_dt_refinement_ratios',False)
@@ -144,7 +144,7 @@ def write(self,data_source='setrun.py', out_file='refinement.data'):
144144
w = '\n *** WARNING: max_level_deep parameter ignored as of v5.8.0'
145145
warnings.warn(w, UserWarning)
146146

147-
if not isinstance(self.speed_tolerance,list):
147+
if isinstance(self.speed_tolerance, float):
148148
self.speed_tolerance = [self.speed_tolerance]
149149
self.data_write('speed_tolerance')
150150
self.data_write()
@@ -569,7 +569,7 @@ def __init__(self):
569569

570570
# AMR parameters
571571
self.add_attribute('wind_refine', [20.0,40.0,60.0])
572-
self.add_attribute('R_refine', [60.0e3,40e3,20e3])
572+
self.add_attribute('R_refine', [60.0e3, 40e3, 20e3])
573573

574574
# Storm parameters
575575
self.add_attribute('storm_type', None) # Backwards compatibility

0 commit comments

Comments
 (0)