MFIX  2016-1
solve_energy_eq.f
Go to the documentation of this file.
1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2 ! C
3 ! Subroutine: SOLVE_ENERGY_EQ C
4 ! Purpose: Solve energy equations C
5 ! C
6 ! Author: M. Syamlal Date: 29-APR-97 C
7 ! C
8 ! Literature/Document References: C
9 ! C
10 ! C
11 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
12  SUBROUTINE solve_energy_eq(IER)
13 
14 ! Modules
15 !---------------------------------------------------------------------//
16  use ambm, only: a_m, b_m, lock_ambm, unlock_ambm
17  use bc, only: bc_t_g, bc_tw_g, bc_hw_t_g, bc_c_t_g
18  use bc, only: bc_t_s, bc_tw_s, bc_hw_t_s, bc_c_t_s
19  use compar, only: ijkstart3, ijkend3, mype, numpes
20  use discretelement, only: des_continuum_coupled
21  use energy, only: hor_s, s_rps, s_rcs, gama_gs
22  use energy, only: hor_g, s_rpg, s_rcg
23  use fldvar, only: ep_g, u_g, v_g, w_g, t_g, t_go, rop_go
24  use fldvar, only: ep_s, u_s, v_s, w_s, t_s, t_so, rop_so
25  use functions, only: fluid_at, wall_at
26  use functions, only: is_on_mype_plus2layers
27  use functions, only: ip_of, jp_of, kp_of
28  use geometry, only: ijkmax2, vol
29  use indices, only: i_of, j_of, k_of
30  use indices, only: ip1, jp1, kp1
32  use mflux, only: flux_ge, flux_gse, flux_gn, flux_gsn
33  use mflux, only: flux_se, flux_sse, flux_sn, flux_ssn
34  use mflux, only: flux_gt, flux_gst, flux_st, flux_sst
35  use mms, only: use_mms, mms_t_g_src, mms_t_s_src
36  use mpi_utility, only: global_all_sum
37  use param, only: dimension_3, dimension_m
38  use param1, only: zero, half
39  use physprop, only: k_g, c_pg
40  use physprop, only: k_s, c_ps, smax
41  use ps, only: point_source
42  use ps, only: ps_t_g, ps_cpxmflow_g
43  use ps, only: ps_t_s, ps_cpxmflow_s
44  use residual, only: resid, max_resid, ijk_resid
45  use residual, only: num_resid, den_resid
46  use residual, only: resid_t
47  use run, only: discretize, odt, added_mass, m_am
48  use toleranc, only: tmin, tmax
49  use ur_facs, only: ur_fac
51  use usr_src, only: gas_energy, solids_energy
52  IMPLICIT NONE
53 
54 ! Dummy arguments
55 !---------------------------------------------------------------------//
56 ! Error index
57  INTEGER, INTENT(INOUT) :: IER
58 
59 ! Local variables
60 !---------------------------------------------------------------------//
61 ! phase index
62  INTEGER :: M
63 ! Cp * Flux
64  DOUBLE PRECISION :: CpxFlux_E(dimension_3), &
65  CpxFlux_N(dimension_3), &
66  CpxFlux_T(dimension_3)
67 ! previous time step term
68  DOUBLE PRECISION :: apo
69 ! Indices
70  INTEGER :: IJK, I, J, K
71 ! linear equation solver method and iterations
72  INTEGER :: LEQM, LEQI
73 
74 ! Arrays for storing errors:
75 ! 120 - Gas phase energy equation diverged
76 ! 121 - Solids energy equation diverged
77 ! 12x - Unclassified
78  INTEGER :: Err_l(0:numpes-1) ! local
79  INTEGER :: Err_g(0:numpes-1) ! global
80 
81 ! temporary use of global arrays:
82 ! arraym1 (locally vxgama)
83 ! the volume x average gas-solids heat transfer at cell centers
84 ! DOUBLE PRECISION :: VXGAMA(DIMENSION_3, DIMENSION_M)
85 ! array1 (locally s_p)
86 ! source vector: coefficient of dependent variable
87 ! becomes part of a_m matrix; must be positive
88  DOUBLE PRECISION :: S_P(dimension_3)
89 ! array2 (locally s_c)
90 ! source vector: constant part becomes part of b_m vector
91  DOUBLE PRECISION :: S_C(dimension_3)
92 ! array3 (locally eps)
93  DOUBLE PRECISION :: EPS(dimension_3)
94 
95  DOUBLE PRECISION, DIMENSION(:,:), ALLOCATABLE :: VXGAMA
96 
97 ! Septadiagonal matrix A_m, vector b_m
98 ! DOUBLE PRECISION A_m(DIMENSION_3, -3:3, 0:DIMENSION_M)
99 ! DOUBLE PRECISION B_m(DIMENSION_3, 0:DIMENSION_M)
100 !---------------------------------------------------------------------//
101 
102  ALLOCATE(vxgama(dimension_3,dimension_m))
103 
104  call lock_ambm ! locks arrys a_m and b_m
105  ! (locally s_p, s_c, eps)
106 ! Initialize error flags.
107  err_l = 0
108 
109 ! initializing
110  DO m = 0, smax
111  CALL init_ab_m (a_m, b_m, ijkmax2, m)
112  ENDDO
113 
114 ! Gas phase computations
115 ! ---------------------------------------------------------------->>>
116  DO ijk = ijkstart3, ijkend3
117  i = i_of(ijk)
118  j = j_of(ijk)
119  k = k_of(ijk)
120 
121  IF (is_on_mype_plus2layers(ip1(i),j,k)) THEN
122  IF(.NOT.added_mass) THEN
123  cpxflux_e(ijk) = half * (c_pg(ijk) + c_pg(ip_of(ijk))) * flux_ge(ijk)
124  ELSE
125  cpxflux_e(ijk) = half * (c_pg(ijk) + c_pg(ip_of(ijk))) * flux_gse(ijk)
126  ENDIF
127  ENDIF
128 
129  IF (is_on_mype_plus2layers(i,jp1(j),k)) THEN
130  IF(.NOT.added_mass) THEN
131  cpxflux_n(ijk) = half * (c_pg(ijk) + c_pg(jp_of(ijk))) * flux_gn(ijk)
132  ELSE
133  cpxflux_n(ijk) = half * (c_pg(ijk) + c_pg(jp_of(ijk))) * flux_gsn(ijk)
134  ENDIF
135  ENDIF
136 
137  IF (is_on_mype_plus2layers(i,j,kp1(k))) THEN
138  IF(.NOT.added_mass) THEN
139  cpxflux_t(ijk) = half * (c_pg(ijk) + c_pg(kp_of(ijk))) * flux_gt(ijk)
140  ELSE
141  cpxflux_t(ijk) = half * (c_pg(ijk) + c_pg(kp_of(ijk))) * flux_gst(ijk)
142  ENDIF
143  ENDIF
144 
145  IF (fluid_at(ijk)) THEN
146  apo = rop_go(ijk)*c_pg(ijk)*vol(ijk)*odt
147  s_p(ijk) = apo + s_rpg(ijk)*vol(ijk)
148  s_c(ijk) = apo*t_go(ijk)-hor_g(ijk)*vol(ijk)+s_rcg(ijk)*vol(ijk)
149  IF(use_mms) s_c(ijk) = s_c(ijk) + mms_t_g_src(ijk)*vol(ijk)
150  ELSE
151  s_p(ijk) = zero
152  s_c(ijk) = zero
153  ENDIF
154  ENDDO
155 
156 ! Account for convective heat transfer between gas and DES particles.
157  IF(des_continuum_coupled) CALL des_2fluid_conv(s_p, s_c)
158 
159 ! calculate the convection-diffusion terms
160  CALL conv_dif_phi (t_g, k_g, discretize(6), u_g, v_g, w_g, &
161  cpxflux_e, cpxflux_n, cpxflux_t, 0, a_m, b_m)
162 
163 ! calculate standard bc
164  CALL bc_phi (t_g, bc_t_g, bc_tw_g, bc_hw_t_g, bc_c_t_g, 0, a_m, b_m)
165 
166 ! set the source terms in a and b matrix equation form
167  CALL source_phi (s_p, s_c, ep_g, t_g, 0, a_m, b_m)
168 
169 ! add point sources
170  IF(point_source) CALL point_source_phi (t_g, ps_t_g, &
171  ps_cpxmflow_g, 0, a_m, b_m)
172 ! usr source
173  IF (call_usr_source(6)) CALL calc_usr_source(gas_energy, &
174  a_m, b_m, lm=0)
175 
176 ! Solids phases computations
177 ! ---------------------------------------------------------------->>>
178  DO m = 1, smax
179  DO ijk = ijkstart3, ijkend3
180  i = i_of(ijk)
181  j = j_of(ijk)
182  k = k_of(ijk)
183 
184  IF (is_on_mype_plus2layers(ip1(i),j,k)) THEN
185  IF(.NOT.added_mass .OR. m /= m_am) THEN
186  cpxflux_e(ijk) = half * (c_ps(ijk,m) + c_ps(ip_of(ijk),m)) * flux_se(ijk,m)
187  ELSE ! M=M_AM is the only phase for which virtual mass is added
188  cpxflux_e(ijk) = half * (c_ps(ijk,m) + c_ps(ip_of(ijk),m)) * flux_sse(ijk)
189  ENDIF
190  ENDIF
191 
192  IF (is_on_mype_plus2layers(i,jp1(j),k)) THEN
193  IF(.NOT.added_mass .OR. m /= m_am) THEN
194  cpxflux_n(ijk) = half * (c_ps(ijk,m) + c_ps(jp_of(ijk),m)) * flux_sn(ijk,m)
195  ELSE
196  cpxflux_n(ijk) = half * (c_ps(ijk,m) + c_ps(jp_of(ijk),m)) * flux_ssn(ijk)
197  ENDIF
198  ENDIF
199 
200  IF (is_on_mype_plus2layers(i,j,kp1(k))) THEN
201  IF(.NOT.added_mass .OR. m /= m_am) THEN
202  cpxflux_t(ijk) = half * (c_ps(ijk,m) + c_ps(kp_of(ijk),m)) * flux_st(ijk,m)
203  ELSE
204  cpxflux_t(ijk) = half * (c_ps(ijk,m) + c_ps(kp_of(ijk),m)) * flux_sst(ijk)
205  ENDIF
206  ENDIF
207 
208  IF (fluid_at(ijk)) THEN
209  apo = rop_so(ijk,m)*c_ps(ijk,m)*vol(ijk)*odt
210  s_p(ijk) = apo + s_rps(ijk,m)*vol(ijk)
211  s_c(ijk) = apo*t_so(ijk,m) - hor_s(ijk,m)*vol(ijk) + &
212  s_rcs(ijk,m)*vol(ijk)
213  vxgama(ijk,m) = gama_gs(ijk,m)*vol(ijk)
214  eps(ijk) = ep_s(ijk,m)
215  IF(use_mms) s_c(ijk) = s_c(ijk) + mms_t_s_src(ijk)*vol(ijk)
216  ELSE
217  s_p(ijk) = zero
218  s_c(ijk) = zero
219  vxgama(ijk,m) = zero
220  eps(ijk) = zero
221  IF(use_mms) eps(ijk) = ep_s(ijk,m)
222  ENDIF
223  ENDDO ! end do (ijk=ijkstart3,ijkend3)
224 
225 ! calculate the convection-diffusion terms
226  CALL conv_dif_phi (t_s(1,m), k_s(1,m), discretize(6), &
227  u_s(1,m), v_s(1,m), w_s(1,m), cpxflux_e, cpxflux_n, &
228  cpxflux_t, m, a_m, b_m)
229 
230 ! calculate standard bc
231  CALL bc_phi (t_s(1,m), bc_t_s(1,m), bc_tw_s(1,m), &
232  bc_hw_t_s(1,m), bc_c_t_s(1,m), m, a_m, b_m)
233 
234 ! set the source terms in a and b matrix equation form
235  CALL source_phi (s_p, s_c, eps, t_s(1,m), m, a_m, b_m)
236 
237 ! Add point sources.
238  IF(point_source) CALL point_source_phi (t_s(:,m), ps_t_s(:,m),&
239  ps_cpxmflow_s(:,m), m, a_m, b_m)
240 
241 ! usr source
242  IF (call_usr_source(6)) CALL calc_usr_source(solids_energy, &
243  a_m, b_m, lm=m)
244 
245  ENDDO ! end do (m=1,smax)
246 
247 ! Solve gas and solids phase equations
248 ! ---------------------------------------------------------------->>>
249 ! use partial elimination on interphase heat transfer term
250  IF (smax > 0 .AND. .NOT.use_mms) &
251  CALL partial_elim_s (t_g, t_s, vxgama, a_m, b_m)
252 
253  CALL calc_resid_s (t_g, a_m, b_m, 0, num_resid(resid_t,0),&
254  den_resid(resid_t,0), resid(resid_t,0), max_resid(resid_t,&
255  0), ijk_resid(resid_t,0), zero)
256 
257  CALL under_relax_s (t_g, a_m, b_m, 0, ur_fac(6))
258 
259 ! call check_ab_m(a_m, b_m, 0, .false., ier)
260 ! call write_ab_m(a_m, b_m, ijkmax2, 0, ier)
261 ! write(*,*) &
262 ! resid(resid_t, 0), max_resid(resid_t, 0), &
263 ! ijk_resid(resid_t, 0)
264 
265 
266  DO m = 1, smax
267  CALL calc_resid_s (t_s(1,m), a_m, b_m, m, num_resid(resid_t,m), &
268  den_resid(resid_t,m), resid(resid_t,m), max_resid(&
269  resid_t,m), ijk_resid(resid_t,m), zero)
270 
271  CALL under_relax_s (t_s(1,m), a_m, b_m, m, ur_fac(6))
272  ENDDO
273 
274 ! set/adjust linear equation solver method and iterations
275  CALL adjust_leq(resid(resid_t,0), leq_it(6), leq_method(6), &
276  leqi, leqm)
277 ! call test_lin_eq(a_m(1, -3, 0), LEQI, LEQM, LEQ_SWEEP(6), LEQ_TOL(6), LEQ_PC(6), 0, ier)
278 
279  CALL solve_lin_eq ('T_g', 6, t_g, a_m, b_m, 0, leqi, leqm, &
280  leq_sweep(6), leq_tol(6), leq_pc(6), ier)
281 ! Check for linear solver divergence.
282  IF(ier == -2) err_l(mype) = 120
283 
284 ! bound temperature in any fluid or flow boundary cells
285  DO ijk = ijkstart3, ijkend3
286  IF(.NOT.wall_at(ijk))&
287  t_g(ijk) = min(tmax, max(tmin, t_g(ijk)))
288  ENDDO
289 ! call out_array(T_g, 'T_g')
290 
291  DO m = 1, smax
292  CALL adjust_leq (resid(resid_t,m), leq_it(6), leq_method(6), &
293  leqi, leqm)
294 ! call test_lin_eq(a_m(1, -3, M), LEQI, LEQM, LEQ_SWEEP(6), LEQ_TOL(6), LEQ_PC(6), 0, ier)
295  CALL solve_lin_eq ('T_s', 6, t_s(1,m), a_m, b_m, m, leqi, &
296  leqm, leq_sweep(6), leq_tol(6), leq_pc(6), ier)
297 ! Check for linear solver divergence.
298  IF(ier == -2) err_l(mype) = 121
299 
300 ! bound temperature in any fluid or flow boundary cells
301  DO ijk = ijkstart3, ijkend3
302  IF(.NOT.wall_at(ijk))&
303  t_s(ijk, m) = min(tmax, max(tmin, t_s(ijk, m)))
304  ENDDO
305  ENDDO ! end do (m=1, smax)
306 
307  call unlock_ambm
308 
309 ! If the linear solver diverged, temperatures may take on unphysical
310 ! values. To prevent them from propogating through the domain or
311 ! causing failure in other routines, force an exit from iterate and
312 ! reduce the time step.
313  CALL global_all_sum(err_l, err_g)
314  ier = maxval(err_g)
315 
316  RETURN
317  END SUBROUTINE solve_energy_eq
integer, dimension(:), allocatable ip1
Definition: indices_mod.f:50
double precision, dimension(:,:,:), allocatable a_m
Definition: ambm_mod.f:27
integer, parameter resid_t
Definition: residual_mod.f:15
double precision, dimension(:), allocatable flux_ge
Definition: mflux_mod.f:13
double precision, dimension(:,:), allocatable gama_gs
Definition: energy_mod.f:12
double precision, dimension(:,:), allocatable v_s
Definition: fldvar_mod.f:105
double precision, dimension(:,:), allocatable c_ps
Definition: physprop_mod.f:86
double precision, dimension(dim_eqs) ur_fac
Definition: ur_facs_mod.f:6
integer, dimension(:), allocatable i_of
Definition: indices_mod.f:45
double precision, dimension(dimension_ps) ps_t_g
Definition: ps_mod.f:62
double precision, parameter tmax
Definition: toleranc_mod.f:31
integer ijkend3
Definition: compar_mod.f:80
double precision, dimension(:), allocatable ep_g
Definition: fldvar_mod.f:15
double precision, dimension(:), allocatable flux_gst
Definition: mflux_mod.f:32
double precision, dimension(dimension_bc) bc_t_g
Definition: bc_mod.f:97
double precision, dimension(:,:), allocatable flux_st
Definition: mflux_mod.f:24
subroutine calc_usr_source(lEQ_NO, A_M, B_M, lB_MMAX, lM, lN)
Definition: usr_src_mod.f:32
integer dimension_3
Definition: param_mod.f:11
integer ijkmax2
Definition: geometry_mod.f:80
subroutine init_ab_m(A_M, B_M, IJKMAX2A, M)
Definition: init_ab_m.f:21
double precision, dimension(dimension_bc) bc_hw_t_g
Definition: bc_mod.f:332
logical added_mass
Definition: run_mod.f:91
double precision, dimension(:,:), allocatable w_s
Definition: fldvar_mod.f:117
double precision, dimension(:,:), allocatable den_resid
Definition: residual_mod.f:52
double precision, dimension(:), allocatable t_g
Definition: fldvar_mod.f:63
double precision, dimension(dimension_bc, dim_m) bc_tw_s
Definition: bc_mod.f:341
double precision, dimension(:), allocatable flux_ssn
Definition: mflux_mod.f:31
subroutine under_relax_s(VAR, A_M, B_M, M, UR)
Definition: under_relax.f:21
subroutine calc_resid_s(VAR, A_M, B_M, M, NUM, DEN, RESID, MAX_RESID, IJK_RESID, TOL)
Definition: calc_resid.f:197
double precision, dimension(:,:), allocatable num_resid
Definition: residual_mod.f:49
Definition: ambm_mod.f:16
double precision function s_rpg(IJK)
Definition: energy_mod.f:37
character(len=4), dimension(dim_eqs) leq_sweep
Definition: leqsol_mod.f:20
double precision, dimension(dimension_ps) ps_cpxmflow_g
Definition: ps_mod.f:63
double precision, dimension(:,:), allocatable t_so
Definition: fldvar_mod.f:72
double precision, dimension(:), allocatable t_go
Definition: fldvar_mod.f:69
double precision, parameter tmin
Definition: toleranc_mod.f:34
double precision, dimension(:,:), allocatable u_s
Definition: fldvar_mod.f:93
double precision, dimension(dimension_ps, dim_m) ps_t_s
Definition: ps_mod.f:80
integer numpes
Definition: compar_mod.f:24
double precision, dimension(:), allocatable mms_t_g_src
Definition: mms_mod.f:56
integer, dimension(:), allocatable k_of
Definition: indices_mod.f:47
double precision, dimension(:), allocatable flux_gse
Definition: mflux_mod.f:28
double precision, dimension(dimension_ps, dim_m) ps_cpxmflow_s
Definition: ps_mod.f:81
double precision, dimension(:,:), allocatable max_resid
Definition: residual_mod.f:40
double precision function s_rps(IJK, M)
Definition: energy_mod.f:53
integer, dimension(dim_eqs) leq_it
Definition: leqsol_mod.f:11
double precision function s_rcg(IJK)
Definition: energy_mod.f:45
integer, dimension(:), allocatable j_of
Definition: indices_mod.f:46
double precision, dimension(dimension_bc, dim_m) bc_t_s
Definition: bc_mod.f:101
double precision, dimension(:), allocatable flux_gn
Definition: mflux_mod.f:15
double precision, dimension(:,:), allocatable t_s
Definition: fldvar_mod.f:66
integer m_am
Definition: run_mod.f:94
integer, dimension(:), allocatable jp1
Definition: indices_mod.f:51
double precision, dimension(dimension_bc) bc_tw_g
Definition: bc_mod.f:338
subroutine lock_ambm
Definition: ambm_mod.f:38
double precision odt
Definition: run_mod.f:54
double precision, dimension(:), allocatable mms_t_s_src
Definition: mms_mod.f:67
subroutine bc_phi(VAR, BC_PHIF, BC_PHIW, BC_HW_PHI, BC_C_PHI, M, A_M, B_M)
Definition: bc_phi.f:13
Definition: mms_mod.f:12
double precision, dimension(:), allocatable v_g
Definition: fldvar_mod.f:99
subroutine solve_energy_eq(IER)
subroutine adjust_leq(RESID, LEQ_ITL, LEQ_METHODL, LEQI, LEQM)
Definition: adjust_leq.f:21
integer, dimension(:), allocatable kp1
Definition: indices_mod.f:52
double precision, dimension(:), allocatable w_g
Definition: fldvar_mod.f:111
double precision, dimension(dim_eqs) leq_tol
Definition: leqsol_mod.f:23
double precision, parameter half
Definition: param1_mod.f:28
double precision, dimension(:,:), allocatable rop_so
Definition: fldvar_mod.f:54
Definition: run_mod.f:13
Definition: param_mod.f:2
double precision, dimension(:), allocatable flux_gt
Definition: mflux_mod.f:17
double precision, dimension(dimension_bc) bc_c_t_g
Definition: bc_mod.f:344
integer, dimension(:,:), allocatable ijk_resid
Definition: residual_mod.f:46
double precision, dimension(:), allocatable rop_go
Definition: fldvar_mod.f:41
integer mype
Definition: compar_mod.f:24
subroutine conv_dif_phi(PHI, DIF, DISC, UF, VF, WF, Flux_E, Flux_N, Flux_T, M, A_M, B_M)
Definition: conv_dif_phi.f:23
integer ijkstart3
Definition: compar_mod.f:80
double precision, dimension(dimension_bc, dim_m) bc_c_t_s
Definition: bc_mod.f:347
logical use_mms
Definition: mms_mod.f:15
subroutine point_source_phi(PHI, PS_PHI, PS_FLOW, M, A_M, B_M)
Definition: source_phi.f:155
double precision, dimension(:), allocatable u_g
Definition: fldvar_mod.f:87
double precision function ep_s(IJK, xxM)
Definition: fldvar_mod.f:178
double precision, dimension(:), allocatable k_g
Definition: physprop_mod.f:92
integer, dimension(dim_eqs) discretize
Definition: run_mod.f:67
Definition: ps_mod.f:22
integer, dimension(dim_eqs) leq_method
Definition: leqsol_mod.f:14
integer smax
Definition: physprop_mod.f:22
double precision, dimension(:,:), allocatable flux_se
Definition: mflux_mod.f:22
double precision, dimension(:), allocatable flux_gsn
Definition: mflux_mod.f:30
double precision function s_rcs(IJK, M)
Definition: energy_mod.f:61
subroutine source_phi(S_P, S_C, EP, PHI, M, A_M, B_M)
Definition: source_phi.f:26
logical, dimension(dim_eqs) call_usr_source
Definition: usr_src_mod.f:7
double precision, dimension(:,:), allocatable resid
Definition: residual_mod.f:37
double precision, dimension(:,:), allocatable b_m
Definition: ambm_mod.f:28
logical point_source
Definition: ps_mod.f:27
subroutine des_2fluid_conv(S_P, S_C)
double precision, dimension(:), allocatable vol
Definition: geometry_mod.f:212
integer dimension_m
Definition: param_mod.f:18
double precision, dimension(:,:), allocatable k_s
Definition: physprop_mod.f:98
double precision, dimension(dimension_bc, dim_m) bc_hw_t_s
Definition: bc_mod.f:335
double precision, dimension(:,:), allocatable flux_sn
Definition: mflux_mod.f:20
subroutine partial_elim_s(VAR_G, VAR_S, VXF, A_M, B_M)
Definition: partial_elim.f:35
double precision, parameter zero
Definition: param1_mod.f:27
subroutine unlock_ambm
Definition: ambm_mod.f:52
double precision, dimension(:), allocatable flux_sst
Definition: mflux_mod.f:33
Definition: bc_mod.f:23
double precision, dimension(:), allocatable c_pg
Definition: physprop_mod.f:80
double precision, dimension(:), allocatable hor_g
Definition: energy_mod.f:6
double precision, dimension(:,:), allocatable hor_s
Definition: energy_mod.f:9
double precision, dimension(:), allocatable flux_sse
Definition: mflux_mod.f:29
subroutine solve_lin_eq(VNAME, Vno, VAR, A_M, B_M, M, ITMAX, METHOD, SWEEP, TOL1, PC, IER)
Definition: solve_lin_eq.f:19
character(len=4), dimension(dim_eqs) leq_pc
Definition: leqsol_mod.f:26