def write_build_run(setup_cmd, ld_preload_flag, n_scatt, n_refl, real, lang, build_cmd, replace_cos, replace_exp): this_script = __this_script__ for_txt = fortran_template % vars() if (replace_cos): for_txt = for_txt.replace("COS(arg)", "arg / (abs(arg)+1.0)") if (replace_exp): for_txt = for_txt.replace("EXP(arg)", "max(0.0, 1.0 - arg*arg)") for_txt = for_txt.replace("REAL", real) open("tmp.f", "w").write(for_txt) from fable import cout cpp_txt = cout.process(file_names=["tmp.f"], namespace="sf_test", fem_do_safe=False, inline_all=True) open("tmp.cpp", "w").write("\n".join(cpp_txt) + "\n") if (lang.lower() == "f"): build_cmd += " tmp.f" elif (lang.lower() == "c"): build_cmd += finalize_cpp_build_cmd("tmp.cpp") else: raise RuntimeError('Unknown lang: "%s"' % lang) return build_run(setup_cmd=setup_cmd, ld_preload_flag=ld_preload_flag, n_scatt=n_scatt, n_refl=n_refl, build_cmd=build_cmd, check_max_a_b=(not (replace_cos or replace_exp)))
def write_build_run( setup_cmd, ld_preload_flag, n_scatt, n_refl, real, lang, build_cmd, replace_cos, replace_exp): this_script = __this_script__ for_txt = fortran_template % vars() if (replace_cos): for_txt = for_txt.replace( "COS(arg)", "arg / (abs(arg)+1.0)") if (replace_exp): for_txt = for_txt.replace( "EXP(arg)", "max(0.0, 1.0 - arg*arg)") for_txt = for_txt.replace("REAL", real) open("tmp.f", "w").write(for_txt) from fable import cout cpp_txt = cout.process( file_names=["tmp.f"], namespace="sf_test", fem_do_safe=False, inline_all=True) open("tmp.cpp", "w").write("\n".join(cpp_txt)+"\n") if (lang.lower() == "f"): build_cmd += " tmp.f" elif (lang.lower() == "c"): build_cmd += finalize_cpp_build_cmd("tmp.cpp") else: raise RuntimeError('Unknown lang: "%s"' % lang) return build_run( setup_cmd=setup_cmd, ld_preload_flag=ld_preload_flag, n_scatt=n_scatt, n_refl=n_refl, build_cmd=build_cmd, check_max_a_b=(not (replace_cos or replace_exp)))