MFIX  2016-1
mfix.f
Go to the documentation of this file.
1 ! -*- f90 -*-
2 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
3 ! !
4 ! Subroutine: MFIX !
5 ! Author: M. Syamlal Date: 29-JAN-92 !
6 ! !
7 ! Purpose: The main module in the MFIX program !
8 ! !
9 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
10 !
62 
63  PROGRAM mfix
64 
65 !-----------------------------------------------
66 ! Modules
67 !-----------------------------------------------
68  USE discretelement, ONLY: des_continuum_coupled, discrete_element
69  USE iterate, ONLY: converged, diverged, adjustdt
75 
76  IMPLICIT NONE
77 
78 !-----------------------------------------------
79 ! Local variables
80 !-----------------------------------------------
81 
82  INTEGER :: II
83  CHARACTER(LEN=80) :: tmp
84 
85  DO ii=1, command_argument_count()
86  CALL get_command_argument(ii,tmp)
88  ENDDO
89 
90 ! Initialize the simulation
91  CALL initialize
92 
93 ! Time march loop.
94 
95  IF(discrete_element .AND. .NOT.des_continuum_coupled) THEN
96 
97 ! Uncoupled discrete element simulations
98  IF (dem_solids) CALL des_time_march
99  IF (pic_solids) CALL pic_time_march
100 
101  ELSE
102 
103 ! Transient or steady state simulation
104  DO WHILE (time + 0.1d0*dt < tstop .AND. .NOT. exit_signal)
105  CALL time_step_init
106  DO
107  CALL iterate_init
108  DO WHILE (nit<max_nit .AND. .NOT.(converged.OR.diverged))
109  nit = nit + 1
110  CALL do_iteration
111  ENDDO
112 
113  CALL post_iterate
114 
115  IF(steady_state) EXIT
116  IF(.NOT.adjustdt()) EXIT
117  ENDDO
118  CALL time_step_end
119  IF (steady_state) EXIT
120  ENDDO
121 
122  ENDIF
123  CALL finalize
124 
125  stop
126  END PROGRAM mfix
subroutine pic_time_march
Definition: time_march_pic.f:8
logical dem_solids
Definition: run_mod.f:257
logical steady_state
Definition: run_mod.f:57
subroutine log_converged
Definition: iterate.f:546
Definition: time_step.f:2
subroutine des_time_march
subroutine initialize
Definition: main.f:42
double precision dt
Definition: run_mod.f:51
program mfix
Definition: mfix.f:63
integer nit
Definition: iterate.f:12
integer ier
Definition: run_mod.f:265
subroutine time_step_end
Definition: time_step.f:116
logical function adjustdt()
Definition: iterate.f:817
subroutine add_command_line_argument(ARG)
Definition: main.f:949
double precision tstop
Definition: run_mod.f:48
subroutine do_iteration
Definition: iterate.f:144
subroutine time_step_init
Definition: time_step.f:19
subroutine finalize
Definition: main.f:426
Definition: run_mod.f:13
subroutine post_iterate
Definition: iterate.f:461
logical diverged
Definition: iterate.f:17
Definition: iterate.f:2
subroutine log_diverged
Definition: iterate.f:499
integer max_nit
Definition: iterate.f:15
Definition: main.f:10
logical exit_signal
Definition: main.f:34
logical converged
Definition: iterate.f:17
double precision time
Definition: run_mod.f:45
logical pic_solids
Definition: run_mod.f:258
subroutine iterate_init
Definition: iterate.f:44