xiaxilin/Q1D
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
Quasi-1D Nozzle Suite
Executables: q1d, g1d_grid, q1da
q1d_grid : grid generator
q1d : primal solver
q1da : dual solver... not fully hooked up for shocked cases
Written in Fortran 9X/0X by Joe Derlaga
Checked with Valgrind to ensure no memory leaks
This code is under development!
The implicit path is still in testing...
The lack of nondimensionalization is causing matrix structure problems and
needs to be resolved!
Adjoint code to follow!
This directory includes a suite of codes to study the Quasi-1D Nozzle problem.
The heart of the suite, q1d,
is a FVM code with multistep Runge-Kutta explicit and Euler implicit solvers.
Currently the RK scheme uses global time stepping
while the implicit scheme uses local time stepping.
The code defaults to a first order mode, but second order is reach via
MUSCL extrapolation of primitive variables.
A variety of flux schemes and variable limiters are available:
Flux schemes:
Central Difference ( unstable, included for rigor! )
Cent. Diff + JST Damping
Roe's FDS
van Leer FVS, currently the only implicit LHS formulation
Steger-Warming FVS
AUSM
AUSM+
HLLC ( to be added! )
AUFS ( to be added! )
Variable limiters:
OSPRE
van Albada
van Leer
Sweby
minmod
superbee
Due to the modularity of the code, it is a simple matter to add additional
flux schemes or variable limiters
The code requires that the number of interior cells, N, be specified,
however, two additional cells, cell(0) and cell(N+1), are ghost cells,
while the interior domain is contained by cell(1,N).
Since there are N interior cells, there are N+1 faces.
Hopefully the below diagram explains this:
DOMAIN: inflow | interior | outflow
-----------------------------------------
CELLS: 0 | 1 | ...... | N | N+1
-----------------------------------------
FACES: 1 2 N N+1
Where appropriate, the code will loop over faces,
such as when it is calculating fluxes, or over cells,
such as when the explicit iteration is being performed.
To build, execute the following (insert appropriate compiler and options):
prompt% ./bootstrap
prompt% ./configure FC=gfortran FCFLAGS="-O2"
prompt% make
If you have run complex_transformation_spike.rb from the main directory,
complexified versions of each source file will exist alongside the standard
versions.
This is done to provide a complex differentiation for the adjoint code.
Once you've set up a grid by running ./q1d_grid,
set up the q1d.nml input file, and execute ./q1d
Files:
q1d.nml == input file
q1d.grd == grid file
q1d.rst == restart file
q1d.hst == convergence history file
q1d_lines.dat == tecplot XY formatted data file
q1d_exact_soln.dat == tecplot XY formatted file with exact solution, DE, & TE
q1d_entropy.dat == tecplot XY entropy and entropy adjoint vars
q1d_cells.tec == tecplot cell-centered color plot file,
FIXME: doesn't exist
Example unit-tests will be added.
Coding standard:
80 column line limit for readability
No tabs, only spaces for indentation, run untabify in emacs
No trailing whitespace
Remember that Fortran ignores capitalization so ql, qL, Ql, and QL
all refer to the same variable.
Therefore, use CAPS sparingly, i.e.,
where differentiating between 1, l, I, L are important,
and where it helps readability.
Additionally, no one wants to be yelled at while reading code.