← back to index

src/tracer/MOM_tracer_advect_schemes.F90

portedportable, not yet portedexecuted, not portableexecutable, not hit by this run

1! This file is part of MOM6, the Modular Ocean Model version 6.
2! See the LICENSE file for licensing information.
3! SPDX-License-Identifier: Apache-2.0
4
5!> This module contains constants for the tracer advection schemes.
6module MOM_tracer_advect_schemes
7
8use MOM_error_handler, only : MOM_error, FATAL
9
10implicit none ; public
11
12! The following are public parameter constants
13integer, parameter :: ADVECT_PLM = 0 !< PLM advection scheme
14integer, parameter :: ADVECT_PPMH3 = 1 !< PPM:H3 advection scheme
15integer, parameter :: ADVECT_PPM = 2 !< PPM advection scheme
16
17!> Documentation for tracer advection schemes
18character(len=*), parameter :: TracerAdvectionSchemeDoc = &
19 " PLM - Piecewise Linear Method\n"//&
20 " PPM:H3 - Piecewise Parabolic Method (Huyhn 3rd order)\n"// &
21 " PPM - Piecewise Parabolic Method (Colella-Woodward)"
22
23contains
24
25!> Numeric value of tracer_advect_scheme corresponding to scheme name
261subroutine set_tracer_advect_scheme(scheme_value, advect_scheme_name)
27 character(len=*), intent(in) :: advect_scheme_name !< Name of the advection scheme
28 integer, intent(out) :: scheme_value !< Integer value of the advection scheme
29
301 select case (trim(advect_scheme_name))
31 case ("")
320 scheme_value = -1
33 case ("PLM")
340 scheme_value = ADVECT_PLM
35 case ("PPM:H3")
361 scheme_value = ADVECT_PPMH3
37 case ("PPM")
380 scheme_value = ADVECT_PPM
39 case default
40 call MOM_error(FATAL, "set_tracer_advect_scheme: "//&
412 "Unknown TRACER_ADVECTION_SCHEME = "//trim(advect_scheme_name))
42 end select
431end subroutine set_tracer_advect_scheme
44
45end module MOM_tracer_advect_schemes