Advertisement
Guest User

Untitled

a guest
May 22nd, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.47 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include "iostream"
  3. #include "clocale"
  4. #include "math.h"
  5. #include "iomanip"
  6. #include "fstream"
  7. #define pi 3.1415926535
  8. using namespace std;
  9. int Nx, Nt;
  10. double delta = 0.0001;
  11. double **U;
  12. double dx, dt;
  13. void base() {
  14.     U=(double**)malloc(Nt*sizeof(double*));
  15.     for (int i=0; i<=Nt; i++) {
  16.         U[i]=(double*)malloc(Nx*sizeof(double));
  17.     }
  18. }
  19. void bounds() {
  20.     for(int n=0; n<=Nx; n++) {
  21.         U[0][n]=sin(pi*(n*dx));
  22.     }
  23.     for(int m=0; m<=Nt; m++) {
  24.         U[m][0]=exp(-m*dt)-1;
  25.     }
  26. }
  27. double f(double u) {
  28.     return (atan(exp(u)));
  29. }
  30. double f(int i, int j) {
  31.     return f(U[i][j]);
  32. }
  33. double df(double u) {
  34.     return exp(u)/(1+exp(2*u));
  35. }
  36. double equation(double u, int i, int j) {
  37.     return ((u-U[i][j+1])/dt+(f(u)-f(U[i+1][j]))/dx);
  38. }
  39. double dif_eq (double u) {
  40.     return 1/dt + df(u)/dx;
  41. }
  42. double solution(int i, int j) {
  43.     double u_prev=1, u=0;
  44.     while (abs(u-u_prev)>delta) {
  45.         u_prev = u;
  46.         u = u_prev - equation(u_prev, i ,j)/dif_eq (u_prev);
  47.     }
  48.     5
  49.     return u;
  50. }
  51. void maker() {
  52.     for(int i = 0; i < Nt-1; i++) {
  53.         for(int j = 0; j < Nx-1; j++) {
  54.             U[i+1][j+1]=solution(i, j);
  55.         }
  56.     }
  57. }
  58. int OMM1 (void) {
  59.     Nx = 100; Nt = 100;
  60.     dx = (1./Nx), dt = (1.8/Nt);
  61.     base();
  62.     bounds();
  63.     maker();
  64.     return 0;
  65. }
  66. return u;
  67. }
  68. void maker() {
  69. for(int i = 0; i < Nt-1; i++) {
  70.     for(int j = 0; j < Nx-1; j++) {
  71.         U[i+1][j+1]=solution(i, j);
  72.     }
  73. }
  74. }
  75. int OMM1 (void) {
  76. Nx = 100; Nt = 100;
  77. dx = (1./Nx), dt = (1.8/Nt);
  78. base();
  79. bounds();
  80. maker();
  81. return 0;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement