Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CONTRIBUTORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,5 @@
| mo-lottieturner | Lottie Turner | Met Office | 2026-01-27 |
| andrewcoughtrie | Andrew Coughtrie | Met Office | 2026-01-28 |
| tommbendall | Thomas Bendall | Met Office | 2026-01-13 |
| mo-jmanners | James Manners | Met Office | 2026-01-14 |
| maggiehendry | Maggie Hendry | Met Office | 2026-01-29 |
26 changes: 13 additions & 13 deletions applications/adjoint_tests/source/adjoint_tests.f90
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
program adjoint_tests

use cli_mod, only : parse_command_line
use constants_mod, only : l_def, str_max_filename
use driver_collections_mod, only : init_collections, final_collections
use driver_comm_mod, only : init_comm, final_comm
use driver_config_mod, only : init_config, final_config
Expand All @@ -25,25 +26,23 @@ program adjoint_tests
log_level_trace, &
log_scratch_space
use timing_mod, only: init_timing, final_timing
use io_config_mod, only: timer_output_path
use namelist_mod, only: namelist_type

implicit none

! Model run working data set
type (modeldb_type) :: modeldb

character(*), parameter :: application_name = "adjoint_tests"
character(:), allocatable :: filename
character(*), parameter :: application_name = "adjoint_tests"
character(:), allocatable :: filename

type(namelist_type), pointer :: io_nml

logical :: lsubroutine_timers
logical(l_def) :: subroutine_timers
character(str_max_filename) :: timer_output_path

call parse_command_line( filename )

modeldb%mpi => global_mpi

call modeldb%configuration%initialise( application_name, table_len=10 )
call modeldb%config%initialise( application_name )

call modeldb%values%initialise('values', 5)

Expand All @@ -65,14 +64,15 @@ program adjoint_tests
call init_comm( application_name, modeldb )

call init_config( filename, gungho_required_namelists, &
modeldb%configuration )
config=modeldb%config )

call init_logger( modeldb%mpi%get_comm(), application_name )

io_nml => modeldb%configuration%get_namelist('io')
call io_nml%get_value('subroutine_timers', lsubroutine_timers)
call init_timing( modeldb%mpi%get_comm(), lsubroutine_timers, &
subroutine_timers = modeldb%config%io%subroutine_timers()
timer_output_path = modeldb%config%io%timer_output_path()

call init_timing( modeldb%mpi%get_comm(), subroutine_timers, &
application_name, timer_output_path )
nullify( io_nml )

call init_collections()
call init_time( modeldb )
Expand Down
42 changes: 14 additions & 28 deletions applications/gravity_wave/source/algorithm/gravity_wave_alg_mod.x90
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ module gravity_wave_alg_mod
LOG_LEVEL_INFO, &
LOG_LEVEL_ERROR, &
LOG_LEVEL_TRACE
use namelist_mod, only: namelist_type

! Configuration options
use finite_element_config_mod, only: element_order_h, element_order_v
Expand Down Expand Up @@ -497,7 +496,6 @@ contains
use transpose_matrix_vector_kernel_mod, only: transpose_matrix_vector_kernel_type
use sci_enforce_bc_kernel_mod, only: enforce_bc_kernel_type
use fs_continuity_mod, only: W0, W2, W3, Wtheta
use boundaries_config_mod, only: limited_area

implicit none

Expand All @@ -514,44 +512,32 @@ contains
type( field_type ) :: rhs_p
type(mesh_type), pointer :: mesh => null()

! Namelists
type(namelist_type), pointer :: base_mesh_nml
type(namelist_type), pointer :: timestepping_nml
type(namelist_type), pointer :: initial_temperature_nml
type(namelist_type), pointer :: gravity_wave_constants_nml
type(namelist_type), pointer :: io_nml

! Namelist parameters
character(len=str_def) :: prime_mesh_name
real(kind=r_second) :: dt
real(kind=r_def) :: bvf_square
integer(kind=i_def) :: b_space
character(str_def) :: prime_mesh_name
real(r_second) :: dt
real(r_def) :: bvf_square
integer(i_def) :: b_space
logical(l_def) :: limited_area

! Auxiliary constants to group invokes
real(kind=r_def) :: const1, const2
integer(tik) :: id

if ( LPROF ) call start_timing( id, 'gravity_wave_alg' )
real(kind=r_def) :: const1, const2
integer(tik) :: id

! Pointers to namelists
timestepping_nml => modeldb%configuration%get_namelist('timestepping')
initial_temperature_nml => modeldb%configuration%get_namelist('initial_temperature')
io_nml => modeldb%configuration%get_namelist('io')
dt = modeldb%config%timestepping%dt()
bvf_square = modeldb%config%initial_temperature%bvf_square()
limited_area = modeldb%config%boundaries%limited_area()

! Obtain namelist parameters
call timestepping_nml%get_value( 'dt', dt )
call initial_temperature_nml%get_value( 'bvf_square', bvf_square )
if ( LPROF ) call start_timing( id, 'gravity_wave_alg')

!=== Do a single timestep ==============================================!
mesh => wind%get_mesh()
div => get_div(mesh%get_id())
m3_inv => get_inverse_mass_matrix_fe(W3, mesh%get_id())

if ( limited_area ) then
base_mesh_nml => modeldb%configuration%get_namelist('base_mesh')
gravity_wave_constants_nml => modeldb%configuration%get_namelist('gravity_wave_constants')
call base_mesh_nml%get_value( 'prime_mesh_name', prime_mesh_name )
call gravity_wave_constants_nml%get_value( 'b_space', b_space )

prime_mesh_name = modeldb%config%base_mesh%prime_mesh_name()
b_space = modeldb%config%gravity_wave_constants%b_space()

select case(b_space)
case(b_space_w0)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ module gravity_wave_driver_mod
log_scratch_space
use mesh_mod, only: mesh_type
use mesh_collection_mod, only: mesh_collection
use namelist_collection_mod, only: namelist_collection_type
use io_mod, only: ts_fname
use files_config_mod, only: checkpoint_stem_name

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ module gravity_wave_infrastructure_mod
LOG_LEVEL_ALWAYS, &
LOG_LEVEL_ERROR
use mesh_collection_mod, only : mesh_collection
use namelist_mod, only : namelist_type
use field_mod, only : field_type
use driver_fem_mod, only : init_fem, init_function_space_chains
use driver_io_mod, only : init_io, final_io
Expand Down Expand Up @@ -89,43 +88,24 @@ subroutine initialise_infrastructure( program_name, &
real(r_def) :: domain_height
real(r_def) :: scaled_radius

type(namelist_type), pointer :: base_mesh_nml => null()
type(namelist_type), pointer :: formulation_nml => null()
type(namelist_type), pointer :: extrusion_nml => null()
type(namelist_type), pointer :: planet_nml => null()
type(namelist_type), pointer :: multigrid_nml => null()

integer(i_def) :: i
integer(i_def), parameter :: one_layer = 1_i_def

!=======================================================================
! 0.0 Extract configuration variables
!=======================================================================
base_mesh_nml => modeldb%configuration%get_namelist('base_mesh')
formulation_nml => modeldb%configuration%get_namelist('formulation')
extrusion_nml => modeldb%configuration%get_namelist('extrusion')
planet_nml => modeldb%configuration%get_namelist('planet')

call formulation_nml%get_value( 'l_multigrid', l_multigrid )

l_multigrid = modeldb%config%formulation%l_multigrid()
if (l_multigrid) then
multigrid_nml => modeldb%configuration%get_namelist('multigrid')
call multigrid_nml%get_value( 'chain_mesh_tags', chain_mesh_tags )
multigrid_nml => null()
chain_mesh_tags = modeldb%config%multigrid%chain_mesh_tags()
end if

call base_mesh_nml%get_value( 'prime_mesh_name', prime_mesh_name )
call base_mesh_nml%get_value( 'geometry', geometry )
call base_mesh_nml%get_value( 'prepartitioned', prepartitioned )
call extrusion_nml%get_value( 'method', method )
call extrusion_nml%get_value( 'domain_height', domain_height )
call extrusion_nml%get_value( 'number_of_layers', number_of_layers )
call planet_nml%get_value( 'scaled_radius', scaled_radius )

base_mesh_nml => null()
extrusion_nml => null()
formulation_nml => null()
planet_nml => null()
prime_mesh_name = modeldb%config%base_mesh%prime_mesh_name()
geometry = modeldb%config%base_mesh%geometry()
prepartitioned = modeldb%config%base_mesh%prepartitioned()
method = modeldb%config%extrusion%method()
domain_height = modeldb%config%extrusion%domain_height()
number_of_layers = modeldb%config%extrusion%number_of_layers()
scaled_radius = modeldb%config%planet%scaled_radius()

!-------------------------------------------------------------------------
! Initialise infrastructure
Expand Down Expand Up @@ -197,11 +177,11 @@ subroutine initialise_infrastructure( program_name, &
apply_partition_check = .true.
end if

call init_mesh( modeldb%configuration, &
modeldb%mpi%get_comm_rank(), &
modeldb%mpi%get_comm_size(), &
base_mesh_names, &
extrusion, stencil_depth, &
call init_mesh( modeldb%config, &
modeldb%mpi%get_comm_rank(), &
modeldb%mpi%get_comm_size(), &
base_mesh_names, &
extrusion, stencil_depth, &
apply_partition_check )

allocate( twod_names, source=base_mesh_names )
Expand Down
31 changes: 18 additions & 13 deletions applications/gravity_wave/source/gravity_wave.f90
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
program gravity_wave

use cli_mod, only: parse_command_line
use constants_mod, only: l_def, str_max_filename
use driver_modeldb_mod, only: modeldb_type
use driver_collections_mod, only: init_collections, final_collections
use driver_comm_mod, only: init_comm, final_comm
Expand All @@ -24,33 +25,37 @@ program gravity_wave
use log_mod, only: log_event, &
log_level_trace, &
log_scratch_space
use namelist_mod, only: namelist_type
use timing_mod, only: init_timing, final_timing
use io_config_mod, only: timer_output_path

implicit none

type(modeldb_type) :: modeldb
character(*), parameter :: program_name = "gravity_wave"
character(:), allocatable :: filename
type(namelist_type), pointer :: io_nml
logical :: lsubroutine_timers
type(modeldb_type) :: modeldb

character(*), parameter :: program_name = "gravity_wave"
character(:), allocatable :: filename

character(str_max_filename) :: timer_output_path
logical(l_def) :: subroutine_timers

call parse_command_line( filename )

call modeldb%configuration%initialise( program_name, table_len=10 )
call modeldb%config%initialise( program_name )

modeldb%mpi => global_mpi

call init_comm( program_name, modeldb )
call init_config( filename, gravity_wave_required_namelists, &
modeldb%configuration )
config=modeldb%config )
deallocate( filename )

call init_logger( modeldb%mpi%get_comm(), program_name )
io_nml => modeldb%configuration%get_namelist('io')
call io_nml%get_value('subroutine_timers', lsubroutine_timers)
call init_timing( modeldb%mpi%get_comm(), lsubroutine_timers, program_name, timer_output_path )
nullify( io_nml )

subroutine_timers = modeldb%config%io%subroutine_timers()
timer_output_path = modeldb%config%io%timer_output_path()

call init_timing( modeldb%mpi%get_comm(), subroutine_timers, &
program_name, timer_output_path )

call init_collections()
call init_time( modeldb )

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ contains
@after
subroutine tear_down()

use configuration_mod, only: final_configuration
use config_loader_mod, only: final_configuration

implicit none

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ contains
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
subroutine tearDown( this )

use configuration_mod, only: final_configuration
use config_loader_mod, only: final_configuration

implicit none

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,16 +77,16 @@ contains
p_zero=100000.0_r_def, &
scaling_factor=1.0_r_def )

call init_chi_transforms()
call init_chi_transforms(geometry_planar, topology_fully_periodic)

end subroutine set_up

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@after
subroutine tear_down()

use configuration_mod, only: final_configuration
use sci_chi_transform_mod, only: final_chi_transforms
use config_loader_mod, only: final_configuration
use sci_chi_transform_mod, only: final_chi_transforms

implicit none

Expand Down
30 changes: 16 additions & 14 deletions applications/gungho_model/source/gungho_model.f90
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
program gungho_model

use cli_mod, only: parse_command_line
use constants_mod, only: l_def, str_max_filename
use derived_config_mod, only: l_esm_couple
use driver_collections_mod, only: init_collections, final_collections
use driver_comm_mod, only: init_comm, final_comm
Expand All @@ -31,27 +32,24 @@ program gungho_model
log_level_info, &
log_level_trace, &
log_scratch_space
use namelist_mod, only: namelist_type
use timing_mod, only: init_timing, final_timing
use io_config_mod, only: timer_output_path


implicit none

! Model run working data set
type(modeldb_type) :: modeldb

character(*), parameter :: application_name = "gungho_model"
character(:), allocatable :: filename
type(namelist_type), pointer :: io_nml
logical :: lsubroutine_timers
character(*), parameter :: application_name = "gungho_model"
character(:), allocatable :: filename

logical(l_def) :: subroutine_timers
character(str_max_filename) :: timer_output_path

call parse_command_line( filename )

modeldb%mpi => global_mpi

call modeldb%configuration%initialise( application_name, &
table_len=10 )
call modeldb%config%initialise( application_name )
call modeldb%values%initialise( 'values', 5 )

! Create the depository, prognostics and diagnostics field collections
Expand All @@ -75,12 +73,16 @@ program gungho_model
call init_comm( application_name, modeldb )

call init_config( filename, gungho_required_namelists, &
modeldb%configuration )
config=modeldb%config )

call init_logger( modeldb%mpi%get_comm(), application_name )
io_nml => modeldb%configuration%get_namelist('io')
call io_nml%get_value('subroutine_timers', lsubroutine_timers)
call init_timing( modeldb%mpi%get_comm(), lsubroutine_timers, application_name, timer_output_path )
nullify( io_nml )

subroutine_timers = modeldb%config%io%subroutine_timers()
timer_output_path = modeldb%config%io%timer_output_path()

call init_timing( modeldb%mpi%get_comm(), subroutine_timers, &
application_name, timer_output_path )

call init_collections()
call init_time( modeldb )
call init_counters( application_name )
Expand Down
Loading