39 integer :: message,mpi_err
40 real(kind=kind(1.0d0)),
dimension(3) :: xbar
42 print*,
'Starting 4DEnVar'
81 print*,
'init guess = ',xbar
91 print*,
'vardata%n = ',vardata%n
93 select case (vardata%opt_method)
96 call
subroutine_cg(vardata%cg_method,vardata%n,vardata%cg_eps,vardata%x0)
99 call
lbfgs_sub(vardata%n,vardata%lbfgs_factr,vardata%lbfgs_pgtol,vardata%x0)
103 call
lbfgsb_sub(vardata%n,vardata%lbfgs_factr,vardata%lbfgs_pgtol,&
104 vardata%x0,vardata%nbd,vardata%l,vardata%u)
113 call mpi_bcast(message,1,mpi_integer,0,pf_mpi_comm,mpi_err)
119 print*,
'optimization solution is:'
122 print*,
'that means optimal state is:'
126 print*,
'background state was:'
132 call mpi_finalize(mpi_err)
subroutine allocate_vardata
subroutine to allocate space for 4denvar
subroutine convert_control_to_state(n, v, stateDim, x)
a subroutine to convert the optimization control variable to a model state vector ...
subroutine send_all_models(stateDim, nrhs, x, tag)
subroutine to send all the model states to the models
subroutine configure_model
subroutine called initially to set up details and data for model specific functions ...
Module containing EMPIRE coupling data.
Module that stores the information about the outputting from empire.
module holding data specific for 4denvar, not var itself. this is necessary because of the difference...
subroutine read_ensemble_perturbation_matrix
subroutine to read in the ensemble perturbation matrix
subroutine recv_all_models(stateDim, nrhs, x)
subroutine to receive all the model states from the models after
subroutine lbfgsb_sub(n, factr_in, pgtol_in, x, nbd, l, u)
Limited memory BFGS bound constrained optimization code as callable subroutine.
subroutine initialise_mpi(mdl_id, cpl_root, cpl_mpi_comm)
subroutine read_observation_numbers
subroutine to somehow read in observation numbers
program fourdenvar
the main program to run 4DEnVar
Module that stores the dimension of observation and state spaces.
subroutine fourdenvar_fcn(n, v, f, g)
subroutine to provide the objective function and gradient for 4dEnVar.
subroutine random_seed_mpi(pfid)
Subroutine to set the random seed across MPI threads.
subroutine allocate4denvardata
subroutine subroutine_cg(method, n, epsin, x)
Nonlinear Conjugate gradient method as callable subroutine.
subroutine read_lbfgsb_bounds
subroutine to somehow read in bounds data
subroutine lbfgs_sub(n, factr_in, pgtol_in, x)
Limited memory BFGS unconstrained optimization code as callable subroutine.
subroutine read_background_term()
subroutine to read xb from file
subroutine set_var_controls
subroutine to ensure vardata is ok
module holding data for variational problems
subroutine open_emp_o(id_num)
subroutine to open the file for outputting