da_wrfvar_main.f90

References to this file elsewhere.
1 program da_wrfvar_main
2 
3    !-----------------------------------------------------------------------
4    ! Purpose: Main program of WRF-Var.  Responsible for starting up, reading 
5    ! in (and broadcasting for distributed memory) configuration data, defining 
6    ! and initializing the top-level domain, either from initial or restart
7    ! data, setting up time-keeping, and then calling the da_solve
8    ! routine assimilation. After the assimilation is completed, 
9    ! the model is properly shut down.
10    !-----------------------------------------------------------------------
11 
12    use module_symbols_util, only : wrfu_finalize
13 
14    use da_control, only : trace_use
15    use da_tracing, only : da_trace_init, da_trace_report, da_trace_entry, &
16       da_trace_exit
17    use da_wrf_interfaces, only : wrf_shutdown, wrf_message, disable_quilting
18    use da_wrfvar_top, only : da_wrfvar_init1,da_wrfvar_init2,da_wrfvar_run
19 
20    implicit none
21 
22    interface
23       subroutine da_wrfvar_finalize
24       end subroutine da_wrfvar_finalize
25    end interface
26 
27    ! Split initialisation into 2 parts so we can start and stop trace here
28 
29    call disable_quilting
30 
31    call da_wrfvar_init1
32 
33    if (trace_use) call da_trace_init
34    if (trace_use) call da_trace_entry("da_wrfvar_main")
35 
36    call da_wrfvar_init2
37 
38    call da_wrfvar_run
39 
40    call da_wrfvar_finalize
41 
42    call wrf_message("*** WRF-Var completed successfully ***")
43 
44    if (trace_use) call da_trace_exit("da_wrfvar_main")
45    if (trace_use) call da_trace_report
46 
47    call wrfu_finalize
48    call wrf_shutdown
49 
50 end program da_wrfvar_main
51