diff --git a/compile.bash b/compile.bash
new file mode 100644
index 00000000..8bf27cde
--- /dev/null
+++ b/compile.bash
@@ -0,0 +1,4 @@
+./autogen.sh
+cd build
+../configure
+make clean; make
\ No newline at end of file
diff --git a/examples/global-lunar-bombardment/.idea/global-lunar-bombardment.iml b/examples/global-lunar-bombardment/.idea/global-lunar-bombardment.iml
index d0876a78..701b9669 100644
--- a/examples/global-lunar-bombardment/.idea/global-lunar-bombardment.iml
+++ b/examples/global-lunar-bombardment/.idea/global-lunar-bombardment.iml
@@ -2,7 +2,7 @@
-
+
\ No newline at end of file
diff --git a/examples/global-lunar-bombardment/.idea/misc.xml b/examples/global-lunar-bombardment/.idea/misc.xml
deleted file mode 100644
index a2e120dc..00000000
--- a/examples/global-lunar-bombardment/.idea/misc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/examples/global-lunar-bombardment/ctem.in b/examples/global-lunar-bombardment/ctem.in
old mode 100755
new mode 100644
index ca50a7fa..470aaee4
--- a/examples/global-lunar-bombardment/ctem.in
+++ b/examples/global-lunar-bombardment/ctem.in
@@ -34,9 +34,9 @@ runtype single ! Run type: options are normal /
! CTEM required inputs
seed 76535 ! Random number generator seed
-gridsize 200 ! Size of grid in pixels
+gridsize 2000 ! Size of grid in pixels
numlayers 10 ! Number of perched layers
-pix 3.08e4 ! Pixel size (m)
+pix 3.08e3 ! Pixel size (m)
mat rock ! Material (rock or ice)
! Bedrock scaling parameters
mu_b 0.55e0 ! Experimentally derived parameter for bedrock crater scaling law
diff --git a/examples/global-lunar-bombardment/driver.py b/examples/global-lunar-bombardment/ctemdriver.py
similarity index 100%
rename from examples/global-lunar-bombardment/driver.py
rename to examples/global-lunar-bombardment/ctemdriver.py
diff --git a/python/ctem/ctem/driver.py b/python/ctem/ctem/driver.py
index 8f565f1e..d843de5a 100644
--- a/python/ctem/ctem/driver.py
+++ b/python/ctem/ctem/driver.py
@@ -46,8 +46,9 @@ def __init__(self, param_file="ctem.in", isnew=True):
'sfdcompare': None,
'sfdfile': None,
'quasimc': None,
- 'realcraterlist': None
+ 'realcraterlist': None,
}
+
self.user = util.read_user_input(self.user)
# This is containsall files generated by the main Fortran CTEM program plus the ctem.dat file that
@@ -113,8 +114,28 @@ def __init__(self, param_file="ctem.in", isnew=True):
#Read list of real craters
print("quasi-MC mode is ON")
- # Use self.compute_one_interval() to generate craterlist.dat
rclist = util.read_formatted_ascii(self.user['realcraterlist'], skip_lines = 0)
+ self.tempfile = os.path.join(currentdir, 'temp.in')
+
+ # Generate craterlist.dat
+ with open(self.user['ctemfile']) as perm, open(self.tempfile, "w") as temp:
+ for line in perm:
+ temp.write(line)
+
+ #Write a temporary input file to generate the necessary quasimc files
+ self.permfile = self.user['ctemfile']
+ self.temp = util.write_temp_input(self.tempfile)
+ self.user['ctemfile'] = self.tempfile
+ self.user = util.read_user_input(self.user)
+ self.permin = os.path.join(currentdir, 'perm.in')
+ self.ctemin = os.path.join(currentdir, 'ctem.in')
+ os.rename(self.permfile, self.permin)
+ os.rename(self.tempfile, self.ctemin)
+ self.run()
+
+ os.replace(self.permin, self.ctemin)
+ self.user['ctemfile'] = self.permfile
+ self.user = util.read_user_input(self.user)
#Interpolate craterscale.dat to get impactor sizes from crater sizes given
df = pandas.read_csv(self.output_filenames['craterscale'], sep='\s+')
@@ -130,7 +151,7 @@ def __init__(self, param_file="ctem.in", isnew=True):
rclist = rclist[rclist[:,5].argsort()]
#Export to dat file
- util.write_realcraters(user, rclist)
+ util.write_realcraters(self.output_filenames['craterlist'], rclist)
util.write_datfile(self.user, self.output_filenames['dat'], self.seedarr)
else:
@@ -179,7 +200,7 @@ def run(self):
# Read in output files
self.read_output()
- # Process the o utput files
+ # Process the output files
self.process_output()
# Update ncount
diff --git a/python/ctem/ctem/util.py b/python/ctem/ctem/util.py
index 8cab22e3..773235eb 100644
--- a/python/ctem/ctem/util.py
+++ b/python/ctem/ctem/util.py
@@ -4,6 +4,8 @@
from matplotlib.colors import LightSource
import matplotlib.cm as cm
import matplotlib.pyplot as plt
+import re
+from tempfile import mkstemp
# Set pixel scaling common for image writing, at 1 pixel/ array element
dpi = 72.0
@@ -301,6 +303,7 @@ def read_user_input(user):
if ('impfile' == fields[0].lower()): user['impfile'] = os.path.join(user['workingdir'],fields[1])
if ('maxcrat' == fields[0].lower()): user['maxcrat'] = real2float(fields[1])
if ('sfdcompare' == fields[0].lower()): user['sfdcompare'] = os.path.join(user['workingdir'], fields[1])
+ if ('realcraterlist' == fields[0].lower()): user['realcraterlist'] = os.path.join(user['workingdir'], fields[1])
if ('interval' == fields[0].lower()): user['interval'] = real2float(fields[1])
if ('numintervals' == fields[0].lower()): user['numintervals'] = int(fields[1])
if ('popupconsole' == fields[0].lower()): user['popupconsole'] = fields[1]
@@ -378,6 +381,33 @@ def real2float(realstr):
"""
return float(realstr.replace('d', 'E').replace('D', 'E'))
+def sed(pattern, replace, source, count=0):
+ """Python implementation of unix sed command; not fully functional sed."""
+
+ fin = open(source, 'r')
+ num_replaced = 0
+
+ fd, name = mkstemp()
+ fout = open(name, 'w')
+
+ for line in fin:
+ out = re.sub(pattern, replace, line)
+ fout.write(out)
+
+ if out != line:
+ num_replaced += 1
+ if count and num_replaced > count:
+ break
+
+ fout.writelines(fin.readlines())
+
+
+ fin.close()
+ fout.close()
+
+ shutil.move(name, source)
+
+ return
def write_datfile(user, filename, seedarr):
# Write various user and random number seeds into ctem.dat file
@@ -402,10 +432,20 @@ def write_production(user, production):
return
-def write_realcraters(user, realcraters):
+def write_realcraters(filename, realcraters):
"""Writes file of real craters for use in quasi-MC runs"""
- filename = user['craterlist']
np.savetxt(filename, realcraters, fmt='%1.8e', delimiter='\t')
+ return
+
+def write_temp_input(filename):
+ """Makes changes to a temporary input file for use when generating craterlist.dat for quasimc runs"""
+
+ sed('testflag', 'testflag T!', filename)
+ sed('testimp', 'testimp 10 !', filename)
+ sed('quasimc', 'quasimc F!', filename)
+ sed('interval', 'interval 1 !', filename)
+ sed('numinterval 1 !s', 'numintervals 1 !', filename)
+
return
\ No newline at end of file