diff --git a/src/irpf90.py b/src/irpf90.py index 1fca59a..57f4af6 100644 --- a/src/irpf90.py +++ b/src/irpf90.py @@ -87,10 +87,6 @@ def main(): import touches touches.create() - if command_line.do_openmp: - import locks - locks.create() - import create_man create_man.run() diff --git a/src/irpf90_t.py b/src/irpf90_t.py index 9af0fe1..b43ca09 100644 --- a/src/irpf90_t.py +++ b/src/irpf90_t.py @@ -24,9 +24,12 @@ # 31062 Toulouse Cedex 4 # scemama@irsamc.ups-tlse.fr +import os +from zlib import crc32 irpdir = "IRPF90_temp/" mandir = "IRPF90_man/" +irp_id = crc32(os.getcwd()) class Line(object): diff --git a/src/module.py b/src/module.py index 01c945d..2eb6a36 100644 --- a/src/module.py +++ b/src/module.py @@ -191,6 +191,7 @@ class Fmodule(object): if command_line.do_openmp: temp += [ "!$OMP END MASTER" ] temp += [ "!$OMP END PARALLEL" ] + temp += [ " call irp_finalize_%s()"%(irp_id) ] temp += [ "end program" ] result = temp + result self._residual_text = result diff --git a/src/touches.py b/src/touches.py index 4250e38..1f97110 100644 --- a/src/touches.py +++ b/src/touches.py @@ -28,6 +28,7 @@ from irpf90_t import * from util import * from variables import variables +from modules import modules FILENAME=irpdir+'irp_touches.irp.F90' @@ -35,15 +36,26 @@ def create(): out = [] l = variables.keys() l.sort + finalize = "subroutine irp_finalize_%s\n"%(irp_id) + for m in filter(lambda x: not modules[x].is_main, modules): + finalize += " use %s\n"%(modules[m].name) for v in l: var = variables[v] if var.is_touched: out += var.toucher + var2 = variables[v] + if var2.dim != []: + finalize += " if (allocated(%s)) then\n"%v + finalize += " deallocate(%s)\n"%v + finalize += " endif\n" + finalize += "end\n" + if out != []: out = map(lambda x: "%s\n"%(x),out) - else: - out = ["subroutine irpf90_dummy_touch()\n", "end\n"] + + out += finalize + if not same_file(FILENAME,out): file = open(FILENAME,'w') file.writelines(out) diff --git a/src/version.py b/src/version.py index be628bc..7a89884 100644 --- a/src/version.py +++ b/src/version.py @@ -1 +1 @@ -version = "1.1.72" +version = "1.1.73"