Skip to content
Snippets Groups Projects
Commit deaf70f2 authored by Lionel GUEZ's avatar Lionel GUEZ
Browse files

Add arguments to `get_1_outerm`

Add dummy arguments `cont_list` and `n_cont` to `get_1_outerm`.
parent 04706e30
No related branches found
No related tags found
No related merge requests found
...@@ -5,7 +5,7 @@ program test_get_1_outerm ...@@ -5,7 +5,7 @@ program test_get_1_outerm
use config_m, only: config use config_m, only: config
use derived_types, only: eddy, shpc_slice_handler, null_ssh_contour, & use derived_types, only: eddy, shpc_slice_handler, null_ssh_contour, &
missing_speed missing_speed, ssh_contour
use get_1_outerm_m, only: get_1_outerm use get_1_outerm_m, only: get_1_outerm
use input_ssh_m, only: input_ssh use input_ssh_m, only: input_ssh
use shpc_close_m, only: shpc_close use shpc_close_m, only: shpc_close
...@@ -50,6 +50,13 @@ program test_get_1_outerm ...@@ -50,6 +50,13 @@ program test_get_1_outerm
! target extremum ! target extremum
logical:: grid_lon_lat = .true. logical:: grid_lon_lat = .true.
integer, parameter:: n_max_cont = 31
type(ssh_contour) cont_list(n_max_cont + 1)
! Contour list. The outermost contour is element n_cont. The
! contours are in monotonic order of ssh.
integer n_cont ! number of good contours found and stored in cont_list
namelist /main_nml/ ind_targ_extr, innermost_level, cyclone, date, & namelist /main_nml/ ind_targ_extr, innermost_level, cyclone, date, &
grid_lon_lat grid_lon_lat
...@@ -66,8 +73,8 @@ program test_get_1_outerm ...@@ -66,8 +73,8 @@ program test_get_1_outerm
outside_points = transpose(outside_points) * deg_to_rad outside_points = transpose(outside_points) * deg_to_rad
e%extr%coord_proj = ind_targ_extr e%extr%coord_proj = ind_targ_extr
e%extr%coord = corner + (ind_targ_extr - 1) * step e%extr%coord = corner + (ind_targ_extr - 1) * step
call get_1_outerm(e%out_cont, cyclone, e%extr%coord, innermost_level, & call get_1_outerm(e%out_cont, cont_list, n_cont, cyclone, e%extr%coord, &
outside_points, ssh, corner, step) innermost_level, outside_points, ssh, corner, step)
if (e%out_cont%closed) then if (e%out_cont%closed) then
e%extr%ssh = ssh(ind_targ_extr(1), ind_targ_extr(2)) e%extr%ssh = ssh(ind_targ_extr(1), ind_targ_extr(2))
......
...@@ -4,8 +4,8 @@ module get_1_outerm_m ...@@ -4,8 +4,8 @@ module get_1_outerm_m
contains contains
subroutine get_1_outerm(out_cont, cyclone, coord_extr, innermost_level_2, & subroutine get_1_outerm(out_cont, cont_list, n_cont, cyclone, coord_extr, &
outside_points, ssh, corner, step) innermost_level_2, outside_points, ssh, corner, step)
! This procedure gets one outermost good contour, if it can find ! This procedure gets one outermost good contour, if it can find
! one. If the procedure cannot find an outermost contour, it ! one. If the procedure cannot find an outermost contour, it
...@@ -44,6 +44,12 @@ contains ...@@ -44,6 +44,12 @@ contains
use spher_polyline_area_m, only: spher_polyline_area use spher_polyline_area_m, only: spher_polyline_area
type(ssh_contour), intent(out):: out_cont type(ssh_contour), intent(out):: out_cont
type(ssh_contour), intent(out):: cont_list(:) ! (n_max_cont + 1)
! Contour list. The outermost contour is element n_cont. The
! contours are in monotonic order of ssh.
integer, intent(out):: n_cont ! number of good contours found and stored
logical, intent(in):: cyclone logical, intent(in):: cyclone
real, intent(in):: coord_extr(:) ! (2) real, intent(in):: coord_extr(:) ! (2)
...@@ -68,16 +74,11 @@ contains ...@@ -68,16 +74,11 @@ contains
real level_try, level_good, level_bad ! in m real level_try, level_good, level_bad ! in m
real, parameter:: precision = 5e-4 ! in m real, parameter:: precision = 5e-4 ! in m
logical mask(size(ssh, 1), size(ssh, 2)) logical mask(size(ssh, 1), size(ssh, 2))
integer, parameter:: n_max_cont = 31 integer n_max_cont
type(ssh_contour) cont_list(n_max_cont + 1)
! Contour list. The outermost contour is element n_cont. The
! contours are in monotonic order of ssh.
integer n_cont ! number of good contours found and stored
!----------------------------------------------------------------- !-----------------------------------------------------------------
n_max_cont = size(cont_list) - 1
n_cont = 0 n_cont = 0
cont_list(1)%polyline = good_contour(corner, step, ssh, innermost_level_2, & cont_list(1)%polyline = good_contour(corner, step, ssh, innermost_level_2, &
coord_extr, outside_points) coord_extr, outside_points)
......
...@@ -14,7 +14,7 @@ contains ...@@ -14,7 +14,7 @@ contains
use numer_rec_95, only: indexx use numer_rec_95, only: indexx
use config_m, only: min_amp use config_m, only: min_amp
use derived_types, only: snapshot, null_ssh_contour use derived_types, only: snapshot, null_ssh_contour, ssh_contour
use get_1_outerm_m, only: get_1_outerm use get_1_outerm_m, only: get_1_outerm
use input_ssh_m, only: max_radius use input_ssh_m, only: max_radius
use nearby_extr_m, only: nearby_extr use nearby_extr_m, only: nearby_extr
...@@ -64,6 +64,14 @@ contains ...@@ -64,6 +64,14 @@ contains
! latitude, in rad, of all the significant extrema, except the ! latitude, in rad, of all the significant extrema, except the
! target extremum ! target extremum
integer, parameter:: n_max_cont = 31
type(ssh_contour) cont_list(n_max_cont + 1)
! Contour list. The outermost contour is element n_cont. The
! contours are in monotonic order of ssh.
integer n_cont ! number of good contours found and stored in cont_list
!-------------------------------------------------------------- !--------------------------------------------------------------
if (.not. periodic) nlon = size(ssh, 1) if (.not. periodic) nlon = size(ssh, 1)
...@@ -118,9 +126,10 @@ contains ...@@ -118,9 +126,10 @@ contains
+ ceiling((corner_window(1) - outside_points(1, :)) / twopi) * twopi + ceiling((corner_window(1) - outside_points(1, :)) / twopi) * twopi
! (Shift the longitude of each point to a value close to the ! (Shift the longitude of each point to a value close to the
! longitude of the target extremum.) ! longitude of the target extremum.)
call get_1_outerm(s%list(i)%out_cont, s%list(i)%cyclone, & call get_1_outerm(s%list(i)%out_cont, cont_list, n_cont, &
s%list(i)%extr%coord, innermost_level_2, outside_points, & s%list(i)%cyclone, s%list(i)%extr%coord, innermost_level_2, &
ssh(llc(1):urc(1), llc(2):urc(2)), corner_window, step) outside_points, ssh(llc(1):urc(1), llc(2):urc(2)), corner_window, &
step)
s%list(i)%valid = s%list(i)%out_cont%area >= min_area s%list(i)%valid = s%list(i)%out_cont%area >= min_area
if (.not. s%list(i)%valid) s%list(i)%out_cont = null_ssh_contour() if (.not. s%list(i)%valid) s%list(i)%out_cont = null_ssh_contour()
end do end do
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment