global.F90 coverage: 85.71 %func 50.70 %block
1) module Global_module
2)
3) use Global_Aux_module
4)
5) use PFLOTRAN_Constants_module
6)
7) implicit none
8)
9) private
10)
11) #include "petsc/finclude/petscsys.h"
12)
13) public GlobalSetup, &
14) GlobalSetAuxVarScalar, &
15) GlobalSetAuxVarVecLoc, &
16) GlobalGetAuxVarVecLoc, &
17) GlobalWeightAuxVars, &
18) GlobalUpdateState, &
19) GlobalUpdateAuxVars
20)
21) contains
22)
23) ! ************************************************************************** !
24)
25) subroutine GlobalSetup(realization)
26) !
27) ! Author: Glenn Hammond
28) ! Date: 02/22/08
29) !
30)
31) use Realization_Subsurface_class
32) use Patch_module
33) use Option_module
34) use Coupler_module
35) use Connection_module
36) use Grid_module
37)
38) implicit none
39)
40) class(realization_subsurface_type) :: realization
41)
42) type(option_type), pointer :: option
43) type(patch_type),pointer :: patch
44) type(grid_type), pointer :: grid
45) type(coupler_type), pointer :: boundary_condition
46) type(coupler_type), pointer :: source_sink
47)
48) PetscInt :: ghosted_id, iconn, sum_connection
49) type(global_auxvar_type), pointer :: auxvars(:)
50) type(global_auxvar_type), pointer :: auxvars_bc(:)
51) type(global_auxvar_type), pointer :: auxvars_ss(:)
52)
53) option => realization%option
54) patch => realization%patch
55) grid => patch%grid
56)
57) patch%aux%Global => GlobalAuxCreate()
58)
59) ! allocate auxvar data structures for all grid cells
60) #ifdef COMPUTE_INTERNAL_MASS_FLUX
61) option%iflag = 1 ! allocate mass_balance array
62) #else
63) option%iflag = 0 ! be sure not to allocate mass_balance array
64) #endif
65) allocate(auxvars(grid%ngmax))
66) do ghosted_id = 1, grid%ngmax
67) call GlobalAuxVarInit(auxvars(ghosted_id),option)
68) enddo
69) patch%aux%Global%auxvars => auxvars
70) patch%aux%Global%num_aux = grid%ngmax
71)
72) ! count the number of boundary connections and allocate
73) ! auxvar data structures for them
74) boundary_condition => patch%boundary_condition_list%first
75) sum_connection = 0
76) do
77) if (.not.associated(boundary_condition)) exit
78) sum_connection = sum_connection + &
79) boundary_condition%connection_set%num_connections
80) boundary_condition => boundary_condition%next
81) enddo
82)
83) if (sum_connection > 0) then
84) option%iflag = 1 ! enable allocation of mass_balance array
85) allocate(auxvars_bc(sum_connection))
86) do iconn = 1, sum_connection
87) call GlobalAuxVarInit(auxvars_bc(iconn),option)
88) enddo
89) patch%aux%Global%auxvars_bc => auxvars_bc
90) endif
91) patch%aux%Global%num_aux_bc = sum_connection
92)
93) ! count the number of source/sink connections and allocate
94) ! auxvar data structures for them
95) source_sink => patch%source_sink_list%first
96) sum_connection = 0
97) do
98) if (.not.associated(source_sink)) exit
99) sum_connection = sum_connection + &
100) source_sink%connection_set%num_connections
101) source_sink => source_sink%next
102) enddo
103)
104) if (sum_connection > 0) then
105) option%iflag = 1 ! enable allocation of mass_balance array
106) allocate(auxvars_ss(sum_connection))
107) do iconn = 1, sum_connection
108) call GlobalAuxVarInit(auxvars_ss(iconn),option)
109) enddo
110) patch%aux%Global%auxvars_ss => auxvars_ss
111) endif
112) patch%aux%Global%num_aux_ss = sum_connection
113)
114) option%iflag = 0
115)
116) end subroutine GlobalSetup
117)
118) ! ************************************************************************** !
119)
120) subroutine GlobalSetAuxVarScalar(realization,value,ivar)
121) !
122) ! Sets values of auxvar data using a scalar value.
123) !
124) ! Author: Glenn Hammond
125) ! Date: 11/19/08
126) !
127)
128) use Realization_Subsurface_class
129) use Option_module
130) use Patch_module
131) use Variables_module, only : LIQUID_PRESSURE, LIQUID_SATURATION, &
132) LIQUID_DENSITY, GAS_PRESSURE, &
133) GAS_DENSITY, GAS_SATURATION, &
134) TEMPERATURE, LIQUID_DENSITY_MOL
135)
136) implicit none
137)
138) class(realization_subsurface_type) :: realization
139) PetscReal :: value
140) PetscInt :: ivar
141)
142) type(option_type), pointer :: option
143) type(patch_type), pointer :: patch
144)
145) PetscInt :: i
146)
147) patch => realization%patch
148) option => realization%option
149)
150) select case(ivar)
151) case(LIQUID_PRESSURE)
152) do i=1, patch%aux%Global%num_aux
153) patch%aux%Global%auxvars(i)%pres = value
154) enddo
155) do i=1, patch%aux%Global%num_aux_bc
156) patch%aux%Global%auxvars_bc(i)%pres = value
157) enddo
158) case(TEMPERATURE)
159) do i=1, patch%aux%Global%num_aux
160) patch%aux%Global%auxvars(i)%temp = value
161) enddo
162) do i=1, patch%aux%Global%num_aux_bc
163) patch%aux%Global%auxvars_bc(i)%temp = value
164) enddo
165) case(LIQUID_DENSITY)
166) do i=1, patch%aux%Global%num_aux
167) patch%aux%Global%auxvars(i)%den_kg(option%liquid_phase) = value
168) enddo
169) do i=1, realization%patch%aux%Global%num_aux_bc
170) patch%aux%Global%auxvars_bc(i)%den_kg(option%liquid_phase) = value
171) enddo
172) case(LIQUID_DENSITY_MOL)
173) do i=1, patch%aux%Global%num_aux
174) patch%aux%Global%auxvars(i)%den(option%liquid_phase) = value/FMWH2O
175) enddo
176) do i=1, realization%patch%aux%Global%num_aux_bc
177) patch%aux%Global%auxvars_bc(i)%den(option%liquid_phase) = value/FMWH2O
178) enddo
179) case(LIQUID_SATURATION)
180) do i=1, patch%aux%Global%num_aux
181) patch%aux%Global%auxvars(i)%sat(option%liquid_phase) = value
182) enddo
183) do i=1, patch%aux%Global%num_aux_bc
184) patch%aux%Global%auxvars_bc(i)%sat(option%liquid_phase) = value
185) enddo
186) end select
187)
188) end subroutine GlobalSetAuxVarScalar
189)
190) ! ************************************************************************** !
191)
192) subroutine GlobalSetAuxVarVecLoc(realization,vec_loc,ivar,isubvar)
193) !
194) ! Sets values of auxvar data using a vector.
195) !
196) ! Author: Glenn Hammond
197) ! Date: 11/19/08
198) !
199)
200) use Realization_Subsurface_class
201) use Patch_module
202) use Grid_module
203) use Option_module
204) use Variables_module, only : LIQUID_PRESSURE, LIQUID_SATURATION, &
205) LIQUID_DENSITY, GAS_PRESSURE, &
206) GAS_DENSITY, GAS_SATURATION, &
207) TEMPERATURE, SC_FUGA_COEFF, GAS_DENSITY_MOL, &
208) STATE
209)
210) implicit none
211)
212) #include "petsc/finclude/petscvec.h"
213) #include "petsc/finclude/petscvec.h90"
214)
215) class(realization_subsurface_type) :: realization
216) Vec :: vec_loc
217) PetscInt :: ivar
218) PetscInt :: isubvar
219)
220) type(option_type), pointer :: option
221) type(patch_type), pointer :: patch
222) type(grid_type), pointer :: grid
223)
224) PetscInt :: ghosted_id
225) PetscReal, pointer :: vec_loc_p(:)
226) PetscErrorCode :: ierr
227)
228) patch => realization%patch
229) grid => patch%grid
230) option => realization%option
231)
232) call VecGetArrayReadF90(vec_loc,vec_loc_p,ierr);CHKERRQ(ierr)
233)
234) select case(ivar)
235) case(LIQUID_PRESSURE)
236) select case(isubvar)
237) case(TIME_T)
238) do ghosted_id=1, grid%ngmax
239) patch%aux%Global%auxvars(ghosted_id)%pres_store(option%liquid_phase,TIME_T) = &
240) vec_loc_p(ghosted_id)
241) enddo
242) case(TIME_TpDT)
243) do ghosted_id=1, grid%ngmax
244) patch%aux%Global%auxvars(ghosted_id)%pres_store(option%liquid_phase,TIME_TpDT) = &
245) vec_loc_p(ghosted_id)
246) enddo
247) case default
248) do ghosted_id=1, grid%ngmax
249) patch%aux%Global%auxvars(ghosted_id)%pres(option%liquid_phase) = vec_loc_p(ghosted_id)
250) enddo
251) end select
252) case(GAS_PRESSURE)
253) select case(isubvar)
254) case(TIME_T)
255) do ghosted_id=1, grid%ngmax
256) patch%aux%Global%auxvars(ghosted_id)%pres_store(option%gas_phase,TIME_T) = &
257) vec_loc_p(ghosted_id)
258) enddo
259) case(TIME_TpDT)
260) do ghosted_id=1, grid%ngmax
261) patch%aux%Global%auxvars(ghosted_id)%pres_store(option%gas_phase,TIME_TpDT) = &
262) vec_loc_p(ghosted_id)
263) enddo
264) case default
265) do ghosted_id=1, grid%ngmax
266) patch%aux%Global%auxvars(ghosted_id)%pres(option%gas_phase) = vec_loc_p(ghosted_id)
267) enddo
268) end select
269) case(TEMPERATURE)
270) select case(isubvar)
271) case(TIME_T)
272) do ghosted_id=1, grid%ngmax
273) patch%aux%Global%auxvars(ghosted_id)%temp_store(TIME_T) = &
274) vec_loc_p(ghosted_id)
275) enddo
276) case(TIME_TpDT)
277) do ghosted_id=1, grid%ngmax
278) patch%aux%Global%auxvars(ghosted_id)%temp_store(TIME_TpDT) = &
279) vec_loc_p(ghosted_id)
280) enddo
281) case default
282) do ghosted_id=1, grid%ngmax
283) patch%aux%Global%auxvars(ghosted_id)%temp = vec_loc_p(ghosted_id)
284) enddo
285) end select
286) case(LIQUID_DENSITY)
287) select case(isubvar)
288) case(TIME_T)
289) do ghosted_id=1, grid%ngmax
290) patch%aux%Global%auxvars(ghosted_id)%den_kg_store(option%liquid_phase,TIME_T) = &
291) vec_loc_p(ghosted_id)
292) enddo
293) case(TIME_TpDT)
294) do ghosted_id=1, grid%ngmax
295) patch%aux%Global%auxvars(ghosted_id)%den_kg_store(option%liquid_phase,TIME_TpDT) = &
296) vec_loc_p(ghosted_id)
297) enddo
298) case default
299) do ghosted_id=1, grid%ngmax
300) patch%aux%Global%auxvars(ghosted_id)%den_kg(option%liquid_phase) = vec_loc_p(ghosted_id)
301) patch%aux%Global%auxvars(ghosted_id)%den(option%liquid_phase) = &
302) vec_loc_p(ghosted_id)/FMWH2O
303) enddo
304) end select
305) case(GAS_SATURATION)
306) select case(isubvar)
307) case(TIME_T)
308) do ghosted_id=1, grid%ngmax
309) patch%aux%Global%auxvars(ghosted_id)%sat_store(option%gas_phase,TIME_T) = &
310) vec_loc_p(ghosted_id)
311) enddo
312) case(TIME_TpDT)
313) do ghosted_id=1, grid%ngmax
314) patch%aux%Global%auxvars(ghosted_id)%sat_store(option%gas_phase,TIME_TpDT) = &
315) vec_loc_p(ghosted_id)
316) enddo
317) case default
318) do ghosted_id=1, grid%ngmax
319) patch%aux%Global%auxvars(ghosted_id)%sat(option%gas_phase) = &
320) vec_loc_p(ghosted_id)
321) enddo
322) end select
323) case(GAS_DENSITY)
324) select case(isubvar)
325) case(TIME_T)
326) do ghosted_id=1, grid%ngmax
327) patch%aux%Global%auxvars(ghosted_id)%den_kg_store(option%gas_phase,TIME_T) = &
328) vec_loc_p(ghosted_id)
329) enddo
330) case(TIME_TpDT)
331) do ghosted_id=1, grid%ngmax
332) patch%aux%Global%auxvars(ghosted_id)%den_kg_store(option%gas_phase,TIME_TpDT) = &
333) vec_loc_p(ghosted_id)
334) enddo
335) case default
336) do ghosted_id=1, grid%ngmax
337) patch%aux%Global%auxvars(ghosted_id)%den_kg(option%gas_phase) = vec_loc_p(ghosted_id)
338) enddo
339) end select
340) case(GAS_DENSITY_MOL)
341) select case(isubvar)
342) case(TIME_T)
343) do ghosted_id=1, grid%ngmax
344) patch%aux%Global%auxvars(ghosted_id)%den_store(option%gas_phase,TIME_T) = &
345) vec_loc_p(ghosted_id)
346) enddo
347) case(TIME_TpDT)
348) do ghosted_id=1, grid%ngmax
349) patch%aux%Global%auxvars(ghosted_id)%den_store(option%gas_phase,TIME_TpDT) = &
350) vec_loc_p(ghosted_id)
351) enddo
352) case default
353) do ghosted_id=1, grid%ngmax
354) patch%aux%Global%auxvars(ghosted_id)%den(option%gas_phase) = vec_loc_p(ghosted_id)
355) enddo
356) end select
357) case(LIQUID_SATURATION)
358) select case(isubvar)
359) case(TIME_T)
360) do ghosted_id=1, grid%ngmax
361) patch%aux%Global%auxvars(ghosted_id)%sat_store(option%liquid_phase,TIME_T) = &
362) vec_loc_p(ghosted_id)
363) enddo
364) case(TIME_TpDT)
365) do ghosted_id=1, grid%ngmax
366) patch%aux%Global%auxvars(ghosted_id)%sat_store(option%liquid_phase,TIME_TpDT) = &
367) vec_loc_p(ghosted_id)
368) enddo
369) case default
370) do ghosted_id=1, grid%ngmax
371) patch%aux%Global%auxvars(ghosted_id)%sat(option%liquid_phase) = &
372) vec_loc_p(ghosted_id)
373) enddo
374) end select
375) case(SC_FUGA_COEFF)
376) select case(isubvar)
377) case(TIME_T)
378) do ghosted_id=1, grid%ngmax
379) patch%aux%Global%auxvars(ghosted_id)%fugacoeff_store(1,TIME_T) = &
380) vec_loc_p(ghosted_id)
381) enddo
382) case(TIME_TpDT)
383) do ghosted_id=1, grid%ngmax
384) patch%aux%Global%auxvars(ghosted_id)%fugacoeff_store(1,TIME_TpDT) = &
385) vec_loc_p(ghosted_id)
386) enddo
387) case default
388) do ghosted_id=1, grid%ngmax
389) patch%aux%Global%auxvars(ghosted_id)%fugacoeff(1) = vec_loc_p(ghosted_id)
390) enddo
391) end select
392) case(STATE)
393) do ghosted_id=1, grid%ngmax
394) patch%aux%Global%auxvars(ghosted_id)%istate = &
395) int(vec_loc_p(ghosted_id)+1.d-10)
396) enddo
397) end select
398)
399) call VecRestoreArrayReadF90(vec_loc,vec_loc_p,ierr);CHKERRQ(ierr)
400)
401) end subroutine GlobalSetAuxVarVecLoc
402)
403) ! ************************************************************************** !
404)
405) subroutine GlobalGetAuxVarVecLoc(realization,vec_loc,ivar,isubvar)
406) !
407) ! Sets values of auxvar data using a vector.
408) !
409) ! Author: Glenn Hammond
410) ! Date: 11/19/08
411) !
412)
413) use Realization_Subsurface_class
414) use Patch_module
415) use Grid_module
416) use Option_module
417) use Variables_module, only : STATE
418)
419) implicit none
420)
421) #include "petsc/finclude/petscvec.h"
422) #include "petsc/finclude/petscvec.h90"
423)
424) class(realization_subsurface_type) :: realization
425) Vec :: vec_loc
426) PetscInt :: ivar
427) PetscInt :: isubvar
428)
429) type(option_type), pointer :: option
430) type(patch_type), pointer :: patch
431) type(grid_type), pointer :: grid
432)
433) PetscInt :: ghosted_id
434) PetscReal, pointer :: vec_loc_p(:)
435) PetscErrorCode :: ierr
436)
437) patch => realization%patch
438) grid => patch%grid
439) option => realization%option
440)
441) call VecGetArrayReadF90(vec_loc,vec_loc_p,ierr);CHKERRQ(ierr)
442)
443) select case(ivar)
444) case(STATE)
445) do ghosted_id=1, grid%ngmax
446) vec_loc_p(ghosted_id) = &
447) dble(patch%aux%Global%auxvars(ghosted_id)%istate)
448) enddo
449) case default
450) option%io_buffer = 'Variable unrecognized in GlobalGetAuxVarVecLoc.'
451) call printErrMsg(option)
452) end select
453)
454) call VecRestoreArrayReadF90(vec_loc,vec_loc_p,ierr);CHKERRQ(ierr)
455)
456) end subroutine GlobalGetAuxVarVecLoc
457)
458) ! ************************************************************************** !
459)
460) subroutine GlobalWeightAuxVars(realization,weight)
461) !
462) ! Updates the densities and saturations in auxiliary
463) ! variables associated with reactive transport
464) !
465) ! Author: Glenn Hammond
466) ! Date: 11/03/08
467) !
468)
469) use Realization_Subsurface_class
470) use Option_module
471) use Material_module, only : MaterialWeightAuxVars
472)
473) implicit none
474)
475) class(realization_subsurface_type) :: realization
476) PetscReal :: weight
477)
478) type(option_type), pointer :: option
479) type(global_auxvar_type), pointer :: auxvars(:)
480) PetscInt :: ghosted_id
481)
482) option => realization%option
483) auxvars => realization%patch%aux%Global%auxvars
484)
485) do ghosted_id = 1, realization%patch%aux%Global%num_aux
486) ! interpolate density and saturation based on weight
487) auxvars(ghosted_id)%den_kg(:) = &
488) (weight*auxvars(ghosted_id)%den_kg_store(:,TIME_TpDT)+ &
489) (1.d0-weight)*auxvars(ghosted_id)%den_kg_store(:,TIME_T))
490) auxvars(ghosted_id)%sat(:) = &
491) (weight*auxvars(ghosted_id)%sat_store(:,TIME_TpDT)+ &
492) (1.d0-weight)*auxvars(ghosted_id)%sat_store(:,TIME_T))
493) enddo
494)
495) select case(option%iflowmode)
496) case(G_MODE)
497) do ghosted_id = 1, realization%patch%aux%Global%num_aux
498) auxvars(ghosted_id)%pres(:) = &
499) (weight*auxvars(ghosted_id)%pres_store(:,TIME_TpDT)+ &
500) (1.d0-weight)*auxvars(ghosted_id)%pres_store(:,TIME_T))
501) auxvars(ghosted_id)%temp = &
502) (weight*auxvars(ghosted_id)%temp_store(TIME_TpDT)+ &
503) (1.d0-weight)*auxvars(ghosted_id)%temp_store(TIME_T))
504) enddo
505) case(MPH_MODE,FLASH2_MODE)
506) ! need future implementation for ims_mode too
507) do ghosted_id = 1, realization%patch%aux%Global%num_aux
508) auxvars(ghosted_id)%pres(:) = &
509) (weight*auxvars(ghosted_id)%pres_store(:,TIME_TpDT)+ &
510) (1.d0-weight)*auxvars(ghosted_id)%pres_store(:,TIME_T))
511) auxvars(ghosted_id)%temp = &
512) (weight*auxvars(ghosted_id)%temp_store(TIME_TpDT)+ &
513) (1.d0-weight)*auxvars(ghosted_id)%temp_store(TIME_T))
514) auxvars(ghosted_id)%fugacoeff(:) = &
515) (weight*auxvars(ghosted_id)%fugacoeff_store(:,TIME_TpDT)+ &
516) (1.d0-weight)*auxvars(ghosted_id)%fugacoeff_store(:,TIME_T))
517) if (weight<1D-12) auxvars(ghosted_id)%reaction_rate(:)=0D0
518) ! auxvars(ghosted_id)%den(:) = &
519) ! (weight*auxvars(ghosted_id)%den_store(:,TIME_TpDT)+ &
520) ! (1.d0-weight)*auxvars(ghosted_id)%den_store(:,TIME_T))
521) enddo
522) end select
523)
524) end subroutine GlobalWeightAuxVars
525)
526) ! ************************************************************************** !
527)
528) subroutine GlobalUpdateState(realization)
529) !
530) ! Updates global aux var variables for use in
531) ! reactive transport
532) !
533) ! Author: Glenn Hammond
534) ! Date: 01/14/09
535) !
536)
537) use Realization_Subsurface_class
538) use Realization_Base_class, only : RealizationGetVariable
539) use Communicator_Base_module
540) use Variables_module, only : STATE
541)
542) class(realization_subsurface_type) :: realization
543)
544) call RealizationGetVariable(realization,realization%field%work,STATE, &
545) ZERO_INTEGER)
546) call realization%comm1%GlobalToLocal(realization%field%work, &
547) realization%field%work_loc)
548) call GlobalSetAuxVarVecLoc(realization,realization%field%work_loc,STATE, &
549) ZERO_INTEGER)
550)
551) end subroutine GlobalUpdateState
552)
553) ! ************************************************************************** !
554)
555) subroutine GlobalUpdateAuxVars(realization,time_level,time)
556) !
557) ! Updates global aux var variables for use in
558) ! reactive transport
559) !
560) ! Author: Glenn Hammond
561) ! Date: 01/14/09
562) !
563)
564) use Realization_Subsurface_class
565) use Realization_Base_class, only : RealizationGetVariable
566) use Field_module
567) use Option_module
568) use Communicator_Base_module
569) use Material_module, only : MaterialUpdateAuxVars
570) use Variables_module, only : LIQUID_PRESSURE, LIQUID_SATURATION, &
571) LIQUID_DENSITY, GAS_PRESSURE, &
572) GAS_DENSITY, GAS_SATURATION, &
573) TEMPERATURE, SC_FUGA_COEFF, GAS_DENSITY_MOL
574)
575) class(realization_subsurface_type) :: realization
576) PetscReal :: time
577) PetscInt :: time_level
578)
579) type(field_type), pointer :: field
580) type(option_type), pointer :: option
581)
582) option => realization%option
583) field => realization%field
584)
585) select case(time_level)
586) case(TIME_T)
587) realization%patch%aux%Global%time_t = time
588) case(TIME_TpDT)
589) realization%patch%aux%Global%time_tpdt = time
590) end select
591)
592) ! liquid density
593) call RealizationGetVariable(realization,field%work,LIQUID_DENSITY, &
594) ZERO_INTEGER)
595) call realization%comm1%GlobalToLocal(field%work,field%work_loc)
596) call GlobalSetAuxVarVecLoc(realization,field%work_loc,LIQUID_DENSITY, &
597) time_level)
598)
599) ! liquid saturation
600) call RealizationGetVariable(realization,field%work,LIQUID_SATURATION, &
601) ZERO_INTEGER)
602) call realization%comm1%GlobalToLocal(field%work,field%work_loc)
603) call GlobalSetAuxVarVecLoc(realization,field%work_loc,LIQUID_SATURATION, &
604) time_level)
605) select case(option%iflowmode)
606) case(MPH_MODE,FLASH2_MODE)
607) ! Gas density
608) call RealizationGetVariable(realization,field%work,GAS_DENSITY, &
609) ZERO_INTEGER)
610) call realization%comm1%GlobalToLocal(field%work,field%work_loc)
611) call GlobalSetAuxVarVecLoc(realization,field%work_loc,GAS_DENSITY, &
612) time_level)
613) call RealizationGetVariable(realization,field%work,GAS_DENSITY_MOL, &
614) ZERO_INTEGER)
615) call realization%comm1%GlobalToLocal(field%work,field%work_loc)
616) call GlobalSetAuxVarVecLoc(realization,field%work_loc,GAS_DENSITY_MOL, &
617) time_level)
618)
619)
620) ! Gas saturation
621) call RealizationGetVariable(realization,field%work,GAS_SATURATION, &
622) ZERO_INTEGER)
623) call realization%comm1%GlobalToLocal(field%work,field%work_loc)
624) call GlobalSetAuxVarVecLoc(realization,field%work_loc,GAS_SATURATION, &
625) time_level)
626)
627) ! liquid pressure
628) call RealizationGetVariable(realization,field%work,LIQUID_PRESSURE, &
629) ZERO_INTEGER)
630) call realization%comm1%GlobalToLocal(field%work,field%work_loc)
631) call GlobalSetAuxVarVecLoc(realization,field%work_loc,LIQUID_PRESSURE, &
632) time_level)
633)
634) ! gas pressure
635) call RealizationGetVariable(realization,field%work,GAS_PRESSURE, &
636) ZERO_INTEGER)
637) call realization%comm1%GlobalToLocal(field%work,field%work_loc)
638) call GlobalSetAuxVarVecLoc(realization,field%work_loc,GAS_PRESSURE, &
639) time_level)
640)
641) ! temperature
642) call RealizationGetVariable(realization,field%work,TEMPERATURE, &
643) ZERO_INTEGER)
644) call realization%comm1%GlobalToLocal(field%work,field%work_loc)
645) call GlobalSetAuxVarVecLoc(realization,field%work_loc,TEMPERATURE, &
646) time_level)
647)
648) ! fugacity coeff
649) call RealizationGetVariable(realization,field%work,SC_FUGA_COEFF, &
650) ZERO_INTEGER)
651) call realization%comm1%GlobalToLocal(field%work,field%work_loc)
652) call GlobalSetAuxVarVecLoc(realization,field%work_loc,SC_FUGA_COEFF, &
653) time_level)
654) case(TH_MODE,G_MODE)
655) ! pressure
656) call RealizationGetVariable(realization,field%work,LIQUID_PRESSURE, &
657) ZERO_INTEGER)
658) call realization%comm1%GlobalToLocal(field%work,field%work_loc)
659) call GlobalSetAuxVarVecLoc(realization,field%work_loc,LIQUID_PRESSURE, &
660) time_level)
661)
662) ! temperature
663) call RealizationGetVariable(realization,field%work,TEMPERATURE, &
664) ZERO_INTEGER)
665) call realization%comm1%GlobalToLocal(field%work,field%work_loc)
666) call GlobalSetAuxVarVecLoc(realization,field%work_loc,TEMPERATURE, &
667) time_level)
668)
669) case(IMS_MODE)
670) ! Gas density
671) call RealizationGetVariable(realization,field%work,GAS_DENSITY, &
672) ZERO_INTEGER)
673) call realization%comm1%GlobalToLocal(field%work,field%work_loc)
674) call GlobalSetAuxVarVecLoc(realization,field%work_loc,GAS_DENSITY, &
675) time_level)
676) call RealizationGetVariable(realization,field%work,GAS_DENSITY_MOL, &
677) ZERO_INTEGER)
678) call realization%comm1%GlobalToLocal(field%work,field%work_loc)
679) call GlobalSetAuxVarVecLoc(realization,field%work_loc,GAS_DENSITY_MOL, &
680) time_level)
681)
682)
683) ! Gas saturation
684) call RealizationGetVariable(realization,field%work,GAS_SATURATION, &
685) ZERO_INTEGER)
686) call realization%comm1%GlobalToLocal(field%work,field%work_loc)
687) call GlobalSetAuxVarVecLoc(realization,field%work_loc,GAS_SATURATION, &
688) time_level)
689)
690) ! pressure
691) call RealizationGetVariable(realization,field%work,LIQUID_PRESSURE, &
692) ZERO_INTEGER)
693) call realization%comm1%GlobalToLocal(field%work,field%work_loc)
694) call GlobalSetAuxVarVecLoc(realization,field%work_loc,LIQUID_PRESSURE, &
695) time_level)
696)
697) ! temperature
698) call RealizationGetVariable(realization,field%work,TEMPERATURE, &
699) ZERO_INTEGER)
700) call realization%comm1%GlobalToLocal(field%work,field%work_loc)
701) call GlobalSetAuxVarVecLoc(realization,field%work_loc,TEMPERATURE, &
702) time_level)
703)
704) case(MIS_MODE)
705) ! Gas density
706) call RealizationGetVariable(realization,field%work,GAS_DENSITY, &
707) ZERO_INTEGER)
708) call realization%comm1%GlobalToLocal(field%work,field%work_loc)
709) call GlobalSetAuxVarVecLoc(realization,field%work_loc,GAS_DENSITY, &
710) time_level)
711) call RealizationGetVariable(realization,field%work,GAS_DENSITY_MOL, &
712) ZERO_INTEGER)
713) call realization%comm1%GlobalToLocal(field%work,field%work_loc)
714) call GlobalSetAuxVarVecLoc(realization,field%work_loc,GAS_DENSITY_MOL, &
715) time_level)
716)
717)
718) ! Gas saturation
719) call RealizationGetVariable(realization,field%work,GAS_SATURATION, &
720) ZERO_INTEGER)
721) call realization%comm1%GlobalToLocal(field%work,field%work_loc)
722) call GlobalSetAuxVarVecLoc(realization,field%work_loc,GAS_SATURATION, &
723) time_level)
724)
725) ! pressure
726) call RealizationGetVariable(realization,field%work,LIQUID_PRESSURE, &
727) ZERO_INTEGER)
728) call realization%comm1%GlobalToLocal(field%work,field%work_loc)
729) call GlobalSetAuxVarVecLoc(realization,field%work_loc,LIQUID_PRESSURE, &
730) time_level)
731)
732) ! temperature
733) call RealizationGetVariable(realization,field%work,TEMPERATURE, &
734) ZERO_INTEGER)
735) call realization%comm1%LocalToLocal(field%work_loc,field%work_loc)
736) call GlobalSetAuxVarVecLoc(realization,field%work_loc,TEMPERATURE, &
737) time_level)
738) end select
739)
740) end subroutine GlobalUpdateAuxVars
741)
742) end module Global_module