Partially working Karman Vortexs

This commit is contained in:
2023-10-02 21:49:58 +02:00
parent e9e69c2e07
commit 2fe1b67fe9
11 changed files with 20109 additions and 18913 deletions

View File

@@ -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++;

View File

@@ -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)