source: trunk/anuga_work/development/mem_time_tests/scenarios/channelflow/main.py @ 8427

Last change on this file since 8427 was 8427, checked in by davies, 13 years ago

Adding the trapezoidal channel validation test, and editing the ANUGA manual

File size: 3.1 KB
Line 
1#------------------------------------------------------------------------------
2# Import necessary modules
3#------------------------------------------------------------------------------
4import anuga
5import subprocess
6import csv
7import os
8import time
9from anuga.abstract_2d_finite_volumes.util import add_directories
10from anuga.utilities.log_analyser import analyse_log
11
12#------------------------------------------------------------------------------
13# Set up variables for the correct directories to store the output
14#------------------------------------------------------------------------------
15home = os.getenv('INUNDATIONHOME')
16scenariodir = add_directories(home, ["data","mem_time_test", "scenarios",
17                                     "channelflow"])
18meta = 'metalog.csv'
19meta_path = os.path.join(scenariodir, meta)
20final = 'final.csv'
21final_path = os.path.join(scenariodir, final)
22
23#the main loops that give the length of the inflow boundary (i) and the place to begin the step (n)
24for i in range(900,1000,100):
25    for n in range(0,110,5):
26        #adjust
27        n = n*(i/100.0)
28        subprocess.call(['python2.5', 'ex1.py',str(i),str(n)])#run the script
29print 'DONE'
30
31#get the important data for the experiments from the anuga experiments
32analyse_log(scenariodir, os.path.join(scenariodir,'metalog.csv')) 
33
34#open files to read from and write to
35metalog = csv.reader(open(meta_path,'rb'))
36final = csv.writer(open(final_path,'wb'))
37
38#list stores the index of the values requird
39indexlist = []
40
41#read in the first row
42firstrow = metalog.next()
43
44#get the indices of the values we want, so that the data can be condensed
45indexlist.append(firstrow.index("beforetime"))
46indexlist.append(firstrow.index("aftertime"))
47indexlist.append(firstrow.index("aftermeshtime"))
48indexlist.append(firstrow.index("beforesimulationmemory"))
49indexlist.append(firstrow.index("aftermeshmemory"))
50indexlist.append(firstrow.index("afterinitialconditionsmemory"))
51indexlist.append(firstrow.index("afterboundarymemory"))
52indexlist.append(firstrow.index("aftersimulationmemory"))
53indexlist.append(firstrow.index("length"))
54indexlist.append(firstrow.index("stepplace"))
55
56#write the header for the final csv
57final.writerow(["TimeTaken(s)","MeshTime(s)",
58                firstrow[(indexlist[3])],firstrow[(indexlist[4])],
59                firstrow[(indexlist[5])],firstrow[(indexlist[6])],
60                firstrow[(indexlist[7])],firstrow[(indexlist[8])],
61                firstrow[(indexlist[9])]])
62
63#write the data for each column in the final csv
64for row in metalog:
65
66    #manipulate the beginning and end time to get the time taken
67    begin = time.strptime(row[(indexlist[0])],'%Y%m%d_%H%M%S')
68    end = time.strptime(row[(indexlist[1])],'%Y%m%d_%H%M%S')
69    mesh = time.strptime(row[(indexlist[2])],'%Y%m%d_%H%M%S')
70    taken = time.mktime(end) - time.mktime(begin)
71    meshtime = time.mktime(mesh) - time.mktime(begin)
72
73    #write to file
74    final.writerow([str(taken),str(meshtime),
75                    row[(indexlist[3])],row[(indexlist[4])],
76                    row[(indexlist[5])],row[(indexlist[6])],
77                    row[(indexlist[7])],row[(indexlist[8])],
78                    row[(indexlist[9])]])
79
Note: See TracBrowser for help on using the repository browser.