Skip to content

Commit

Permalink
Initial working version, no Conductivty, Plooster EOS or electrode is…
Browse files Browse the repository at this point in the history
…othermal bdry yet.
  • Loading branch information
jamelvin committed May 7, 2018
1 parent 20b52f2 commit d92b6e6
Show file tree
Hide file tree
Showing 75 changed files with 19,848 additions and 0 deletions.
181 changes: 181 additions & 0 deletions Config
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
# Configuration file for the Sedov explosion problem
# (Sedov, L. I., 1959, Similarity and Dimensional Methods
# in Mechanics [New York: Academic])

REQUIRES Driver
REQUIRES physics/Hydro
REQUIRES physics/Eos
REQUIRES physics/sourceTerms/PlasmaPR
#REQUIRES physics/Diffuse/DiffuseMain
#REQUIRES physics/Diffuse/DiffuseMain/Unsplit
#REQUIRES physics/materialProperties/Conductivity
#REQUIRES physics/materialProperties/Viscosity/ViscosityMain

PPDEFINE NBOUNDARIES 18

IF withParticles
PARTICLETYPE active INITMETHOD lattice MAPMETHOD quadratic ADVMETHOD leapfrog

REQUIRES Particles/ParticlesMain
REQUIRES Particles/ParticlesMain/active
REQUIRES Particles/ParticlesMain/active/massive
REQUESTS Particles/ParticlesInitialization/Lattice
REQUESTS Particles/ParticlesMapping/meshWeighting/CIC
REQUESTS Particles/ParticlesMapping/meshWeighting/MapToMesh
REQUESTS Grid/GridParticles/GridParticlesMapToMesh
REQUESTS Particles/ParticlesMain/active/massive/Leapfrog
REQUESTS IO/IOMain/
REQUESTS IO/IOParticles
ENDIF

LINKIF Grid_markRefineDerefine.F90 Grid/GridMain/paramesh
LINKIF gr_expandDomain.F90 Grid/GridMain/paramesh

D sim_pAmbient Initial ambient pressure
PARAMETER sim_pAmbient REAL 1.E-5

D sim_rhoAmbient Initial ambient density
PARAMETER sim_rhoAmbient REAL 1.

D sim_tempAmbient Initial ambient temperature
PARAMETER sim_tempAmbient REAL 300.

D sim_exl Lower bound for x source
PARAMETER sim_exl REAL 0.0

D sim_exu Lower bound for x source
PARAMETER sim_exu REAL 0.0

D sim_eyl Lower bound for x source
PARAMETER sim_eyl REAL 0.0

D sim_eyu Lower bound for x source
PARAMETER sim_eyu REAL 0.0

D sim_pxl Lower bound for x source
PARAMETER sim_pxl REAL 0.0

D sim_pxu Lower bound for x source
PARAMETER sim_pxu REAL 0.0

D sim_pyl Lower bound for x source
PARAMETER sim_pyl REAL 0.0

D sim_pyu Lower bound for x source
PARAMETER sim_pyu REAL 0.0

D sim_vx Lower bound for x source
PARAMETER sim_vx REAL 0.0

D sim_vy Lower bound for x source
PARAMETER sim_vy REAL 0.0

D sim_vz Lower bound for x source
PARAMETER sim_vz REAL 0.0

D sim_expEnergy Explosion energy (distributed over initial explosion region)
PARAMETER sim_expEnergy REAL 1.

D sim_minRhoInit Density floor for initial condition
PARAMETER sim_minRhoInit REAL 1.E-20 [0.0 ...]

D sim_rInit Radius of region into which explosion energy is dumped
D & initially, used only if tinitial <= 0.
PARAMETER sim_rInit REAL 0.05

D sim_xctr Explosion center coordinates
PARAMETER sim_xctr REAL 0.5

D sim_yctr Explosion center coordinates
PARAMETER sim_yctr REAL 0.5

D sim_zctr Explosion center coordinates
PARAMETER sim_zctr REAL 0.5

D sim_nsubzones Number of `sub-zones' in cells for applying 1d profile
PARAMETER sim_nsubzones INTEGER 7 [1 ...]

D sim_forceCenterDerefine Try to force low refinement level around explosion center?
D sim_centerRefineLevel Desired refinement level at center (if "forcing")
D sim_derefineRadius Radius of center region to force derefinement
PARAMETER sim_forceCenterDerefine BOOLEAN FALSE
PARAMETER sim_centerRefineLevel INTEGER 1 [-1, 1 ...]
PARAMETER sim_derefineRadius REAL 0.0 [0.0 ...]

D sim_profFileName Name of file from which to read a 1D Sedov solution for the
D & initial condition.
D & The data from the file will be rescaled, and a density floor given
D & by sim_minRhoInit will be applied, to construct the initial condition.
D & This file will only be used if tinitial > 0.
PARAMETER sim_profFileName STRING "sedovSolution.dat"

DATAFILES sedovSolution.dat
DATAFILES sedovSolutionMod*.dat

D sim_bcSetBdryVar Whether to set the "bdry" variable in unk (if it exists) to 1
D & in guard cells at reflecting boundaries. Doing this will entice Hydro
D & implementations to lower reconstruction order in adjacent cells, and possibly
D & lower the CFL factor applied to timestep computation as well.
PARAMETER sim_bcSetBdryVar BOOLEAN FALSE

D sim_earliestLSTime earliest time included in Largest-{Norm,Error} summaries
D sim_latestLSTime latest time included in Largest-{Norm,Error} summaries
PARAMETER sim_earliestLSTime REAL 0.0
PARAMETER sim_latestLSTime REAL HUGE(1.0)

D sim_smallestNormRadius inner radius bound of region for norm computation
D sim_largestNormRadius outer radius bound of region for norm computation
PARAMETER sim_smallestNormRadius REAL 0.0
PARAMETER sim_largestNormRadius REAL HUGE(1.0)

D sim_oneLevelIntegralsOnly Whether to compute intgral quantities only on
D & cells at one refinement level, ignoring all finer or coarser cells
PARAMETER sim_oneLevelIntegralsOnly BOOLEAN FALSE
D sim_integralsLevel if sim_oneLevelIntegralsOnly is TRUE, this gives the
D & requested refinement level, either explicitly as a positive integer
D & or as -1 for the largest currently realized level.
PARAMETER sim_integralsLevel INTEGER -1 [-1, 1 ...]

D nblockx num initial blocks in x dir
PARAMETER nblockx INTEGER 12

D nblocky num initial blocks in y dir
PARAMETER nblocky INTEGER 18

D nblockz num initial blocks in z dir
PARAMETER nblockz INTEGER 1


# VARIABLE declarations for analytical solution from file here,
# other VARIABLES declared in Hydro etc.

VARIABLE dena TYPE:PER_VOLUME
VARIABLE prsa
VARIABLE vlxa
VARIABLE vlya
VARIABLE vlza
VARIABLE eina
VARIABLE enra

USESETUPVARS DoAnalytical
IF DoAnalytical
LINKIF Grid_computeUserVars.F90.analytical Simulation
LINKIF IO_writeIntegralQuantities.F90.analytical Simulation
LINKIF Simulation_computeAnalytical.F90.analytical Simulation

#VARIABLE dend
#VARIABLE prsd
#VARIABLE vlrd

#VARIABLE denc
#VARIABLE prsc
#VARIABLE vlrc

ENDIF

USESETUPVARS UseBdryVar
IF UseBdryVar
LINKIF Grid_bcApplyToRegionSpecialized.F90.bdryvar Grid
VARIABLE bdry

ENDIF
60 changes: 60 additions & 0 deletions Driver_initSourceTerms.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
!!****if* source/Driver/DriverMain/Driver_initSourceTerms
!!
!! NAME
!!
!! Driver_initSourceTerms
!!
!! SYNOPSIS
!!
!! Driver_initSourceTerms(logical(in) :: restart)
!!
!! DESCRIPTION
!!
!! Initializes all source terms Units by
!! calling their respective initialization routines
!! viz. Stir_init, Burn_init, Heat_init, Cool_init, etc.
!!
!! ARGUMENTS
!! myPE - current processor number
!! restart - indicates if run is starting from scratch (.false.)
!! or restarting from checkpoint (.true.)
!!
!!***

subroutine Driver_initSourceTerms( restart)

use Polytrope_interface, ONLY: Polytrope_init
use Burn_interface, ONLY: Burn_init
use Stir_interface, ONLY : Stir_init
use Heat_interface, ONLY : Heat_init
use Heatexchange_interface, ONLY : Heatexchange_init
use Cool_interface, ONLY : Cool_init
use Diffuse_interface, ONLY : Diffuse_init
use Ionize_interface, ONLY : Ionize_init
use Flame_interface, ONLY : Flame_init
use Turb_interface, ONLY : Turb_init
use RadTrans_interface, ONLY : RadTrans_init
use EnergyDeposition_interface, ONLY : EnergyDeposition_init
use Deleptonize_interface, ONLY : Deleptonize_init
use PlasmaPR_interface, ONLY : PlasmaPR_init

implicit none

logical, intent(in) :: restart

call Polytrope_init()
call Stir_init( restart)
call Cool_init()
call Diffuse_init()
call Heat_init()
call Heatexchange_init( restart)
call Ionize_init()
call Burn_init()
call Turb_init()
call Flame_init()
call RadTrans_init()
call EnergyDeposition_init()
call Deleptonize_init()
call PlasmaPR_init()

end subroutine Driver_initSourceTerms
74 changes: 74 additions & 0 deletions Driver_sourceTerms.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
!!****if* source/Driver/DriverMain/Driver_sourceTerms
!!
!! NAME
!!
!! Driver_sourceTerms
!!
!! SYNOPSIS
!!
!! Driver_sourceTerms(integer(IN)::blockCount,
!! integer(IN)::blockList(blockCount),
!! real(IN) :: dt)
!!
!! DESCRIPTION
!!
!! Driver for source terms. Instead of calling all these routines
!! from Driver_evolveFlash we call Driver_sourceTerms which then
!! makes the calls to Cool, Burn, Heat and Stir. If a unit is not
!! included in the simulation, the routine will be a stub and return
!! without doing anything.
!!
!!
!! ARGUMENTS
!! blockCount : The number of blocks in the list
!! blockList : The list of blocks on which to apply the stirring operator
!! dt : the current timestep
!!
!!***



subroutine Driver_sourceTerms(blockCount, blockList, dt, pass)

use Polytrope_interface, ONLY : Polytrope
use Driver_data, ONLY: dr_simTime
use Flame_interface, ONLY : Flame_step
use Stir_interface, ONLY : Stir
use Heat_interface, ONLY : Heat
use Heatexchange_interface, ONLY : Heatexchange
use Burn_interface, ONLY : Burn
use Cool_interface, ONLY : Cool
use Ionize_interface, ONLY : Ionize
use Flame_interface, ONLY : Flame_step
use Turb_interface, ONLY : Turb_calc
use EnergyDeposition_interface, ONLY : EnergyDeposition
use Deleptonize_interface, ONLY : Deleptonize
use PlasmaPR_interface, ONLY : PlasmaPR_calc

implicit none

real, intent(IN) :: dt
integer, intent(IN) :: blockCount
integer, dimension(blockCount), intent(IN):: blockList
integer, OPTIONAL, intent(IN):: pass

#ifdef DRIVER_EDEARLY
call EnergyDeposition(blockCount, blockList, dt, dr_simTime, pass)
#endif
call Polytrope(blockCount, blockList, dt)
call Stir(blockCount, blockList, dt)
call Turb_calc(blockCount, blockList)
call Flame_step(blockCount, blockList, dt)
call Burn(blockCount, blockList, dt)
call Heat(blockCount, blockList, dt, dr_simTime)
call Heatexchange(blockCount, blockList, dt)
call Cool(blockCount, blockList, dt, dr_simTime)
call Ionize(blockCount, blockList, dt, dr_simTime)
#ifndef DRIVER_EDEARLY
call EnergyDeposition(blockCount, blockList, dt, dr_simTime, pass)
#endif
call Deleptonize(blockCount, blockList, dt, dr_simTime)
call PlasmaPR_calc(blockCount, blockList)

return
end subroutine Driver_sourceTerms
Loading

0 comments on commit d92b6e6

Please sign in to comment.