initialization.f90 Source File


This file depends on

sourcefile~~initialization.f90~~EfferentGraph sourcefile~initialization.f90 initialization.f90 sourcefile~date.f90 date.f90 sourcefile~initialization.f90->sourcefile~date.f90 sourcefile~forcing.f90 forcing.f90 sourcefile~initialization.f90->sourcefile~forcing.f90 sourcefile~input_output.f90 input_output.f90 sourcefile~initialization.f90->sourcefile~input_output.f90 sourcefile~coupler.f90 coupler.f90 sourcefile~initialization.f90->sourcefile~coupler.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~prognostics.f90 prognostics.f90 sourcefile~initialization.f90->sourcefile~prognostics.f90 sourcefile~boundaries.f90 boundaries.f90 sourcefile~initialization.f90->sourcefile~boundaries.f90 sourcefile~geometry.f90 geometry.f90 sourcefile~initialization.f90->sourcefile~geometry.f90 sourcefile~horizontal_diffusion.f90 horizontal_diffusion.f90 sourcefile~initialization.f90->sourcefile~horizontal_diffusion.f90 sourcefile~physics.f90 physics.f90 sourcefile~initialization.f90->sourcefile~physics.f90 sourcefile~geopotential.f90 geopotential.f90 sourcefile~initialization.f90->sourcefile~geopotential.f90 sourcefile~spectral.f90 spectral.f90 sourcefile~initialization.f90->sourcefile~spectral.f90 sourcefile~time_stepping.f90 time_stepping.f90 sourcefile~initialization.f90->sourcefile~time_stepping.f90 sourcefile~date.f90->sourcefile~params.f90 sourcefile~forcing.f90->sourcefile~date.f90 sourcefile~forcing.f90->sourcefile~params.f90 sourcefile~forcing.f90->sourcefile~sea_model.f90 sourcefile~forcing.f90->sourcefile~boundaries.f90 sourcefile~forcing.f90->sourcefile~horizontal_diffusion.f90 sourcefile~forcing.f90->sourcefile~spectral.f90 sourcefile~shortwave_radiation.f90 shortwave_radiation.f90 sourcefile~forcing.f90->sourcefile~shortwave_radiation.f90 sourcefile~humidity.f90 humidity.f90 sourcefile~forcing.f90->sourcefile~humidity.f90 sourcefile~land_model.f90 land_model.f90 sourcefile~forcing.f90->sourcefile~land_model.f90 sourcefile~longwave_radiation.f90 longwave_radiation.f90 sourcefile~forcing.f90->sourcefile~longwave_radiation.f90 sourcefile~surface_fluxes.f90 surface_fluxes.f90 sourcefile~forcing.f90->sourcefile~surface_fluxes.f90 sourcefile~physical_constants.f90 physical_constants.f90 sourcefile~forcing.f90->sourcefile~physical_constants.f90 sourcefile~mod_radcon.f90 mod_radcon.f90 sourcefile~forcing.f90->sourcefile~mod_radcon.f90 sourcefile~dynamical_constants.f90 dynamical_constants.f90 sourcefile~forcing.f90->sourcefile~dynamical_constants.f90 sourcefile~input_output.f90->sourcefile~date.f90 sourcefile~input_output.f90->sourcefile~params.f90 sourcefile~input_output.f90->sourcefile~geometry.f90 sourcefile~input_output.f90->sourcefile~spectral.f90 sourcefile~input_output.f90->sourcefile~physical_constants.f90 sourcefile~coupler.f90->sourcefile~sea_model.f90 sourcefile~coupler.f90->sourcefile~land_model.f90 sourcefile~sea_model.f90->sourcefile~date.f90 sourcefile~sea_model.f90->sourcefile~input_output.f90 sourcefile~sea_model.f90->sourcefile~params.f90 sourcefile~sea_model.f90->sourcefile~boundaries.f90 sourcefile~sea_model.f90->sourcefile~geometry.f90 sourcefile~auxiliaries.f90 auxiliaries.f90 sourcefile~sea_model.f90->sourcefile~auxiliaries.f90 sourcefile~sea_model.f90->sourcefile~physical_constants.f90 sourcefile~sea_model.f90->sourcefile~mod_radcon.f90 sourcefile~interpolation.f90 interpolation.f90 sourcefile~sea_model.f90->sourcefile~interpolation.f90 sourcefile~prognostics.f90->sourcefile~input_output.f90 sourcefile~prognostics.f90->sourcefile~params.f90 sourcefile~prognostics.f90->sourcefile~boundaries.f90 sourcefile~prognostics.f90->sourcefile~geometry.f90 sourcefile~prognostics.f90->sourcefile~spectral.f90 sourcefile~diagnostics.f90 diagnostics.f90 sourcefile~prognostics.f90->sourcefile~diagnostics.f90 sourcefile~prognostics.f90->sourcefile~physical_constants.f90 sourcefile~prognostics.f90->sourcefile~dynamical_constants.f90 sourcefile~boundaries.f90->sourcefile~input_output.f90 sourcefile~boundaries.f90->sourcefile~params.f90 sourcefile~boundaries.f90->sourcefile~spectral.f90 sourcefile~boundaries.f90->sourcefile~physical_constants.f90 sourcefile~geometry.f90->sourcefile~params.f90 sourcefile~geometry.f90->sourcefile~physical_constants.f90 sourcefile~horizontal_diffusion.f90->sourcefile~params.f90 sourcefile~horizontal_diffusion.f90->sourcefile~geometry.f90 sourcefile~horizontal_diffusion.f90->sourcefile~physical_constants.f90 sourcefile~horizontal_diffusion.f90->sourcefile~dynamical_constants.f90 sourcefile~physics.f90->sourcefile~params.f90 sourcefile~physics.f90->sourcefile~sea_model.f90 sourcefile~physics.f90->sourcefile~boundaries.f90 sourcefile~physics.f90->sourcefile~geometry.f90 sourcefile~physics.f90->sourcefile~spectral.f90 sourcefile~physics.f90->sourcefile~shortwave_radiation.f90 sourcefile~physics.f90->sourcefile~auxiliaries.f90 sourcefile~physics.f90->sourcefile~humidity.f90 sourcefile~large_scale_condensation.f90 large_scale_condensation.f90 sourcefile~physics.f90->sourcefile~large_scale_condensation.f90 sourcefile~physics.f90->sourcefile~land_model.f90 sourcefile~physics.f90->sourcefile~longwave_radiation.f90 sourcefile~physics.f90->sourcefile~surface_fluxes.f90 sourcefile~physics.f90->sourcefile~physical_constants.f90 sourcefile~sppt.f90 sppt.f90 sourcefile~physics.f90->sourcefile~sppt.f90 sourcefile~convection.f90 convection.f90 sourcefile~physics.f90->sourcefile~convection.f90 sourcefile~vertical_diffusion.f90 vertical_diffusion.f90 sourcefile~physics.f90->sourcefile~vertical_diffusion.f90 sourcefile~geopotential.f90->sourcefile~params.f90 sourcefile~geopotential.f90->sourcefile~geometry.f90 sourcefile~geopotential.f90->sourcefile~physical_constants.f90 sourcefile~spectral.f90->sourcefile~params.f90 sourcefile~spectral.f90->sourcefile~geometry.f90 sourcefile~fourier.f90 fourier.f90 sourcefile~spectral.f90->sourcefile~fourier.f90 sourcefile~spectral.f90->sourcefile~physical_constants.f90 sourcefile~legendre.f90 legendre.f90 sourcefile~spectral.f90->sourcefile~legendre.f90 sourcefile~time_stepping.f90->sourcefile~params.f90 sourcefile~time_stepping.f90->sourcefile~prognostics.f90 sourcefile~time_stepping.f90->sourcefile~horizontal_diffusion.f90 sourcefile~time_stepping.f90->sourcefile~spectral.f90 sourcefile~implicit.f90 implicit.f90 sourcefile~time_stepping.f90->sourcefile~implicit.f90 sourcefile~tendencies.f90 tendencies.f90 sourcefile~time_stepping.f90->sourcefile~tendencies.f90 sourcefile~time_stepping.f90->sourcefile~dynamical_constants.f90 sourcefile~shortwave_radiation.f90->sourcefile~params.f90 sourcefile~shortwave_radiation.f90->sourcefile~geometry.f90 sourcefile~shortwave_radiation.f90->sourcefile~mod_radcon.f90 sourcefile~auxiliaries.f90->sourcefile~params.f90 sourcefile~implicit.f90->sourcefile~params.f90 sourcefile~implicit.f90->sourcefile~geometry.f90 sourcefile~implicit.f90->sourcefile~horizontal_diffusion.f90 sourcefile~implicit.f90->sourcefile~physical_constants.f90 sourcefile~implicit.f90->sourcefile~dynamical_constants.f90 sourcefile~matrix_inversion.f90 matrix_inversion.f90 sourcefile~implicit.f90->sourcefile~matrix_inversion.f90 sourcefile~humidity.f90->sourcefile~params.f90 sourcefile~diagnostics.f90->sourcefile~params.f90 sourcefile~diagnostics.f90->sourcefile~spectral.f90 sourcefile~large_scale_condensation.f90->sourcefile~params.f90 sourcefile~large_scale_condensation.f90->sourcefile~geometry.f90 sourcefile~large_scale_condensation.f90->sourcefile~physical_constants.f90 sourcefile~land_model.f90->sourcefile~date.f90 sourcefile~land_model.f90->sourcefile~input_output.f90 sourcefile~land_model.f90->sourcefile~params.f90 sourcefile~land_model.f90->sourcefile~boundaries.f90 sourcefile~land_model.f90->sourcefile~auxiliaries.f90 sourcefile~land_model.f90->sourcefile~interpolation.f90 sourcefile~fourier.f90->sourcefile~params.f90 sourcefile~fourier.f90->sourcefile~geometry.f90 sourcefile~longwave_radiation.f90->sourcefile~params.f90 sourcefile~longwave_radiation.f90->sourcefile~geometry.f90 sourcefile~longwave_radiation.f90->sourcefile~physical_constants.f90 sourcefile~longwave_radiation.f90->sourcefile~mod_radcon.f90 sourcefile~surface_fluxes.f90->sourcefile~params.f90 sourcefile~surface_fluxes.f90->sourcefile~geometry.f90 sourcefile~surface_fluxes.f90->sourcefile~humidity.f90 sourcefile~surface_fluxes.f90->sourcefile~land_model.f90 sourcefile~surface_fluxes.f90->sourcefile~physical_constants.f90 sourcefile~surface_fluxes.f90->sourcefile~mod_radcon.f90 sourcefile~tendencies.f90->sourcefile~params.f90 sourcefile~tendencies.f90->sourcefile~prognostics.f90 sourcefile~tendencies.f90->sourcefile~geometry.f90 sourcefile~tendencies.f90->sourcefile~physics.f90 sourcefile~tendencies.f90->sourcefile~geopotential.f90 sourcefile~tendencies.f90->sourcefile~spectral.f90 sourcefile~tendencies.f90->sourcefile~implicit.f90 sourcefile~tendencies.f90->sourcefile~physical_constants.f90 sourcefile~physical_constants.f90->sourcefile~params.f90 sourcefile~mod_radcon.f90->sourcefile~params.f90 sourcefile~interpolation.f90->sourcefile~date.f90 sourcefile~interpolation.f90->sourcefile~params.f90 sourcefile~sppt.f90->sourcefile~params.f90 sourcefile~sppt.f90->sourcefile~spectral.f90 sourcefile~sppt.f90->sourcefile~physical_constants.f90 sourcefile~legendre.f90->sourcefile~params.f90 sourcefile~legendre.f90->sourcefile~geometry.f90 sourcefile~legendre.f90->sourcefile~physical_constants.f90 sourcefile~convection.f90->sourcefile~params.f90 sourcefile~convection.f90->sourcefile~geometry.f90 sourcefile~convection.f90->sourcefile~physical_constants.f90 sourcefile~vertical_diffusion.f90->sourcefile~params.f90 sourcefile~vertical_diffusion.f90->sourcefile~geometry.f90 sourcefile~vertical_diffusion.f90->sourcefile~physical_constants.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

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

contains
    !> Initializes everything.
    subroutine initialize
        use params, only: issty0, initialize_params
        use date, only: isst0, initialize_date, start_datetime
        use coupler, only: initialize_coupler
        use sea_model, only: sea_coupling_flag, sst_anomaly_coupling_flag
        use geometry, only: initialize_geometry
        use spectral, only: initialize_spectral
        use geopotential, only: initialize_geopotential
        use horizontal_diffusion, only: initialize_horizontal_diffusion
        use physics, only: initialize_physics
        use input_output, only: output
        use time_stepping, only: first_step
        use boundaries, only: initialize_boundaries
        use prognostics, only: initialize_prognostics
        use forcing, only: set_forcing

        call print_speedy_title

        ! Initialize model parameters
        call initialize_params

        ! Initialize date
        call initialize_date

        ! Initialize month index for reading SST anomaly file
        isst0 = (start_datetime%year - issty0) * 12 + start_datetime%month

        ! Check consistency of coupling and prescribed SST anomaly flags
        if (sea_coupling_flag >= 4) sst_anomaly_coupling_flag = 1

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

        ! Initialize model geometry
        call initialize_geometry

        ! Initialize spectral transforms
        call initialize_spectral

        ! Initialize geopotential calculations
        call initialize_geopotential

        ! Initialize horizontal diffusion
        call initialize_horizontal_diffusion

        ! Initialize constants for physical parametrization
        call initialize_physics

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

        ! Initialize model variables
        call initialize_prognostics

        ! =========================================================================
        ! Initialization of coupled modules (land, sea, ice)
        ! =========================================================================

        call initialize_coupler

        ! =========================================================================
        ! Initialization of first time step
        ! =========================================================================

        ! Set up the forcing fields for the first time step
        call set_forcing(0)

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

    !> Prints SPEEDY.f90 banner.
    subroutine print_speedy_title
        write (*,'(A)') ''
        write (*,'(A)') '  _____ ______  _____  _____ ______ __   __     __  _____  _____'
        write (*,'(A)') ' /  ___|| ___ \|  ___||  ___||  _  \\ \ / /    / _||  _  ||  _  |'
        write (*,'(A)') ' \ `--. | |_/ /| |__  | |__  | | | | \ V /    | |_ | |_| || |/  |'
        write (*,'(A)') '  `--. \|  __/ |  __| |  __| | | | |  \ /     |  _|\____ ||  /| |'
        write (*,'(A)') ' /\__/ /| |    | |___ | |___ | |/ /   | |   _ | |  .___/ /\ |_/ /'
        write (*,'(A)') ' \____/ \_|    \____/ \____/ |___/    \_/  (_)|_|  \____/  \___/'
        write (*,'(A)') ''
    end subroutine
end module