WIP: Pull Request for a complete Solver package #2
@ -32,7 +32,7 @@ jmax 50 # number of interior cells in y-direction
|
||||
# Time Data:
|
||||
# ---------
|
||||
|
||||
te 100.0 # final time
|
||||
te 60.0 # final time
|
||||
dt 0.02 # time stepsize
|
||||
tau 0.5 # safety factor for time stepsize control (<0 constant delt)
|
||||
|
||||
@ -62,7 +62,7 @@ y2 4.0
|
||||
# -----------------------
|
||||
# Shape 0 disable, 1 Rectangle/Square, 2 Circle
|
||||
|
||||
shape 1
|
||||
shape 0
|
||||
xCenter 10.0
|
||||
yCenter 2
|
||||
xRectLength 6.0
|
||||
|
@ -32,7 +32,7 @@ jmax 100 # number of interior cells in y-direction
|
||||
# Time Data:
|
||||
# ---------
|
||||
|
||||
te 60.0 # final time
|
||||
te 10.0 # final time
|
||||
dt 0.02 # time stepsize
|
||||
tau 0.5 # safety factor for time stepsize control (<0 constant delt)
|
||||
|
||||
@ -42,7 +42,7 @@ tau 0.5 # safety factor for time stepsize control (<0 constant delt)
|
||||
itermax 1000 # maximal number of pressure iteration in one time step
|
||||
eps 0.001 # stopping tolerance for pressure iteration
|
||||
rho 0.5
|
||||
omg 1.7 # relaxation parameter for SOR iteration
|
||||
omg 1.8 # relaxation parameter for SOR iteration
|
||||
gamma 0.9 # upwind differencing factor gamma
|
||||
|
||||
# Particle Tracing Data:
|
||||
|
72
BasicSolver/2D-seq/karman.par
Normal file
72
BasicSolver/2D-seq/karman.par
Normal file
@ -0,0 +1,72 @@
|
||||
#==============================================================================
|
||||
# Laminar Canal Flow
|
||||
#==============================================================================
|
||||
|
||||
# Problem specific Data:
|
||||
# ---------------------
|
||||
|
||||
name karman # name of flow setup
|
||||
|
||||
bcTop 1 # flags for boundary conditions
|
||||
bcBottom 1 # 1 = no-slip 3 = outflow
|
||||
bcLeft 3 # 2 = free-slip 4 = periodic
|
||||
bcRight 3 #
|
||||
|
||||
gx 0.0 # Body forces (e.g. gravity)
|
||||
gy 0.0 #
|
||||
|
||||
re 10000.0 # Reynolds number
|
||||
|
||||
u_init 1.0 # initial value for velocity in x-direction
|
||||
v_init 0.0 # initial value for velocity in y-direction
|
||||
p_init 0.0 # initial value for pressure
|
||||
|
||||
# Geometry Data:
|
||||
# -------------
|
||||
|
||||
xlength 30.0 # domain size in x-direction
|
||||
ylength 4.0 # domain size in y-direction
|
||||
imax 200 # number of interior cells in x-direction
|
||||
jmax 50 # number of interior cells in y-direction
|
||||
|
||||
# Time Data:
|
||||
# ---------
|
||||
|
||||
te 100.0 # final time
|
||||
dt 0.02 # time stepsize
|
||||
tau 0.5 # safety factor for time stepsize control (<0 constant delt)
|
||||
|
||||
# Pressure Iteration Data:
|
||||
# -----------------------
|
||||
|
||||
itermax 200 # maximal number of pressure iteration in one time step
|
||||
eps 0.001 # stopping tolerance for pressure iteration
|
||||
rho 0.52
|
||||
omg 1.75 # relaxation parameter for SOR iteration
|
||||
gamma 0.9 # upwind differencing factor gamma
|
||||
|
||||
# Particle Tracing Data:
|
||||
# -----------------------
|
||||
|
||||
numberOfParticles 60
|
||||
startTime 0
|
||||
injectTimePeriod 0.5
|
||||
writeTimePeriod 0.5
|
||||
|
||||
x1 0.0
|
||||
y1 1.9
|
||||
x2 0.0
|
||||
y2 2.1
|
||||
|
||||
# Obstacle Geometry Data:
|
||||
# -----------------------
|
||||
# Shape 0 disable, 1 Rectangle/Square, 2 Circle
|
||||
|
||||
shape 2
|
||||
xCenter 4.0
|
||||
yCenter 2.0
|
||||
xRectLength 2.0
|
||||
yRectLength 1.0
|
||||
circleRadius 1.0
|
||||
|
||||
#===============================================================================
|
File diff suppressed because it is too large
Load Diff
@ -78,7 +78,7 @@ int main (int argc, char** argv)
|
||||
|
||||
|
||||
/* Added function for particle tracing. Will inject and advance particles as per timePeriod */
|
||||
//trace(&particletracer, solver.u, solver.v, t);
|
||||
trace(&particletracer, solver.u, solver.v, t);
|
||||
|
||||
t += solver.dt;
|
||||
nt++;
|
||||
|
@ -23,7 +23,7 @@
|
||||
#define S(i, j) s[(j) * (imax + 2) + (i)]
|
||||
#define RHS(i, j) rhs[(j) * (imax + 2) + (i)]
|
||||
|
||||
static double distance(i, j, iCenter, jCenter)
|
||||
static double distance(double i, double j, double iCenter, double jCenter)
|
||||
{
|
||||
return sqrt(pow(iCenter - i, 2)
|
||||
+ pow(jCenter - j, 2) * 1.0);
|
||||
@ -133,10 +133,11 @@ void initSolver(Solver* solver, Parameter* params)
|
||||
double invSqrSum = 1.0 / (dx * dx) + 1.0 / (dy * dy);
|
||||
solver->dtBound = 0.5 * solver->re * 1.0 / invSqrSum;
|
||||
|
||||
int iCenter = 0, jCenter = 0, iRectLength = 0, jRectLength = 0, radius = 0;
|
||||
double xCenter = 0, yCenter = 0, radius = 0;
|
||||
double x1=0, x2=0, y1=0, y2=0;
|
||||
|
||||
int* s = solver->s;
|
||||
|
||||
|
||||
switch(params->shape)
|
||||
{
|
||||
@ -161,15 +162,15 @@ void initSolver(Solver* solver, Parameter* params)
|
||||
|
||||
break;
|
||||
case CIRCLE:
|
||||
iCenter = params->xCenter/dx;
|
||||
jCenter = params->yCenter/dy;
|
||||
xCenter = params->xCenter;
|
||||
yCenter = params->yCenter;
|
||||
radius = params->circleRadius;
|
||||
|
||||
for (int j = 1; j < jmax + 1; j++)
|
||||
{
|
||||
for (int i = 1; i < imax + 1; i++)
|
||||
{
|
||||
if(distance(i, j, iCenter, jCenter) <= radius)
|
||||
if(distance((i*dx), (j*dy), xCenter, yCenter) <= radius)
|
||||
{
|
||||
S(i, j) = LOCAL;
|
||||
}
|
||||
@ -605,6 +606,13 @@ void setSpecialBoundaryCondition(Solver* solver)
|
||||
if(S(0,j) == NONE) U(0, j) = 1.0;
|
||||
}
|
||||
}
|
||||
else if (strcmp(solver->problem, "karman") == 0)
|
||||
{
|
||||
for (int j = 1; j < jmax + 1; j++)
|
||||
{
|
||||
U(0, j) = 1.0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void setObjectBoundaryCondition(Solver* solver)
|
||||
|
@ -1,7 +1,6 @@
|
||||
set terminal png size 1800,768 enhanced font ,12
|
||||
set terminal png size 3600,768 enhanced font ,28
|
||||
set output 'velocity.png'
|
||||
set size ratio -1
|
||||
set datafile separator whitespace
|
||||
set object 1 rect from 0.0,0.0 to 1.0,0.5 lw 5
|
||||
|
||||
|
||||
plot 'velocity.dat' using 1:2:3:4:5 with vectors filled head size 0.01,20,60 lc palette
|
||||
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
After Width: | Height: | Size: 289 KiB |
12
BasicSolver/2D-seq/vis_files/karman_animate.plot
Normal file
12
BasicSolver/2D-seq/vis_files/karman_animate.plot
Normal file
@ -0,0 +1,12 @@
|
||||
unset border; unset tics; unset key;
|
||||
set term gif animate delay 20
|
||||
set output "trace.gif"
|
||||
set xrange [0:30]
|
||||
set yrange [0:4]
|
||||
set object 1 circle front at 4.0,2.0 size 1.0 fillcolor rgb "black" lw 2
|
||||
|
||||
|
||||
do for [ts=0:300] {
|
||||
plot "particles_".ts.".dat" with points pointtype 7
|
||||
}
|
||||
unset output
|
Binary file not shown.
After Width: | Height: | Size: 1.2 MiB |
Loading…
Reference in New Issue
Block a user