diff options
author | eug-vs <eugene@eug-vs.xyz> | 2022-05-23 16:37:42 +0400 |
---|---|---|
committer | eug-vs <eugene@eug-vs.xyz> | 2022-05-23 16:37:42 +0400 |
commit | db8034ca00aad56b98a71c1d3b19e200fe3120a0 (patch) | |
tree | 151bc296c79aad81a6d3b3e67ba0efd39222cd74 | |
parent | 794c72733725fbf20355c05c8e14931389069a7e (diff) | |
download | CFD-SIMPLE-db8034ca00aad56b98a71c1d3b19e200fe3120a0.tar.gz |
feat!: remove cpp code
-rwxr-xr-x | src/source.cpp | 501 |
1 files changed, 0 insertions, 501 deletions
diff --git a/src/source.cpp b/src/source.cpp deleted file mode 100755 index 3c35588..0000000 --- a/src/source.cpp +++ /dev/null @@ -1,501 +0,0 @@ -// This is not my code.
-// I have no idea how it works.
-// It probably requires paid software.
-// I'm planning my own implementation in Python.
-#include <stdlib.h>
-#include <stdio.h>
-#include <time.h>
-#include <cmath>
-#include "TECIO.h"
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-enum FileType { FULL = 0, GRID = 1, SOLUTION = 2 };
-
-#define BD 20
-#define BX 50
-#define BY 10
-#define NX 2000
-#define NY 200
-#define KT 10
-#define AI -2./3.
-#define DT 0.00001
-#define RX 100
-#define RY 40
-
-#define IY 40
-#define IX 80
-
-#define Re 400
-#define GR 0.0001
-#define T 6000
-
-double dxx[NX], dyy[NY], xi[NX][NY], yi[NX][NY], a[NX*NY], b[NX*NY], c[NX*NY];
-
-double dx[NX][NY], dy[NX][NY];
-
-
-
-
-void PRINT_PLT(void) {
- double SolTime;
- INTEGER4 Debug, I, J, III, DIsDouble, VIsDouble, IMax, JMax, KMax, ZoneType, StrandID, ParentZn, IsBlock;
- INTEGER4 ICellMax, JCellMax, KCellMax, NFConns, FNMode, ShrConn, FileType;
-
- Debug = 1;
- VIsDouble = 1;
- DIsDouble = 1;
- IMax = NY;
- JMax = NX;
- KMax = 1;
- ZoneType = 0; /* Ordered */
- SolTime = 360.0;
- StrandID = 0; /* StaticZone */
- ParentZn = 0; /* No Parent */
- IsBlock = 1; /* Block */
- ICellMax = 0;
- JCellMax = 0;
- KCellMax = 0;
- NFConns = 0;
- FNMode = 0;
- ShrConn = 0;
- FileType = FULL;
-
- /*
- * Open the file and write the tecplot datafile
- * header information
- */
- I = TECINI112((char*)"SIMPLE DATASET",
- (char*)"X Y U V",
- (char*)"UV.plt",
- (char*)".",
- &FileType,
- &Debug,
- &VIsDouble);
-
- /*
- * Write the zone header information.
- */
- I = TECZNE112((char*)"Simple Zone",
- &ZoneType,
- &IMax,
- &JMax,
- &KMax,
- &ICellMax,
- &JCellMax,
- &KCellMax,
- &SolTime,
- &StrandID,
- &ParentZn,
- &IsBlock,
- &NFConns,
- &FNMode,
- 0, /* TotalNumFaceNodes */
- 0, /* NumConnectedBoundaryFaces */
- 0, /* TotalNumBoundaryConnections */
- NULL, /* PassiveVarList */
- NULL, /* ValueLocation = Nodal */
- NULL, /* SharVarFromZone */
- &ShrConn);
-
- /*
- * Write out the field data.
- */
- III = IMax * JMax;
- I = TECDAT112(&III, &dx[0][0], &DIsDouble);
- I = TECDAT112(&III, &dy[0][0], &DIsDouble);
- I = TECDAT112(&III, &xi[0][0], &DIsDouble);
- I = TECDAT112(&III, &yi[0][0], &DIsDouble);
-
- I = TECEND112();
-
-
-}
-
-
-void PRINT_VECT_VTK(double U[NX][NY], double V[NX][NY], double *x, double *y) {
- int i, j;
-
- FILE *vect_field;
-
- /* File grid.vtk*/
- if ((vect_field = fopen("a.vtk", "w")) == NULL)
- printf("The grid file could not be open\n");
- else{
- fprintf(vect_field, "%d\n", NX);
- fprintf(vect_field, "%d\n", NY);
-
- for (i = 0; i <= NX - 1; i++)
- fprintf(vect_field, "%f\n", x[i]);
-
- for (j = 0; j <= NY - 1; j++)
- fprintf(vect_field, "%f\n", y[j]);
-
- for (i = 0; i <= NY - 1; i++)
- for (j = 0; j <= NX - 1; j++){
- fprintf(vect_field, "%f\t %f\t\n", U[j][i], V[j][i]);
- }
- }
- fclose(vect_field);
-
-}
-
-void PRINT_VTK(double U[NX][NY], double V[NX][NY], double *x, double *y) {
- int i, j;
-
- FILE *vect_field;
-
-
- /* File grid.vtk*/
- if ((vect_field = fopen("b.vtk", "w")) == NULL)
- printf("The grid file could not be open\n");
- else{
- fprintf(vect_field, "# vtk DataFile Version 2.0\n");
- fprintf(vect_field, "Sample rectilinear grid\n");
- fprintf(vect_field, "ASCII\n");
- fprintf(vect_field, "DATASET RECTILINEAR_GRID\n");
- fprintf(vect_field, "DIMENSIONS %d %d \n", NX, NY);
- fprintf(vect_field, "X_COORDINATES %d double\n", NX);
- for (i = 0; i <= NX - 1; i++)
- fprintf(vect_field, "%f\n", x[i]);
- fprintf(vect_field, "Y_COORDINATES %d double\n", NY);
- for (j = 0; j <= NY - 1; j++)
- fprintf(vect_field, "%f\n", y[j]);
-// fprintf(vect_field, "Z_COORDINATES %d double\n", nz);
-// fprintf(vect_field, "%f\n", z);
- fprintf(vect_field, "POINT_DATA %d\n", (NX)*(NY));
- fprintf(vect_field, "VECTORS vectors double\n");
- for (i = 0; i <= NY - 1; i++)
- for (j = 0; j <= NX - 1; j++){
- fprintf(vect_field, "%f\t %f\t %f\n", U[j][i], V[j][i], 0.0);
- }
- }
- fclose(vect_field);
-
-}
-
-
-void inixh(double *a)
-{
- int i, j, k;
- for (i = 0; i < NX; i++) {
- for (j = 0; j < NY; j++) {
-
- k = i *NY + j;
- if (i<RX && j>RY)
- a[k] = 1.;
- else
- a[k] = 0.;
- }
- }
-}
-void inih(double *a)
-{
- int i, j, k;
-
- for (i = 0; i < NX; i++) {
- for (j = 0; j < NY; j++) {
- k = i *NY + j;
- a[k] = 0.;
- }
- }
-}
-void USh(double *a, double *b, double *c, double *d)
-{
- double u1;
- int i, j, k;
- for (i = 0; i < NX; i++) {
- for (j = 0; j < NY; j++) {
- k = i *NY + j;
-
- if (i < NX - 2 && i>0 && j < NY - 1 && j>0 && ((i <= RX && j <= RY) != 1)){
- u1 = -((pow(a[k + NY], 2) - pow(a[k - NY], 2))*NX / 2.0f + (a[k + 1] * 0.5*(b[k] + b[k + NY]) - a[k - 1] * 0.5*(b[k - 1] + b[k + NY - 1]))*NY*KT / 2.0);
- u1 = u1 + (1.0 / Re)*((a[k + NY] - 2.0*a[k] + a[k - NY])*NX*NX + (a[k + 1] - 2.0*a[k] + a[k - 1])*NY*NY*KT*KT);
- u1 = a[k] + DT*(u1 - 1.0*NX*(c[k + NY] - c[k]));
- d[k] = u1;
- }
- else
- d[k] = a[k];
-
- }
- }
-}
-void VSh(double *a, double *b, double *c, double *d)
-{
-
- double v1;
- int i, j, k;
- for (i = 0; i < NX; i++) {
- for (j = 0; j < NY; j++) {
- k = i *NY + j;
-
- if (i < NX - 1 && i>0 && j < NY - 2 && j>0 && ((i <= RX && j <= RY) != 1)){
- v1 = -((b[k + NY] * 0.5*(a[k] + a[k + 1]) - b[k - NY] * 0.5*(a[k - NY] + a[k - NY + 1]))*NX / 2.0 + (b[k + 1] * b[k + 1] - b[k - 1] * b[k - 1])*KT*NY / 2.0);
- v1 = v1 + (1.0f / Re)*((b[k + NY] - 2.0f*b[k] + b[k - NY])*NX*NX + (b[k + 1] - 2.0f*b[k] + b[k - 1])*NY*NY*KT*KT);
- v1 = b[k] + DT*(v1 - (1.0f*NY*KT)*(c[k + 1] - c[k]));
- d[k] = v1;
- }
- else
- d[k] = b[k];
- }
- }
-}
-void sumah(double *a, double *b)
-{
- int i, j, k;
- for (i = 0; i < NX; i++) {
- for (j = 0; j < NY; j++) {
- k = i *NY + j;
- b[k] += a[k];
- }
- }
-}
-void rubnixh(double *a)
-{
- int i, j, k;
- for (i = 0; i < NX; i++) {
- for (j = 0; j < NY; j++) {
- k = i *NY + j;
-
- if (i == 0 && j>RY)
- a[k] = 1.;
- if (i == NX - 2)
- a[k] = a[k - NY];
- if (j == 0)
- a[k] = 0.;
- if (j == NY - 1)
- a[k] = a[k - 1];
- if (j == RY && i < RX)
- a[k] = 0.;
- if (i == RX && j <= RY)
- a[k] = a[k + NY] * AI;
- }
- }
-}
-void rubniyh(double *a)
-{
- int i, j, k;
- for (i = 0; i < NX; i++) {
- for (j = 0; j < NY; j++) {
- k = i *NY + j;
-
- if (j == 0)
- a[k] = AI*a[k + 1];
- if (j == NY - 2)
- a[k] = a[k - 1];
- if (i == 0)
- a[k] = 0.;
- if (i == NX - 1)
- a[k] = a[k - NY];
- if (j == RY && i <= RX)
- a[k] = AI*a[k + 1];
- if (i == RX && j < RY)
- a[k] = 0.;
- }
- }
-}
-void rubniph(double *a)
-{
- int i, j, k;
- for (i = 0; i < NX; i++) {
- for (j = 0; j < NY; j++) {
- k = i *NY + j;
-
-
- if (j == 0 && i != 0 && i != NX - 1)
- a[k] = a[k + 1];
- if (j == NY - 1 && i != 0 && i != NX - 1)
- a[k] = 0.0;
- if (i == 0 && j != 0 && j != NY - 1)
- a[k] = 0;
- if (i == NX - 1 && j != 0 && j != NY - 1)
- a[k] = 0.;
- if (i == RX && j <= RY)
- a[k] = a[k + NY];
- if (i <= RX && j == RY)
- a[k] = a[k + 1];
- }
- }
-}
-void korekh(double *a, double *b, double *c)
-{
- int i, j, k;
- for (i = 0; i < NX; i++) {
- for (j = 0; j < NY; j++) {
- k = i *NY + j;
-
- if (i>0 && i < NX - 2 && ((i <= RX && j <= RY) != 1)){
- a[k] -= DT*NX*(c[k + NY] - c[k]);
- }
-
- if (j>0 && j < NY - 2 && ((i <= RX && j <= RY) != 1)){
- b[k] -= DT*NY*KT*(c[k + 1] - c[k]);
- }
-
- }
- }
-}
-
-void poissh(double *a, double *b, double *c, double *d)
-{
- int i, j, k;
- double corr;
- for (i = 0; i < NX; i++) {
- for (j = 0; j < NY; j++) {
- k = i *NY + j;
- corr = c[k];
- if (i > 0 && j > 0 && i < NX - 1 && j < NY - 1 && ((i <= RX && j <= RY) != 1)){
- c[k] = -(1.0 / (2 * (DT*NX*NX + DT*NY*NY*KT*KT)))*((-DT*NX*NX)*c[k + NY] + (-DT*NX*NX)*c[k - NY] + (-DT*NY*NY*KT*KT)*c[k + 1] + (-DT*NY*NY*KT*KT)*c[k - 1] + (1.0*NX)*(a[k] - a[k - NY]) + (1.0*NY*KT)*(b[k] - b[k - 1]));
- }
- corr -= c[k];
- if (corr < 0)
- corr *= (-1);
- d[k] = corr;
- }
- }
-}
-
-
-
-int main()
-{
-
- clock_t t2, t1;
- FILE *fp, *fp1, *fp2;
-
- double *a_h, *a_h1, *b_h, *b_h1, *c_h, *c_h1, *corr_h;
-
- double dx1, dy1;
- int j, i, t, k;
-
- fp = fopen("x.dat", "w");
- fp1 = fopen("y.dat", "w");
- fp2 = fopen("tlak.dat", "w");
- t1 = clock();
-
- a_h = (double*)malloc(sizeof(double)*NX*NY);
- a_h1 = (double*)malloc(sizeof(double)*NX*NY);
- b_h = (double*)malloc(sizeof(double)*NX*NY);
- b_h1 = (double*)malloc(sizeof(double)*NX*NY);
- c_h = (double*)malloc(sizeof(double)*NX*NY);
- c_h1 = (double*)malloc(sizeof(double)*NX*NY);
- corr_h = (double*)malloc(sizeof(double)*NX*NY);
-
- inixh(a_h);
- inixh(a_h1);
- inih(b_h);
- inih(b_h1);
- inih(c_h);
- inih(c_h1);
-
-
- printf("Start");
- for (t = 0; t<T; t++)
- {
-
- USh(a_h, b_h, c_h, a_h1);
- VSh(a_h, b_h, c_h, b_h1);
- rubnixh(a_h1);
- rubniyh(b_h1);
-
- for (i = 0; i<30; i++)
- poissh(a_h1, b_h1, c_h1, corr_h);
-
- rubniph(c_h1);
- korekh(a_h1, b_h1, c_h1);
- rubnixh(a_h1);
- rubniyh(b_h1);
- sumah(c_h1, c_h);
- inih(c_h1);
- rubniph(c_h);
- USh(a_h1, b_h, c_h, a_h);
- VSh(a_h, b_h1, c_h, b_h);
- rubnixh(a_h);
- rubniyh(b_h);
-
- for (i = 0; i<30; i++)
- poissh(a_h, b_h, c_h1, corr_h);
-
-
- rubniph(c_h1);
- korekh(a_h, b_h, c_h1);
- rubnixh(a_h);
- rubniyh(b_h);
- sumah(c_h1, c_h);
- inih(c_h1);
- rubniph(c_h);
-
-
- }
- for (i = 0; i<NX; i++)
- for (j = 0; j<NY; j++) if (i != NX - 1)
- fprintf(fp, "\n%d %d %f", i, j, a_h[i*NY + j]);
- for (i = 0; i<NX; i++)
- for (j = 0; j<NY; j++) if (j != NY - 1)
- fprintf(fp1, "\n%d %d %f", i, j, b_h[i*NY + j]);
- for (i = 0; i<NX; i++)
- for (j = 0; j<NY; j++)
- fprintf(fp2, "\n%d %d %f", i, j, c_h[i*NY + j]);
- t2 = clock();
- printf(" %f\n", ((double)(t2 - t1)) / CLOCKS_PER_SEC);
-
- dx1 = 1.0*NX - 1;
- dy1 = KT*NY - 1;
- for (i = 0; i<NX; i++)
- dxx[i] = 1.0*i / dx1;
- for (i = 0; i<NY; i++)
- dyy[i] = 1.0*i / dy1;
- for (i = 0; i<NX; i++)
- {
- xi[i][0] = 0.0;
- yi[i][0] = 0.0;
- xi[i][NY - 1] = 0.0;
- yi[i][NY - 1] = 0.0;
- }
- for (i = 0; i<NY; i++)
- {
- xi[0][i] = 1.0;
- yi[0][i] = 0.0;
- xi[NX - 1][i] = 0.0;
- yi[NX - 1][i] = 0.0;
- }
- for (i = 1; i <= NX - 2; i++)
- for (j = 1; j <= NY - 1; j++)
- {
- k = (i - 1)*NY + j;
-
- xi[i][j] = 0.5*(a_h[k] + a_h[k + NY]);
- }
- for (i = 1; i <= NX - 1; i++)
- for (j = 1; j <= NY - 2; j++)
- {
- k = i*NY + j - 1;
-
- yi[i][j] = 0.5*(b_h[k] + b_h[k + 1]);
- }
-
- PRINT_VECT_VTK(xi, yi, dxx, dyy);
- PRINT_VTK(xi, yi, dxx, dyy);
-
- for (j = 0; j < NX; j++)
- for (i = 0; i < NY ; i++)
- {
- dx[j][i] = (1.0*j / dx1);
- dy[j][i]= (1.0*i / dy1);
- }
-
-
-
- PRINT_PLT();
-
-
- printf("END");
-
-
- return 0;
-}
-
-
-
|