From 6b27d54349f3f84785608218cd2510dacf19cc6c Mon Sep 17 00:00:00 2001 From: ignis Date: Thu, 18 Apr 2019 23:33:39 +0900 Subject: [PATCH] code_gen.py map to loop --- code/code_gen/code_gen.py | 54 +++++++++++++++++++++++++++++---------- code/m_terms.f90 | 4 +++ 2 files changed, 45 insertions(+), 13 deletions(-) diff --git a/code/code_gen/code_gen.py b/code/code_gen/code_gen.py index 0b562ab..5c6f24e 100644 --- a/code/code_gen/code_gen.py +++ b/code/code_gen/code_gen.py @@ -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 = {} diff --git a/code/m_terms.f90 b/code/m_terms.f90 index a320a47..964fd28 100644 --- a/code/m_terms.f90 +++ b/code/m_terms.f90 @@ -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