initialization.f90 Source File


This file depends on

sourcefile~~initialization.f90~~EfferentGraph sourcefile~initialization.f90 initialization.f90 sourcefile~prognostics.f90 prognostics.f90 sourcefile~initialization.f90->sourcefile~prognostics.f90 sourcefile~params.f90 params.f90 sourcefile~initialization.f90->sourcefile~params.f90 sourcefile~sea_model.f90 sea_model.f90 sourcefile~initialization.f90->sourcefile~sea_model.f90 sourcefile~time_stepping.f90 time_stepping.f90 sourcefile~initialization.f90->sourcefile~time_stepping.f90 sourcefile~model_state.f90 model_state.f90 sourcefile~initialization.f90->sourcefile~model_state.f90 sourcefile~geopotential.f90 geopotential.f90 sourcefile~initialization.f90->sourcefile~geopotential.f90 sourcefile~coupler.f90 coupler.f90 sourcefile~initialization.f90->sourcefile~coupler.f90 sourcefile~model_control.f90 model_control.f90 sourcefile~initialization.f90->sourcefile~model_control.f90 sourcefile~boundaries.f90 boundaries.f90 sourcefile~initialization.f90->sourcefile~boundaries.f90 sourcefile~forcing.f90 forcing.f90 sourcefile~initialization.f90->sourcefile~forcing.f90 sourcefile~prognostics.f90->sourcefile~params.f90 sourcefile~prognostics.f90->sourcefile~model_state.f90 sourcefile~prognostics.f90->sourcefile~model_control.f90 sourcefile~types.f90 types.f90 sourcefile~prognostics.f90->sourcefile~types.f90 sourcefile~physical_constants.f90 physical_constants.f90 sourcefile~prognostics.f90->sourcefile~physical_constants.f90 sourcefile~geometry.f90 geometry.f90 sourcefile~prognostics.f90->sourcefile~geometry.f90 sourcefile~spectral.f90 spectral.f90 sourcefile~prognostics.f90->sourcefile~spectral.f90 sourcefile~diagnostics.f90 diagnostics.f90 sourcefile~prognostics.f90->sourcefile~diagnostics.f90 sourcefile~params.f90->sourcefile~types.f90 sourcefile~sea_model.f90->sourcefile~params.f90 sourcefile~sea_model.f90->sourcefile~model_state.f90 sourcefile~sea_model.f90->sourcefile~model_control.f90 sourcefile~sea_model.f90->sourcefile~boundaries.f90 sourcefile~interpolation.f90 interpolation.f90 sourcefile~sea_model.f90->sourcefile~interpolation.f90 sourcefile~sea_model.f90->sourcefile~types.f90 sourcefile~sea_model.f90->sourcefile~physical_constants.f90 sourcefile~mod_radcon.f90 mod_radcon.f90 sourcefile~sea_model.f90->sourcefile~mod_radcon.f90 sourcefile~time_stepping.f90->sourcefile~params.f90 sourcefile~time_stepping.f90->sourcefile~model_state.f90 sourcefile~time_stepping.f90->sourcefile~types.f90 sourcefile~tendencies.f90 tendencies.f90 sourcefile~time_stepping.f90->sourcefile~tendencies.f90 sourcefile~horizontal_diffusion.f90 horizontal_diffusion.f90 sourcefile~time_stepping.f90->sourcefile~horizontal_diffusion.f90 sourcefile~time_stepping.f90->sourcefile~physical_constants.f90 sourcefile~time_stepping.f90->sourcefile~spectral.f90 sourcefile~implicit.f90 implicit.f90 sourcefile~time_stepping.f90->sourcefile~implicit.f90 sourcefile~model_state.f90->sourcefile~params.f90 sourcefile~model_state.f90->sourcefile~types.f90 sourcefile~model_state.f90->sourcefile~horizontal_diffusion.f90 sourcefile~model_state.f90->sourcefile~geometry.f90 sourcefile~model_state.f90->sourcefile~spectral.f90 sourcefile~model_state.f90->sourcefile~implicit.f90 sourcefile~geopotential.f90->sourcefile~params.f90 sourcefile~geopotential.f90->sourcefile~model_state.f90 sourcefile~geopotential.f90->sourcefile~types.f90 sourcefile~geopotential.f90->sourcefile~physical_constants.f90 sourcefile~geopotential.f90->sourcefile~geometry.f90 sourcefile~coupler.f90->sourcefile~sea_model.f90 sourcefile~coupler.f90->sourcefile~model_state.f90 sourcefile~coupler.f90->sourcefile~model_control.f90 sourcefile~land_model.f90 land_model.f90 sourcefile~coupler.f90->sourcefile~land_model.f90 sourcefile~model_control.f90->sourcefile~params.f90 sourcefile~model_control.f90->sourcefile~types.f90 sourcefile~boundaries.f90->sourcefile~params.f90 sourcefile~boundaries.f90->sourcefile~model_state.f90 sourcefile~boundaries.f90->sourcefile~types.f90 sourcefile~boundaries.f90->sourcefile~physical_constants.f90 sourcefile~forcing.f90->sourcefile~params.f90 sourcefile~forcing.f90->sourcefile~model_state.f90 sourcefile~forcing.f90->sourcefile~model_control.f90 sourcefile~surface_fluxes.f90 surface_fluxes.f90 sourcefile~forcing.f90->sourcefile~surface_fluxes.f90 sourcefile~forcing.f90->sourcefile~types.f90 sourcefile~forcing.f90->sourcefile~physical_constants.f90 sourcefile~shortwave_radiation.f90 shortwave_radiation.f90 sourcefile~forcing.f90->sourcefile~shortwave_radiation.f90 sourcefile~forcing.f90->sourcefile~mod_radcon.f90 sourcefile~humidity.f90 humidity.f90 sourcefile~forcing.f90->sourcefile~humidity.f90 sourcefile~longwave_radiation.f90 longwave_radiation.f90 sourcefile~forcing.f90->sourcefile~longwave_radiation.f90 sourcefile~forcing.f90->sourcefile~land_model.f90 sourcefile~surface_fluxes.f90->sourcefile~params.f90 sourcefile~surface_fluxes.f90->sourcefile~types.f90 sourcefile~surface_fluxes.f90->sourcefile~physical_constants.f90 sourcefile~surface_fluxes.f90->sourcefile~geometry.f90 sourcefile~surface_fluxes.f90->sourcefile~mod_radcon.f90 sourcefile~surface_fluxes.f90->sourcefile~humidity.f90 sourcefile~interpolation.f90->sourcefile~params.f90 sourcefile~interpolation.f90->sourcefile~types.f90 sourcefile~tendencies.f90->sourcefile~params.f90 sourcefile~tendencies.f90->sourcefile~model_state.f90 sourcefile~tendencies.f90->sourcefile~geopotential.f90 sourcefile~tendencies.f90->sourcefile~types.f90 sourcefile~tendencies.f90->sourcefile~physical_constants.f90 sourcefile~tendencies.f90->sourcefile~geometry.f90 sourcefile~tendencies.f90->sourcefile~spectral.f90 sourcefile~tendencies.f90->sourcefile~implicit.f90 sourcefile~physics.f90 physics.f90 sourcefile~tendencies.f90->sourcefile~physics.f90 sourcefile~horizontal_diffusion.f90->sourcefile~params.f90 sourcefile~horizontal_diffusion.f90->sourcefile~types.f90 sourcefile~horizontal_diffusion.f90->sourcefile~physical_constants.f90 sourcefile~horizontal_diffusion.f90->sourcefile~geometry.f90 sourcefile~physical_constants.f90->sourcefile~params.f90 sourcefile~physical_constants.f90->sourcefile~types.f90 sourcefile~geometry.f90->sourcefile~params.f90 sourcefile~geometry.f90->sourcefile~types.f90 sourcefile~geometry.f90->sourcefile~physical_constants.f90 sourcefile~spectral.f90->sourcefile~params.f90 sourcefile~spectral.f90->sourcefile~types.f90 sourcefile~spectral.f90->sourcefile~physical_constants.f90 sourcefile~spectral.f90->sourcefile~geometry.f90 sourcefile~fourier.f90 fourier.f90 sourcefile~spectral.f90->sourcefile~fourier.f90 sourcefile~implicit.f90->sourcefile~params.f90 sourcefile~implicit.f90->sourcefile~types.f90 sourcefile~implicit.f90->sourcefile~horizontal_diffusion.f90 sourcefile~implicit.f90->sourcefile~physical_constants.f90 sourcefile~implicit.f90->sourcefile~geometry.f90 sourcefile~matrix_inversion.f90 matrix_inversion.f90 sourcefile~implicit.f90->sourcefile~matrix_inversion.f90 sourcefile~shortwave_radiation.f90->sourcefile~params.f90 sourcefile~shortwave_radiation.f90->sourcefile~model_state.f90 sourcefile~shortwave_radiation.f90->sourcefile~types.f90 sourcefile~shortwave_radiation.f90->sourcefile~geometry.f90 sourcefile~shortwave_radiation.f90->sourcefile~mod_radcon.f90 sourcefile~mod_radcon.f90->sourcefile~params.f90 sourcefile~mod_radcon.f90->sourcefile~types.f90 sourcefile~diagnostics.f90->sourcefile~params.f90 sourcefile~diagnostics.f90->sourcefile~types.f90 sourcefile~diagnostics.f90->sourcefile~spectral.f90 sourcefile~humidity.f90->sourcefile~params.f90 sourcefile~humidity.f90->sourcefile~types.f90 sourcefile~longwave_radiation.f90->sourcefile~params.f90 sourcefile~longwave_radiation.f90->sourcefile~types.f90 sourcefile~longwave_radiation.f90->sourcefile~physical_constants.f90 sourcefile~longwave_radiation.f90->sourcefile~mod_radcon.f90 sourcefile~land_model.f90->sourcefile~params.f90 sourcefile~land_model.f90->sourcefile~model_state.f90 sourcefile~land_model.f90->sourcefile~boundaries.f90 sourcefile~land_model.f90->sourcefile~interpolation.f90 sourcefile~land_model.f90->sourcefile~types.f90 sourcefile~fourier.f90->sourcefile~params.f90 sourcefile~fourier.f90->sourcefile~types.f90 sourcefile~fourier.f90->sourcefile~geometry.f90 sourcefile~legendre.f90 legendre.f90 sourcefile~fourier.f90->sourcefile~legendre.f90 sourcefile~matrix_inversion.f90->sourcefile~types.f90 sourcefile~physics.f90->sourcefile~params.f90 sourcefile~physics.f90->sourcefile~sea_model.f90 sourcefile~physics.f90->sourcefile~model_state.f90 sourcefile~physics.f90->sourcefile~surface_fluxes.f90 sourcefile~physics.f90->sourcefile~types.f90 sourcefile~physics.f90->sourcefile~physical_constants.f90 sourcefile~physics.f90->sourcefile~geometry.f90 sourcefile~physics.f90->sourcefile~spectral.f90 sourcefile~physics.f90->sourcefile~shortwave_radiation.f90 sourcefile~physics.f90->sourcefile~humidity.f90 sourcefile~physics.f90->sourcefile~longwave_radiation.f90 sourcefile~convection.f90 convection.f90 sourcefile~physics.f90->sourcefile~convection.f90 sourcefile~sppt.f90 sppt.f90 sourcefile~physics.f90->sourcefile~sppt.f90 sourcefile~vertical_diffusion.f90 vertical_diffusion.f90 sourcefile~physics.f90->sourcefile~vertical_diffusion.f90 sourcefile~large_scale_condensation.f90 large_scale_condensation.f90 sourcefile~physics.f90->sourcefile~large_scale_condensation.f90 sourcefile~convection.f90->sourcefile~params.f90 sourcefile~convection.f90->sourcefile~types.f90 sourcefile~convection.f90->sourcefile~physical_constants.f90 sourcefile~sppt.f90->sourcefile~params.f90 sourcefile~sppt.f90->sourcefile~types.f90 sourcefile~sppt.f90->sourcefile~physical_constants.f90 sourcefile~sppt.f90->sourcefile~spectral.f90 sourcefile~sppt.f90->sourcefile~legendre.f90 sourcefile~vertical_diffusion.f90->sourcefile~params.f90 sourcefile~vertical_diffusion.f90->sourcefile~types.f90 sourcefile~vertical_diffusion.f90->sourcefile~physical_constants.f90 sourcefile~large_scale_condensation.f90->sourcefile~params.f90 sourcefile~large_scale_condensation.f90->sourcefile~types.f90 sourcefile~large_scale_condensation.f90->sourcefile~physical_constants.f90 sourcefile~legendre.f90->sourcefile~params.f90 sourcefile~legendre.f90->sourcefile~types.f90 sourcefile~legendre.f90->sourcefile~physical_constants.f90 sourcefile~legendre.f90->sourcefile~geometry.f90

Files dependent on this one

sourcefile~~initialization.f90~~AfferentGraph sourcefile~initialization.f90 initialization.f90 sourcefile~speedy.f90 speedy.f90 sourcefile~speedy.f90->sourcefile~initialization.f90 sourcefile~speedy_driver.f90 speedy_driver.f90 sourcefile~speedy_driver.f90->sourcefile~initialization.f90 sourcefile~speedy_driver.f90->sourcefile~speedy.f90

Contents

Source Code


Source Code

!> author: Sam Hatfield, Fred Kucharski, Franco Molteni
!  date: 08/05/2019
!  The master initialization module.
module initialization
    implicit none

    private
    public initialize_state

contains

    !> Initializes everything.
    subroutine initialize_state(state, control_params)
        use model_control, only : ControlParams_t
        use coupler, only : initialize_coupler
        use sea_model, only : sea_coupling_flag
        use time_stepping, only : first_step
        use boundaries, only : initialize_boundaries
        use model_state, only : ModelState_t
        use prognostics, only : initialize_prognostics
        use geopotential, only : initialize_geopotential
        use forcing, only : set_forcing
        use params, only : ix, il

        integer :: k

        ! =========================================================================
        ! Subroutine definitions
        ! =========================================================================
        type(ModelState_t), intent(inout) :: state
        type(ControlParams_t), intent(out) :: control_params

        ! call print_speedy_title
        state%current_step = 0

        ! =========================================================================
        ! Module instances initialization
        ! =========================================================================

        ! IMPORTANT: This module need to be intialized first!
        call state%mod_geometry%initialize()

        ! Initialize spectral transforms module
        call state%mod_spectral%initialize(state%mod_geometry)

        ! Initialize implicit module
        call state%mod_implicit%initialize(state%mod_geometry)

        call initialize_geopotential(state)

        ! Check consistency of coupling and prescribed SST anomaly flags
        if (sea_coupling_flag >= 4) state%sst_anomaly_coupling_flag = .true.

        ! =========================================================================
        ! Initialization of atmospheric model constants and variables
        ! =========================================================================

        ! Initialize boundary conditions (land-sea mask, sea ice etc.)
        call initialize_boundaries(state)

        ! Initialize model variables
        call initialize_prognostics(state, control_params)

        ! =========================================================================
        ! Initialization of coupled modules (land, sea, ice)
        ! =========================================================================
        call initialize_coupler(state, control_params)

        ! =========================================================================
        ! Initialization of first time step
        ! =========================================================================
        ! Set up the forcing fields for the first time step
        call set_forcing(state, 0, control_params%model_datetime, control_params%tyear)

        ! Do the initial (2nd-order) time step, initialize the semi-implicit scheme
        call first_step(state)

        ! Initialize coordinates
        state%lev(:) = real(state%mod_geometry%fsg(:))
        state%lon(:) = (/(3.75 * k, k = 0, ix - 1)/)
        state%lat(:) = (/(real(state%mod_geometry%radang(k)) * 90.0 / asin(1.0), k = 1, il)/)

        state%initialized = .true.

    end subroutine

end module