diff --git a/.gitignore b/.gitignore index c011342970..af396573c5 100644 --- a/.gitignore +++ b/.gitignore @@ -92,3 +92,4 @@ settings.json *.code-workspace # Local History for Visual Studio Code .history/ +*.i90 \ No newline at end of file diff --git a/coupler/coupler_types.F90 b/coupler/coupler_types.F90 index 17824d6115..3e46f81ec8 100644 --- a/coupler/coupler_types.F90 +++ b/coupler/coupler_types.F90 @@ -67,13 +67,14 @@ module coupler_types_mod !> @} + type, private :: coupler_3d_reals_r8_type + + end type coupler_3d_reals_r8_type + !> Coupler data for 3D values !> @ingroup coupler_types_mod type, public :: coupler_3d_values_type character(len=48) :: name = ' ' !< The diagnostic name for this array - real, pointer, contiguous, dimension(:,:,:) :: values => NULL() !< The pointer to the - !! array of values for this field; this - !! should be changed to allocatable logical :: mean = .true. !< mean logical :: override = .false. !< override integer :: id_diag = 0 !< The diagnostic id for this array @@ -83,6 +84,9 @@ module coupler_types_mod logical :: may_init = .true. !< If true, there is an internal method !! that can be used to initialize this field !! if it can not be read from a restart file + real, pointer, contiguous, dimension(:,:,:) :: values => NULL() !< The pointer to the + !! array of values for this field; this + !! should be changed to allocatable end type coupler_3d_values_type !> Coupler data for 3D fields @@ -93,7 +97,6 @@ module coupler_types_mod type(coupler_3d_values_type), pointer, dimension(:) :: field => NULL() !< field character(len=128) :: flux_type = ' ' !< flux_type character(len=128) :: implementation = ' ' !< implementation - real, pointer, dimension(:) :: param => NULL() !< param logical, pointer, dimension(:) :: flag => NULL() !< flag integer :: atm_tr_index = 0 !< atm_tr_index character(len=128) :: ice_restart_file = ' ' !< ice_restart_file @@ -107,6 +110,7 @@ module coupler_types_mod logical :: use_atm_pressure !< use_atm_pressure logical :: use_10m_wind_speed !< use_10m_wind_speed logical :: pass_through_ice !< pass_through_ice + real, pointer, dimension(:) :: param => NULL() !< param real :: mol_wt = 0.0 !< mol_wt end type coupler_3d_field_type @@ -204,6 +208,7 @@ module coupler_types_mod !! to be r8_kind during mixedmode update to field_manager !! this explicit definition can be removed during the coupler update and be made into FMS_CP_KIND_ real(r8_kind), pointer, dimension(:) :: param => NULL() !< param + real(r4_kind), pointer, dimension(:) :: param => NULL() !< param logical, pointer, dimension(:) :: flag => NULL() !< flag integer :: atm_tr_index = 0 !< atm_tr_index character(len=128) :: ice_restart_file = ' ' !< ice_restart_file diff --git a/coupler/include/atmos_ocean_fluxes.inc b/coupler/include/atmos_ocean_fluxes.inc index 6e530abfaf..24c40c89fb 100644 --- a/coupler/include/atmos_ocean_fluxes.inc +++ b/coupler/include/atmos_ocean_fluxes.inc @@ -18,68 +18,9 @@ !*********************************************************************** !> @defgroup atmos_ocean_fluxes_mod atmos_ocean_fluxes_mod !> @ingroup coupler -!> @brief Implementation of routines to solve the gas fluxes at the -!! ocean surface for a coupled model as outlined in the Biotic-HOWTO -!! documentation below, revision 1.7, 1999/10/05. -!! -!> @author Richard Slater, John Dunne -!! -!! Ocean Carbon Model Intercomparison Study II: Gas exchange coupler. -!! -!! This module will take fields from an atmospheric and an -!! oceanic model and calculate ocean surface fluxes for -!! CO2, O2, CFC-11 or CFC-12 as outlined in the various -!! HOWTO documents at the OCMIP2 website. Multiple instances -!! of a given tracer may be given, resulting in multiple -!! surface fluxes. Additionally, data may be overridden at -!! the individual fields, or fluxes. This could be used in -!! the absence of an atmospheric or oceanic model. -!! -!! http://ocmip5.ipsl.fr/documentation/OCMIP/phase2/simulations/Biotic/HOWTO-Biotic.html !> @addtogroup atmos_ocean_fluxes_mod !> @{ -module atmos_ocean_fluxes_mod - use mpp_mod, only: stdout, mpp_error, FATAL, mpp_sum, mpp_npes - use fms_mod, only: write_version_number - - use coupler_types_mod, only: coupler_1d_bc_type - use coupler_types_mod, only: ind_alpha, ind_csurf, ind_sc_no - use coupler_types_mod, only: ind_pcair, ind_u10, ind_psurf - use coupler_types_mod, only: ind_deposition - use coupler_types_mod, only: ind_runoff - use coupler_types_mod, only: ind_flux, ind_deltap, ind_kw, ind_flux0 - - use field_manager_mod, only: fm_path_name_len, fm_string_len, fm_exists, fm_get_index - use field_manager_mod, only: fm_new_list, fm_get_current_list, fm_change_list - use field_manager_mod, only: fm_field_name_len, fm_type_name_len, fm_dump_list - use field_manager_mod, only: fm_loop_over_list - - use fm_util_mod, only: fm_util_default_caller - use fm_util_mod, only: fm_util_get_length - use fm_util_mod, only: fm_util_set_value, fm_util_set_good_name_list - use fm_util_mod, only: fm_util_set_no_overwrite, fm_util_set_caller - use fm_util_mod, only: fm_util_reset_good_name_list, fm_util_reset_no_overwrite - use fm_util_mod, only: fm_util_reset_caller, fm_util_get_string_array - use fm_util_mod, only: fm_util_check_for_bad_fields, fm_util_get_string - use fm_util_mod, only: fm_util_get_real_array, fm_util_get_real, fm_util_get_integer - use fm_util_mod, only: fm_util_get_logical, fm_util_get_logical_array - - implicit none - private - - public :: atmos_ocean_fluxes_init - public :: atmos_ocean_type_fluxes_init - public :: aof_set_coupler_flux - - character(len=*), parameter :: mod_name = 'atmos_ocean_fluxes_mod' - real, parameter :: epsln=1.0e-30 - - - ! Include variable "version" to be written to log file. -#include - -contains !> @brief Set the values for a coupler flux !! @return its index (0 on error) @@ -111,16 +52,16 @@ contains !! Mismatch between parameter input and the parameters being replaced !! @throw FATAL, "Could not change back to [current_list]" !! @throw FATAL, "Empty [name] list" - function aof_set_coupler_flux(name, flux_type, implementation, atm_tr_index, param, flag,& + function AOF_SET_COUPLER_FLUX_(name, flux_type, implementation, atm_tr_index, param, flag,& & mol_wt, ice_restart_file, ocean_restart_file, units, caller, verbosity) & & result (coupler_index) character(len=*), intent(in) :: name !< name character(len=*), intent(in) :: flux_type !< flux_type character(len=*), intent(in) :: implementation !< implementation integer, intent(in), optional :: atm_tr_index !< atm_tr_index - real, intent(in), dimension(:), optional :: param !< param + real(FMS_CP_TYPE_), intent(in), dimension(:), optional :: param !< param logical, intent(in), dimension(:), optional :: flag !< flag - real, intent(in), optional :: mol_wt !< mol_wt + real(FMS_CP_TYPE_), intent(in), optional :: mol_wt !< mol_wt character(len=*), intent(in), optional :: ice_restart_file !< ice_restart_file character(len=*), intent(in), optional :: ocean_restart_file !< ocean_restart_file character(len=*), intent(in), optional :: units !< units @@ -398,7 +339,7 @@ contains endif return - end function aof_set_coupler_flux + end function AOF_SET_COUPLER_FLUX_ !> @brief Initialize gas flux structures !! @throw FATAL, "Could not get number of fluxes" diff --git a/coupler/include/coupler_types.inc b/coupler/include/coupler_types.inc index d059fe8a27..dcd65e8db5 100644 --- a/coupler/include/coupler_types.inc +++ b/coupler/include/coupler_types.inc @@ -614,7 +614,9 @@ contains if (var%set)& & call mpp_error(FATAL, trim(error_header) // ' The output type has already been initialized.') - if (.not.var_in%set)& + if (.not.var_in%set)&Crontab Explanation + + As you can see, the crontab syntax has 5 asterisks. Here’s what each of those asterisk represent: & call mpp_error(FATAL, trim(error_header) // ' The parent type has not been initialized.') var%num_bcs = var_in%num_bcs