result output header add label x

This commit is contained in:
ignis 2019-04-29 19:25:52 +09:00
parent 06f5c0b0b9
commit 5943744e64
2 changed files with 2 additions and 150 deletions

View file

@ -208,6 +208,7 @@ class ToFortran(Transformer):
abs = lambda self : "dabs"
rxn_rate = lambda self : "rxn_rate"
class CheckPass(Visitor):
def __init__(self):
@ -348,121 +349,6 @@ class CalculateTree(Transformer):
+ [(k, False) for k, v in self.exp_parser.dependency.items()]
)
def array_decl (self):
f_code = ""
for var in self.derived.iterkeys():
f_code = f_code + real_array_decl.format(var) + "\n"
for var in self.derivatives.iterkeys():
f_code = f_code + real_array_decl.format(var) + "\n"
for var in self.averaged.iterkeys():
f_code = f_code + avg_array_decl.format(var) + "\n"
return f_code
def array_init (self):
f_code = ""
for var in self.derived.iterkeys():
f_code = f_code + real_array_alloc.format(var) + "\n"
for var in self.derivatives.iterkeys():
f_code = f_code + real_array_alloc.format(var) + "\n"
for var in self.averaged.iterkeys():
f_code = f_code + avg_array_alloc.format(var) + "\n"
return f_code
def array_final (self):
f_code = ""
for var in self.derived.iterkeys():
f_code = f_code + real_array_free.format(var) + "\n"
for var in self.derivatives.iterkeys():
f_code = f_code + real_array_free.format(var) + "\n"
for var in self.averaged.iterkeys():
f_code = f_code + real_array_free.format(var) + "\n"
return f_code
def array_pass1 (self):
f_code = ""
code_dict = {}
for tup in self.derived.iteritems():
code_dict[tup[0]] = real_array_loop.format(tup) + "\n"
for tup in self.derivatives.iteritems():
code_dict[tup[0]] = real_array_diff.format(tup[1]) + "\n"
wfmt = "* {}(i,j,k)"
for k, (v,w) in self.averaged.iteritems():
code_dict[k] = avg_array_sum.format(k, v, wfmt.format(w) if w is not None else "") + "\n"
for var in self.sort_vars():
f_code = f_code + code_dict[var]
return f_code
def array_pass1_avg (self):
f_code = ""
meanw = "/ avg_{}"
for k, (v,w) in self.averaged.iteritems():
if k.startswith("avg"):
f_code = avg_array_divide.format(k, meanw.format(w) if w is not None else "") + "\n" + f_code
else:
f_code = f_code + avg_array_divide.format(k, meanw.format(w) if w is not None else "") + "\n"
return f_code
def module_dict (self):
md = {}
md["module_name"] = "terms"
md["module_data"] = self.array_decl()
md["module_init"] = self.array_init()
md["module_finalize"] = self.array_final()
md["module_pass1"] = self.array_pass1()
md["module_pass1_avg"] = self.array_pass1_avg()
return md
def sort_vars (self):
order = []
remain = set(self.derived.iterkeys()) | set(self.derivatives.iterkeys()) | set(self.averaged.iterkeys())
while len(remain) > 0:
for v in remain:
if len(set(self.dependency[v]) & remain) == 0:
order.append(v)
remain.remove(v)
break
return order
tf=CalculateTree()
calc_parser = Lark(calc_grammar, parser='lalr' ) # , transformer=tf)
calc = calc_parser.parse
import sys
@ -487,13 +373,6 @@ class FortranProgram:
dg = self.parser.dep_graph()
fd = self.parser.has_fluc()
'''
for v in dg.iterkeys():
fd[v] = False
for n, d in (self.parser.definitions.iteritems()):
fd[n] = CheckPass.check(d)
'''
def isFluc (a):
for x in dg[a]:
@ -613,13 +492,6 @@ class FortranProgram:
return md
def calculate_pass1 (self):
return
def calculate_pass2 (self):
return
def main():
while True:
@ -637,7 +509,6 @@ def test():
with open("terms.input") as inputfile:
terms_raw = ((inputfile.read()))
parsed_tree = (calc(terms_raw))
fp = FortranProgram(terms_raw)
@ -645,25 +516,6 @@ def test():
print mod_form.format( fp.print_program() )
'''
for f, ts in zip(namelist, deps):
for t in ts:
print "{} -> {}".format(f, t)
for d, (op, phi) in ft.derivatives.iteritems():
print "{} -> {}".format(d, phi)
print tf.averaged
'''
#print mod_form.format(tf.module_dict())
#print "! ", tf.derived
#print "! ", tf.derivatives
#print "! ", tf.dependency
#print "! ", tf.sort_vars()
if __name__ == '__main__':
test()
# main()

View file

@ -6,7 +6,7 @@ use m_calculate
implicit none
character (len = *), parameter :: output_header="avg_fsd fsd_avg_t1 fsd_avg_t2 fsd_avg_fu fsd_avg_absk"
character (len = *), parameter :: output_header="x avg_fsd fsd_avg_t1 fsd_avg_t2 fsd_avg_fu fsd_avg_absk"
real*8, allocatable, dimension(:,:,:) :: ddx_nx
real*8, allocatable, dimension(:,:,:) :: t1_fsd
real*8, allocatable, dimension(:,:,:) :: t2_fsd