Browse code

Пытаюсь побороть баг с segfault'ом.

Dmitrii Kashin authored on 11/09/2014 00:50:29
Showing 15 changed files
... ...
@@ -1,7 +1,6 @@
1
-CC=g++
1
+CXX=g++
2 2
 CFLAGS=-Wall -g -ggdb
3 3
 LDFLAGS=-lm
4
-#SOURCES=frolov.c grid1d.c vars.c initgrid.c convergence.c solver.c
5 4
 SOURCES=main.cxx variables.cxx cell.cxx grid.cxx solver.cxx timestep_constant.cxx march.cxx
6 5
 OBJECTS=$(SOURCES:.cxx=.o) grid-init.o
7 6
 DEPENDS=$(OBJECTS:.o=.deps)
... ...
@@ -19,33 +18,33 @@ test-mono:
19 19
 	ln -f grid-init-monotonous.o grid-init.o
20 20
 	make build
21 21
 
22
-test-shock1:
23
-	make grid-init-shock1.o
22
+test-shock1: grid-init-shock1.o
24 23
 	ln -f grid-init-shock1.o grid-init.o
25 24
 	make build
26 25
 
27
-test-shock2a:
28
-	make grid-init-shock2a.o
26
+test-shock2a: grid-init-shock2a.o
29 27
 	ln -f grid-init-shock2a.o grid-init.o
30 28
 	make build
31 29
 
32
-test-shock2b:
33
-	make grid-init-shock2b.o
30
+test-shock2b: grid-init-shock2b.o
34 31
 	ln -f grid-init-shock2b.o grid-init.o
35 32
 	make build
36 33
 
37 34
 # the main aim
38 35
 $(EXECUTABLE): $(OBJECTS) 
39
-	$(CC) $(CFLAGS) $(LDFLAGS) $(OBJECTS) -o $@
36
+	$(CXX) $(CFLAGS) $(LDFLAGS) $(OBJECTS) -o $@
40 37
 
41 38
 # pull in dependency info for *existing* .o files
42 39
 -include $(DEPENDS)
43 40
 
44 41
 # compile and generate dependency info
45 42
 %.o: %.cxx
46
-	$(CC) -c $(CFLAGS) $*.cxx -o $*.o
47
-	$(CC) -MM $(CFLAGS) $*.cxx > $*.deps
43
+	$(CXX) -c $(CFLAGS) $*.cxx -o $*.o
44
+	$(CXX) -MM $(CFLAGS) $*.cxx > $*.deps
48 45
 
49
-clean:
50
-	rm -f $(EXECUTABLE) *.o *.deps
46
+test-clean: clean-test
47
+clean-test:
51 48
 	find test/ -not \( -name "test" -o -name "README" -o -name "frolov" \) -delete
49
+
50
+clean: clean-test
51
+	rm -f $(EXECUTABLE) *.o *.deps
... ...
@@ -28,6 +28,11 @@
28 28
 
29 29
 
30 30
 * Developement Log
31
+** 2014-09-04
32
+   Добил тесты Власенко для скачков без источниковых членов. К сожалению, я ловлю segfault
33
+   где-то в районе 22760 шага. Я посмотрел backtrace в gdb и мне кажется, что стоит
34
+   отказаться от использования ofstream - что-то там мудрёное происходит в недрах
35
+   libstdc++.
31 36
 ** 2014-09-03 
32 37
    Завтра собираюсь посетить ЦАГИ и обустроить рабочее место. Вышеобозначенные изменения в
33 38
    программе должны быть доведены до конца первой рабочей недели, чтобы в понедельник у
34 39
new file mode 100755
... ...
@@ -0,0 +1,9 @@
0
+#!/bin/bash
1
+
2
+FLAGS="-r 10 -qscale 31"
3
+
4
+cd grids;
5
+avconv -y -i '%05d/Phi.png' $FLAGS phi.ogv
6
+avconv -y -i '%05d/U.png' $FLAGS u.ogv
7
+avconv -y -i '%05d/Rg.png' $FLAGS rg.ogv
8
+
0 9
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-../test
2 1
\ No newline at end of file
3 2
new file mode 100644
... ...
@@ -0,0 +1 @@
0
+В этой директории делать положено делать всякие тесты!
0 1
new file mode 100755
1 2
Binary files /dev/null and b/draw/grids/frolov differ
2 3
new file mode 100755
... ...
@@ -0,0 +1,8 @@
0
+#!/bin/bash
1
+
2
+./plot.sh
3
+./film.sh
4
+mkdir -p results
5
+zip -r results/grids.zip grids/grid*
6
+mv grids/*.ogv results
7
+
... ...
@@ -1,19 +1,20 @@
1 1
 set term png size 1280,1024
2 2
 set grid
3
-set xlabel "Grid"
4
-
3
+set xlabel "Координата"
5 4
 set xrange [0:1]
6 5
 
7 6
 set output "Phi.png"
8
-plot "gridXXX" using 1:2 title "Volume Part of Gas" with lines;
7
+set ylabel "Объёмная доля газа"
8
+plot "gridXXX" using 1:2 notitle with lines;
9 9
 
10 10
 set output "Rg.png"
11
-plot "gridXXX" using 1:3 title "Density of Gas" with lines;
11
+set ylabel "Плотность газа [kg/m^3]"
12
+plot "gridXXX" using 1:3 notitle with lines;
12 13
 
13 14
 set output "U.png"
14
-#set yrange [150:450]
15
-plot "gridXXX" using 1:4 title "Velocity of Gas" with lines,\
16
-     "gridXXX" using 1:5 title "Velocity of Liquid" with lines;
15
+set ylabel "Скорость [m/s]"
16
+plot "gridXXX" using 1:4 title "Газа" with lines,\
17
+     "gridXXX" using 1:5 title "Жидкости" with lines;
17 18
 
18 19
 #set xlabel "Step"
19 20
 #set xrange [0:5000]
... ...
@@ -31,6 +31,7 @@ Cell1D*
31 31
 allocate_memory_for_grid(unsigned int amount)
32 32
 {
33 33
   Cell1D* cells = (Cell1D*) malloc(amount*sizeof(Cell1D));
34
+  std::cout << "!!! " << cells << std::endl;
34 35
   if (cells == NULL)
35 36
     {
36 37
       perror("Cannot allocate memory for grid\n");
... ...
@@ -17,9 +17,6 @@ main (int argc, char* argv[])
17 17
 {
18 18
   Grid1D grid = grid_cons(NumOfCells, x0, x1, BND_FIXED, BND_FIXED);
19 19
   set_initial_field(grid);
20
-  printGrid(grid);
21
-  
22
-  cout << "--------------------" << endl;
23 20
 
24 21
   march(grid);
25 22
   
... ...
@@ -5,10 +5,10 @@
5 5
 #ifndef MARCH_CONFIG
6 6
 #define MARCH_CONFIG
7 7
 
8
-#define outputEveryStep 1
8
+#define outputEveryStep 100
9 9
 #define outputEveryTime 0
10 10
 
11
-#define finTime 0
12
-#define finStep 10
11
+#define finTime 0.005
12
+#define finStep 0
13 13
 
14 14
 #endif // MARCH_CONFIG
... ...
@@ -55,6 +55,10 @@ march (Grid1D grid)
55 55
   if (printFlag || finFlag)
56 56
     printGridToFile(grid);
57 57
 
58
+  if (grid.iter > 22650)
59
+    printGridToFile(grid);
60
+
61
+
58 62
   // шаг
59 63
   if (!finFlag)
60 64
     {
... ...
@@ -75,6 +75,7 @@ make_step(Grid1D grid, double tau)
75 75
 	rf = count_left_flux(grid,i+1,tau);
76 76
       newgrid.cells[i].vars = grid.cells[i].vars - tau*(rf-lf)/h;
77 77
     };
78
+  free(grid.cells);
78 79
   return newgrid;
79 80
  };
80 81
 
81 82
deleted file mode 120000
... ...
@@ -1 +0,0 @@
1
-../frolov
2 1
\ No newline at end of file
3 2
new file mode 100755
4 3
Binary files /dev/null and b/test/frolov differ