Exemplo n.º 1
0
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)))
Exemplo n.º 2
0
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)))