| Type | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|
| type(hdf5_obj) | :: | hdf5o |
Utility for IO with HDF5 |
|||
| type(parallel_obj) | :: | parallel |
Utility that interfaces with MPI API |
|||
| type(parser_obj) | :: | parser |
Parses input files |
|||
| class(solver_obj), | allocatable | :: | solver |
Solver to run |
||
| character(len=64) | :: | solver_name |
Name of solver to be used |
|||
| type(timer_obj) | :: | timer |
Timing utility |
program main !>-------------------------------------------------------------------------- ! Program: LEAP ! Author: Mohamed Houssem Kasbaoui ! ! Main leap program: runs specified solvers ! -------------------------------------------------------------------------- use leapKinds use leapSolver use leapParser use leapParallel use leapTimer use leapIO use grans use cdifs implicit none type(parallel_obj) :: parallel !! Utility that interfaces with MPI API type(parser_obj) :: parser !! Parses input files type(hdf5_obj) :: hdf5o !! Utility for IO with HDF5 character(len=64) :: solver_name !! Name of solver to be used class(solver_obj), allocatable :: solver !! Solver to run type(timer_obj) :: timer !! Timing utility ! Initialize parser call parser%Initialize() ! Parse input file call parser%ParseFile() ! Initialize parallel environment call parallel%Initialize() ! Initialize hdf5 interface call hdf5o%Initialize(parallel) ! Initialize timer call timer%Initialize(parallel,parser) ! Get solver info call parser%Get("Solver",solver_name) select case (trim(adjustl(solver_name))) case ("grans", "Grans", "GRANS") ! GranS: Granular flow solver allocate(grans_obj:: solver) case ("cdifs", "Cdifs", "CDIFS") ! CDIFS: Constant Density Incompressible Flow Solver allocate(cdifs_obj:: solver) case default call parallel%stop("LEAP: Unknown solver") end select ! Initialize solver call solver%Initialize(timer,parallel,parser) ! HDF5 call solver%LinkHDF5Object(hdf5o) ! Prepare data call solver%PrepareSolver() ! Advance solution do while ( .not. timer%Done() ) ! Update timer to new time step call timer%StepForward() ! Advance solution from n to n+1 call solver%AdvanceSolution() ! Write restart data if ( timer%TimeToWriteRestartData()) call solver%WriteRestartData() ! Write output data if ( timer%TimeToWriteOutputData()) call solver%WriteOutputData() ! Write monitor files call solver%Monitor() end do ! Write restart data when ending run if (timer%Done()) then if (.not.timer%TimeToWriteRestartData()) call solver%WriteRestartData() end if ! Finalize call solver%finalize() call timer%finalize() call parser%finalize() call hdf5o%finalize() call parallel%finalize() end program main