8 parser = argparse.ArgumentParser(description=
'convert files by adding cell centroids and ID (for cubed-sphere)')
9 parser.add_argument(
'--porder', dest=
'porder', type=
int,
default=3, help=
'polynomial degree for basis')
10 parser.add_argument(
'--grids', dest=
'grids', type=
int,
default=2, help=
'number of grids for refinement sequence')
11 parser.add_argument(
'--in-trilinos', dest=
'in_trilinos', type=
str,
default=
'false', help=
'whether being called from inside of Trilinos')
14 def check_bounds(
porder, rate):
16 if rate<3 and rate>.9:
32 target_operators=(
"Staggered Laplace-Beltrami \(VectorBasis\)",
"Staggered Laplace-Beltrami \(ScalarBasis\)",
"Surface Staggered Divergence \(VectorSamples\)",
"Surface Staggered Divergence \(ScalarSamples\)")#,
"Surface Staggered Gradient \(VectorBasis\)",
"Surface Staggered Gradient \(ScalarBasis\)")
33 for operator in target_operators:
36 for grid_num in range(grids):
37 with open(os.devnull,
'w') as devnull:
39 if args.in_trilinos.lower()==
"true":
40 exe_name =
"@CMAKE_CURRENT_BINARY_DIR@/Compadre_GMLS_Staggered_Manifold_Test.exe"
42 exe_name =
"@CMAKE_CURRENT_BINARY_DIR@/GMLS_Staggered_Manifold_Test"
43 output_commands = [exe_name,
"--p",
"%d"%
porder,
"--nt",
"%d"%
num_target_sites,
"--d",
"3",
"--ns",
"%d"%(20*
num_target_sites*pow(4,grid_num)),
"--solver",
"QR",
"--problem",
"MANIFOLD",
"@KOKKOS_THREADS_ARG@=4"]
44 print(output_commands)
45 output = subprocess.check_output(output_commands, stderr=devnull)
47 for key, operator in enumerate(target_operators):
48 m = re.search(
'(?<=%s Error: )[0-9]+\.?[0-9]*(?:[Ee]\ *-?\ *[0-9]+)?'%operator, output.decode(
'utf-8'))
50 errors[key].append(float(m.group(0)))
52 print(
"Program exited early. Regular expression search for error failed.")
57 for key, operator in enumerate(target_operators):
58 print(
"\n\n%s rates: porder:%s\n============="%(operator.replace(
'\\',
''),
porder))
59 for i in range(1,len(errors[key])):
60 if (errors[key][i]!=0):
61 rate = math.log(errors[key][i]/errors[key][i-1])/math.log(.5)
62 print(
str(rate) +
", " +
str(errors[key][i]) +
", " +
str(errors[key][i-1]))
63 assert(check_bounds(
porder, rate))
65 print(
"NaN - Division by zero")
import subprocess import os import re import math import sys import argparse parser
import subprocess import os import re import math import sys import argparse d d num_target_sites
if(some_conditions_for_a_user_defined_operation)
import subprocess import os import re import math import sys import argparse d porder
import subprocess import os import re import math import sys import argparse d d str(solver_type)
staggered TIMEOUT REQUIRED_FILES< TARGET_FILE:GMLS_Staggered_Manifold_Test > exit(1)