Browse code

Добавил последний тест без источниковых членов

Dmitrii Kashin authored on 04/09/2014 09:42:23
Showing 4 changed files
... ...
@@ -29,6 +29,11 @@ test-shock2a:
29 29
 	ln -f grid-init-shock2a.o grid-init.o
30 30
 	make build
31 31
 
32
+test-shock2b:
33
+	make grid-init-shock2b.o
34
+	ln -f grid-init-shock2b.o grid-init.o
35
+	make build
36
+
32 37
 # the main aim
33 38
 $(EXECUTABLE): $(OBJECTS) 
34 39
 	$(CC) $(CFLAGS) $(LDFLAGS) $(OBJECTS) -o $@
... ...
@@ -18,10 +18,10 @@
18 18
    - [X] маршевая функция
19 19
  - [-] пройденные тесты
20 20
    - [X] монотонный тест
21
-   - [-] тест на скачке по документации Власенко
21
+   - [X] тест на скачке по документации Власенко
22 22
      - [X] test-1
23
-     - [ ] test-2a
24
-     - [ ] test-2b
23
+     - [X] test-2a
24
+     - [X] test-2b
25 25
    - [ ] тест Фролова
26 26
  - [ ] метод Лакса-Фридрихса 2го порядка
27 27
  - [ ] стянуть со старых проектов скрипты отрисовки
28 28
new file mode 100644
... ...
@@ -0,0 +1,38 @@
0
+/*
1
+  Здесь содержатся установки начального поля для того, чтобы
2
+  исследовать устойчивость метода на СУ. 
3
+  Для сравнения с Власенко: test-2b
4
+*/
5
+
6
+#include "grid-init.h"
7
+#include <math.h>
8
+
9
+void
10
+set_initial_field(Grid1D& grid)
11
+{
12
+  double phi_L = 0.9;
13
+  double rho_L = 1; // [kg/m^3]
14
+  double Ug_L = 1000; // [m/s]
15
+  double Ul_L = 1000; // [m/s]
16
+  
17
+  // вспомогательные переменные
18
+  double A = (2-phi_L)*u3def*Ul_L*Ul_L + rho_L*R0*T;
19
+  double B = 4*u3def*Ul_L*Ul_L*( rho_L*phi_L*Ug_L*Ug_L + (1-phi_L)*(u3def*Ul_L*Ul_L + rho_L*R0*T) );
20
+
21
+  double Ug_R = R0*T/Ug_L;
22
+  double Ul_R = (A - sqrt(A*A-B))/(2*u3def*Ul_L);
23
+  double phi_R = 1 - (1-phi_L)*Ul_L/Ul_R;
24
+  double rho_R = rho_L * (phi_L*Ug_L)/(phi_R*Ug_R);
25
+  
26
+  ConservVars lv = primitive2conserv((PrimitiveVars){phi_L,rho_L,Ug_L,Ul_L});
27
+  ConservVars rv = primitive2conserv((PrimitiveVars){phi_R,rho_R,Ug_R,Ul_R});
28
+  
29
+  grid.lbc.vars = lv;
30
+  grid.rbc.vars = rv;
31
+  
32
+  for (unsigned int i=0; i<grid.N; i++)
33
+    if (i<grid.N/2)
34
+      grid.cells[i].vars = lv;
35
+    else
36
+      grid.cells[i].vars = rv;
37
+}
... ...
@@ -5,10 +5,10 @@
5 5
 #ifndef MARCH_CONFIG
6 6
 #define MARCH_CONFIG
7 7
 
8
-#define outputEveryStep 100
8
+#define outputEveryStep 1
9 9
 #define outputEveryTime 0
10 10
 
11 11
 #define finTime 0
12
-#define finStep 10000
12
+#define finStep 10
13 13
 
14 14
 #endif // MARCH_CONFIG