Advertisement
Guest User

Untitled

a guest
May 22nd, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.43 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