speedy.f90 Source File


This file depends on

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

Contents

Source Code


Source Code

!> author: Sam Hatfield, Fred Kucharski, Franco Molteni
!> date: 29/04/2019
!> The top-level program. Here we initialize the model and run the main loop
!> until the (continually updated) model datetime (`model_datetime`) equals the
!> final datetime (`end_datetime`).
program speedy
    use params, only: nsteps, delt, nsteps_out, nstrad
    use date, only: model_datetime, end_datetime, newdate, datetime_equal
    use shortwave_radiation, only: compute_shortwave
    use input_output, only: output
    use coupler, only: couple_sea_land
    use initialization, only: initialize
    use time_stepping, only: step
    use diagnostics, only: check_diagnostics
    use prognostics, only: vor, div, t, ps, tr, phi
    use forcing, only: set_forcing

    implicit none

    ! Time step counter
    integer :: model_step = 1

    ! Initialization
    call initialize

    ! Model main loop
    do while (.not. datetime_equal(model_datetime, end_datetime))
        ! Daily tasks
        if (mod(model_step-1, nsteps) == 0) then
            ! Set forcing terms according to date
            call set_forcing(1)
        end if

        ! Determine whether to compute shortwave radiation on this time step
        compute_shortwave = mod(model_step, nstrad) == 1

        ! Perform one leapfrog time step
        call step(2, 2, 2*delt)

        ! Check model diagnostics
        call check_diagnostics(vor(:,:,:,2), div(:,:,:,2), t(:,:,:,2), model_step)

        ! Increment time step counter
        model_step = model_step + 1

        ! Increment model datetime
        call newdate

        ! Output
        if (mod(model_step-1, nsteps_out) == 0) call output(model_step-1,  vor, div, t, ps, tr, phi)

        ! Exchange data with coupler
        call couple_sea_land(1+model_step/nsteps)
    end do
end