Skip to content

xiaxilin/Q1D

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages