Skip to content
Open

Howp #10

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 21 additions & 18 deletions scripts/create_tables.py
Original file line number Diff line number Diff line change
@@ -1,26 +1,25 @@
#!/usr/bin/python2

"""
Generate C++ header files with tables for quadrature nodes and weights for
different orders.
Generate C++ header files with tables for quadrature nodes and weights for different orders.
"""

from orthogonal import psi_roots

def generate_gausshermite(filename, maxorder=10):
def generate_gausshermite(filename, orders):
f = open(filename, "w")
f.write("#pragma once\n\n")
f.write("// Automatically generated by scripts/create_tables.py.\n\n")
f.write("#include <vector>\n\n")
f.write('#include "quadrature_rule.hpp"\n\n')
f.write("namespace waveblocks {\n\n")

f.write("// Gauss-Hermite quadrature nodes and weights for different " +
"orders.\n")
# Maybe a tuple instead of vector for different order template arguments?
f.write("const std::vector<QuadratureRule>" +
" gauss_hermite_rules{")
for order in xrange(1, maxorder):
f.write(
"""#pragma once

// Automatically generated by scripts/create_tables.py.

#include <vector>

#include "quadrature_rule.hpp"

namespace waveblocks {

// Gauss-Hermite quadrature nodes and weights for different orders.
const std::vector<QuadratureRule> gauss_hermite_rules{""")
for order in orders:
nodes, weights = psi_roots(order)
if order > 1: f.write(",")
f.write("\n QuadratureRule(" + str(order) + ", {")
Expand All @@ -40,4 +39,8 @@ def generate_gausshermite(filename, maxorder=10):
f.close()

if __name__ == "__main__":
generate_gausshermite("../waveblocks/tables_gausshermite.hpp")
orders = (list(range(1, 25)) +
list(range(25, 100, 5)) +
list(range(100, 551, 25)))

generate_gausshermite("../waveblocks/tables_gausshermite.hpp", orders)
Loading