code_gen.py map to loop

This commit is contained in:
ignis 2019-04-18 23:33:39 +09:00
parent 8b44812551
commit 6b27d54349
2 changed files with 45 additions and 13 deletions

View file

@ -117,25 +117,53 @@ class CalculateTree(Transformer):
sqrt = lambda self : "sqrt"
def array_decl (self):
return "\n".join(
map(real_array_decl.format, self.derived.iterkeys())
+ map(real_array_decl.format, self.derivatives.iterkeys())
)
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"
return f_code
def array_init (self):
return "\n".join(
map(real_array_alloc.format, self.derived.iterkeys())
+ map(real_array_alloc.format, self.derivatives.iterkeys())
)
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"
return f_code
def array_final (self):
return "\n".join(
map(real_array_free.format, self.derived.iterkeys())
+ map(real_array_free.format, self.derivatives.iterkeys())
)
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"
return f_code
def array_ci (self):
return "\n".join(map(real_array_loop.format, self.derived.iteritems()))
f_code = ""
for tup in self.derived.iteritems():
f_code = f_code + real_array_loop.format(tup) + "\n"
return f_code
def module_dict (self):
md = {}

View file

@ -10,6 +10,7 @@ real*8, allocatable, dimension(:,:,:) :: dcdx_auto
real*8, allocatable, dimension(:,:,:) :: wrate_auto
real*8, allocatable, dimension(:,:,:) :: dx_c_auto
contains
subroutine m_terms_init
@ -21,6 +22,7 @@ allocate(dcdx_auto(nxp,nyp,nzp), stat=ierr) ; dcdx_auto = 0.
allocate(wrate_auto(nxp,nyp,nzp), stat=ierr) ; wrate_auto = 0.
allocate(dx_c_auto(nxp,nyp,nzp), stat=ierr) ; dx_c_auto = 0.
end subroutine m_terms_init
@ -31,6 +33,7 @@ deallocate(dcdx_auto)
deallocate(wrate_auto)
deallocate(dx_c_auto)
end subroutine m_terms_finalize
@ -66,6 +69,7 @@ end do
end do
end subroutine m_terms_calculate_instant