- new_equals_node() : yask::yc_node_factory
- new_equation_node() : yask::yc_node_factory
- new_file_output() : yask::yask_output_factory
-- new_first_domain_index() : yask::yc_node_factory
+- new_first_domain_index() : yask::yc_node_factory
- new_fixed_size_grid() : yask::yk_solution
- new_fixed_size_var() : yask::yk_solution
- new_greater_than_node() : yask::yc_node_factory
- new_grid() : yask::yc_solution, yask::yk_solution
- new_grid_point() : yask::yc_var
-- new_last_domain_index() : yask::yc_node_factory
+- new_last_domain_index() : yask::yc_node_factory
- new_less_than_node() : yask::yc_node_factory
- new_misc_index() : yask::yc_node_factory, yask::yc_solution_base
- new_mod_node() : yask::yc_node_factory
diff --git a/docs/api/html/search/all_b.js b/docs/api/html/search/all_b.js
index 110d4a49..4588e354 100644
--- a/docs/api/html/search/all_b.js
+++ b/docs/api/html/search/all_b.js
@@ -9,13 +9,13 @@ var searchData=
['new_5fequals_5fnode_6',['new_equals_node',['../classyask_1_1yc__node__factory.html#a9684a3337db7087ff9f7e190ce706969',1,'yask::yc_node_factory']]],
['new_5fequation_5fnode_7',['new_equation_node',['../classyask_1_1yc__node__factory.html#a65838f8b97438cf4841644cff88dfb14',1,'yask::yc_node_factory']]],
['new_5ffile_5foutput_8',['new_file_output',['../classyask_1_1yask__output__factory.html#a25d64e5f5834fe353f58a7d8b533bcf2',1,'yask::yask_output_factory']]],
- ['new_5ffirst_5fdomain_5findex_9',['new_first_domain_index',['../classyask_1_1yc__node__factory.html#a20988bc2d3185873e890bec353687d45',1,'yask::yc_node_factory']]],
+ ['new_5ffirst_5fdomain_5findex_9',['new_first_domain_index',['../classyask_1_1yc__node__factory.html#acd88810e4573968726a192c24b49c014',1,'yask::yc_node_factory']]],
['new_5ffixed_5fsize_5fgrid_10',['new_fixed_size_grid',['../classyask_1_1yk__solution.html#a86f50f2b0851eb969322956258d459d0',1,'yask::yk_solution::new_fixed_size_grid(const std::string &name, const string_vec &dims, const idx_t_vec &dim_sizes)'],['../classyask_1_1yk__solution.html#a106ecadbbd0a7fa2ddb8ce6b14e14451',1,'yask::yk_solution::new_fixed_size_grid(const std::string &name, const std::initializer_list< std::string > &dims, const idx_t_vec &dim_sizes)']]],
['new_5ffixed_5fsize_5fvar_11',['new_fixed_size_var',['../classyask_1_1yk__solution.html#a8cff251e3f20d961e0a11752857dd28a',1,'yask::yk_solution::new_fixed_size_var(const std::string &name, const std::initializer_list< std::string > &dims, const idx_t_init_list &dim_sizes)=0'],['../classyask_1_1yk__solution.html#a2899b81d090c4a2f468ccc31adfa9d85',1,'yask::yk_solution::new_fixed_size_var(const std::string &name, const string_vec &dims, const idx_t_vec &dim_sizes)=0']]],
['new_5fgreater_5fthan_5fnode_12',['new_greater_than_node',['../classyask_1_1yc__node__factory.html#ab917cf34e4a230e090d8fdae04796037',1,'yask::yc_node_factory']]],
['new_5fgrid_13',['new_grid',['../classyask_1_1yc__solution.html#a99a140813b38f5128b730c2831db9fb4',1,'yask::yc_solution::new_grid(const std::string &name, const std::vector< yc_index_node_ptr > &dims)'],['../classyask_1_1yc__solution.html#a233eccb68505d3900b1199493fc74796',1,'yask::yc_solution::new_grid(const std::string &name, const std::initializer_list< yc_index_node_ptr > &dims)'],['../classyask_1_1yk__solution.html#ac5b391babd6897c314f5ba5e3c0b2605',1,'yask::yk_solution::new_grid(const std::string &name, const string_vec &dims)'],['../classyask_1_1yk__solution.html#a30606c931e4b30a1d4d1b515dc4c5926',1,'yask::yk_solution::new_grid(const std::string &name, const std::initializer_list< std::string > &dims)']]],
['new_5fgrid_5fpoint_14',['new_grid_point',['../classyask_1_1yc__var.html#aa9dcbc42cd74571ef124f9801a177e18',1,'yask::yc_var::new_grid_point(const std::vector< yc_number_node_ptr > &index_exprs)'],['../classyask_1_1yc__var.html#a33df3a69c0a880009a764dd6b9ae04b0',1,'yask::yc_var::new_grid_point(const std::initializer_list< yc_number_node_ptr > &index_exprs)']]],
- ['new_5flast_5fdomain_5findex_15',['new_last_domain_index',['../classyask_1_1yc__node__factory.html#a8ec2bb0a9c5db26467185f876c73febf',1,'yask::yc_node_factory']]],
+ ['new_5flast_5fdomain_5findex_15',['new_last_domain_index',['../classyask_1_1yc__node__factory.html#ad22990dbd10e7724e10d3920ca37cebd',1,'yask::yc_node_factory']]],
['new_5fless_5fthan_5fnode_16',['new_less_than_node',['../classyask_1_1yc__node__factory.html#af5fcf62243eee64f4d8e06224b2e6de7',1,'yask::yc_node_factory']]],
['new_5fmisc_5findex_17',['new_misc_index',['../classyask_1_1yc__node__factory.html#aef5fed8db0e1798b421c4a8cb8da77ff',1,'yask::yc_node_factory::new_misc_index()'],['../classyask_1_1yc__solution__base.html#a254355f82c0bbaf2f78f6d38a196dcf3',1,'yask::yc_solution_base::new_misc_index()']]],
['new_5fmod_5fnode_18',['new_mod_node',['../classyask_1_1yc__node__factory.html#a64d7ca74b83c874c2c9602dc7999c9a6',1,'yask::yc_node_factory']]],
diff --git a/docs/api/html/search/functions_a.js b/docs/api/html/search/functions_a.js
index 110d4a49..4588e354 100644
--- a/docs/api/html/search/functions_a.js
+++ b/docs/api/html/search/functions_a.js
@@ -9,13 +9,13 @@ var searchData=
['new_5fequals_5fnode_6',['new_equals_node',['../classyask_1_1yc__node__factory.html#a9684a3337db7087ff9f7e190ce706969',1,'yask::yc_node_factory']]],
['new_5fequation_5fnode_7',['new_equation_node',['../classyask_1_1yc__node__factory.html#a65838f8b97438cf4841644cff88dfb14',1,'yask::yc_node_factory']]],
['new_5ffile_5foutput_8',['new_file_output',['../classyask_1_1yask__output__factory.html#a25d64e5f5834fe353f58a7d8b533bcf2',1,'yask::yask_output_factory']]],
- ['new_5ffirst_5fdomain_5findex_9',['new_first_domain_index',['../classyask_1_1yc__node__factory.html#a20988bc2d3185873e890bec353687d45',1,'yask::yc_node_factory']]],
+ ['new_5ffirst_5fdomain_5findex_9',['new_first_domain_index',['../classyask_1_1yc__node__factory.html#acd88810e4573968726a192c24b49c014',1,'yask::yc_node_factory']]],
['new_5ffixed_5fsize_5fgrid_10',['new_fixed_size_grid',['../classyask_1_1yk__solution.html#a86f50f2b0851eb969322956258d459d0',1,'yask::yk_solution::new_fixed_size_grid(const std::string &name, const string_vec &dims, const idx_t_vec &dim_sizes)'],['../classyask_1_1yk__solution.html#a106ecadbbd0a7fa2ddb8ce6b14e14451',1,'yask::yk_solution::new_fixed_size_grid(const std::string &name, const std::initializer_list< std::string > &dims, const idx_t_vec &dim_sizes)']]],
['new_5ffixed_5fsize_5fvar_11',['new_fixed_size_var',['../classyask_1_1yk__solution.html#a8cff251e3f20d961e0a11752857dd28a',1,'yask::yk_solution::new_fixed_size_var(const std::string &name, const std::initializer_list< std::string > &dims, const idx_t_init_list &dim_sizes)=0'],['../classyask_1_1yk__solution.html#a2899b81d090c4a2f468ccc31adfa9d85',1,'yask::yk_solution::new_fixed_size_var(const std::string &name, const string_vec &dims, const idx_t_vec &dim_sizes)=0']]],
['new_5fgreater_5fthan_5fnode_12',['new_greater_than_node',['../classyask_1_1yc__node__factory.html#ab917cf34e4a230e090d8fdae04796037',1,'yask::yc_node_factory']]],
['new_5fgrid_13',['new_grid',['../classyask_1_1yc__solution.html#a99a140813b38f5128b730c2831db9fb4',1,'yask::yc_solution::new_grid(const std::string &name, const std::vector< yc_index_node_ptr > &dims)'],['../classyask_1_1yc__solution.html#a233eccb68505d3900b1199493fc74796',1,'yask::yc_solution::new_grid(const std::string &name, const std::initializer_list< yc_index_node_ptr > &dims)'],['../classyask_1_1yk__solution.html#ac5b391babd6897c314f5ba5e3c0b2605',1,'yask::yk_solution::new_grid(const std::string &name, const string_vec &dims)'],['../classyask_1_1yk__solution.html#a30606c931e4b30a1d4d1b515dc4c5926',1,'yask::yk_solution::new_grid(const std::string &name, const std::initializer_list< std::string > &dims)']]],
['new_5fgrid_5fpoint_14',['new_grid_point',['../classyask_1_1yc__var.html#aa9dcbc42cd74571ef124f9801a177e18',1,'yask::yc_var::new_grid_point(const std::vector< yc_number_node_ptr > &index_exprs)'],['../classyask_1_1yc__var.html#a33df3a69c0a880009a764dd6b9ae04b0',1,'yask::yc_var::new_grid_point(const std::initializer_list< yc_number_node_ptr > &index_exprs)']]],
- ['new_5flast_5fdomain_5findex_15',['new_last_domain_index',['../classyask_1_1yc__node__factory.html#a8ec2bb0a9c5db26467185f876c73febf',1,'yask::yc_node_factory']]],
+ ['new_5flast_5fdomain_5findex_15',['new_last_domain_index',['../classyask_1_1yc__node__factory.html#ad22990dbd10e7724e10d3920ca37cebd',1,'yask::yc_node_factory']]],
['new_5fless_5fthan_5fnode_16',['new_less_than_node',['../classyask_1_1yc__node__factory.html#af5fcf62243eee64f4d8e06224b2e6de7',1,'yask::yc_node_factory']]],
['new_5fmisc_5findex_17',['new_misc_index',['../classyask_1_1yc__node__factory.html#aef5fed8db0e1798b421c4a8cb8da77ff',1,'yask::yc_node_factory::new_misc_index()'],['../classyask_1_1yc__solution__base.html#a254355f82c0bbaf2f78f6d38a196dcf3',1,'yask::yc_solution_base::new_misc_index()']]],
['new_5fmod_5fnode_18',['new_mod_node',['../classyask_1_1yc__node__factory.html#a64d7ca74b83c874c2c9602dc7999c9a6',1,'yask::yc_node_factory']]],
diff --git a/docs/api/html/yask__compiler__api_8hpp_source.html b/docs/api/html/yask__compiler__api_8hpp_source.html
index 0aaae35d..07aeb246 100644
--- a/docs/api/html/yask__compiler__api_8hpp_source.html
+++ b/docs/api/html/yask__compiler__api_8hpp_source.html
@@ -614,10 +614,10 @@
Bootstrap factory to create objects needed to define a stencil solution.
Definition: yask_compiler_api.hpp:96
virtual std::string get_version_string()
Version information.
virtual yc_solution_ptr new_solution(const std::string &name) const
Create a stencil solution.
-A dimension or an index in that dimension.
Definition: yc_node_api.hpp:270
-Arguments that may be YASK or non-YASK numeric types.
Definition: yc_node_api.hpp:561
+A dimension or an index in that dimension.
Definition: yc_node_api.hpp:272
+Arguments that may be YASK or non-YASK numeric types.
Definition: yc_node_api.hpp:563
Base class for all numerical AST nodes.
Definition: yc_node_api.hpp:247
-Arguments that may be YASK numeric pointer types.
Definition: yc_node_api.hpp:495
+Arguments that may be YASK numeric pointer types.
Definition: yc_node_api.hpp:497
Stencil solution.
Definition: yask_compiler_api.hpp:123
virtual std::string get_command_line_help()=0
Return a help-string for the command-line options.
YASK_DEPRECATED std::vector< yc_var_ptr > get_grids()
[Deprecated] Use get_vars().
Definition: yask_compiler_api.hpp:748
@@ -670,7 +670,7 @@
YASK_DEPRECATED yc_var_ptr new_scratch_grid(const std::string &name, const std::initializer_list< yc_index_node_ptr > &dims)
[Deprecated] Use new_scratch_var().
Definition: yask_compiler_api.hpp:732
virtual void clear_folding()=0
Remove all vector-folding settings.
virtual void set_debug_output(yask_output_ptr debug)=0
Set object to receive debug output.
-A reference to a point in a var.
Definition: yc_node_api.hpp:283
+A reference to a point in a var.
Definition: yc_node_api.hpp:285
A wrapper or "proxy" class around a yc_var pointer.
Definition: yask_compiler_api.hpp:930
virtual yc_var_point_node_ptr operator()(const yc_number_any_arg i1=nullptr, const yc_number_any_arg i2=nullptr, const yc_number_any_arg i3=nullptr, const yc_number_any_arg i4=nullptr, const yc_number_any_arg i5=nullptr, const yc_number_any_arg i6=nullptr)
Create an expression for a point in a 1-6 dim var.
Definition: yask_compiler_api.hpp:1055
virtual yc_var_ptr get_var()
Get the underlying yc_var pointer.
Definition: yask_compiler_api.hpp:1011
diff --git a/docs/api/html/yc__node__api_8hpp_source.html b/docs/api/html/yc__node__api_8hpp_source.html
index 59b8e870..15403499 100644
--- a/docs/api/html/yc__node__api_8hpp_source.html
+++ b/docs/api/html/yc__node__api_8hpp_source.html
@@ -220,495 +220,495 @@
-
-
-
+
+
- 275 virtual const std::string&
-
-
-
+
+ 277 virtual const std::string&
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
- 351 virtual std::vector<yc_number_node_ptr>
-
-
-
-
-
-
+
+ 353 virtual std::vector<yc_number_node_ptr>
+
+
+
+
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
- 698 return std::move(arg);
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+ 700 return std::move(arg);
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
+
+
+
+
- 918#define UNARY_MATH_EXPR(fn_name) \
- 919 yc_number_node_ptr fn_name(const yc_number_node_ptr rhs)
-
-
-
-
-
-
-
-
-
-
- 939#undef UNARY_MATH_EXPR
-
- 942#define BINARY_MATH_EXPR(fn_name) \
- 943 yc_number_node_ptr fn_name(const yc_number_node_ptr arg1, const yc_number_node_ptr arg2); \
- 944 yc_number_node_ptr fn_name(double arg1, const yc_number_node_ptr arg2); \
- 945 yc_number_node_ptr fn_name(const yc_number_node_ptr arg1, double arg2)
-
+
+
+ 920#define UNARY_MATH_EXPR(fn_name) \
+ 921 yc_number_node_ptr fn_name(const yc_number_node_ptr rhs)
+
+
+
+
+
+
+
+
+
+
+ 941#undef UNARY_MATH_EXPR
+
+ 944#define BINARY_MATH_EXPR(fn_name) \
+ 945 yc_number_node_ptr fn_name(const yc_number_node_ptr arg1, const yc_number_node_ptr arg2); \
+ 946 yc_number_node_ptr fn_name(double arg1, const yc_number_node_ptr arg2); \
+ 947 yc_number_node_ptr fn_name(const yc_number_node_ptr arg1, double arg2)
-
- 953#undef BINARY_MATH_EXPR
-
-
+
+
+ 955#undef BINARY_MATH_EXPR
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
- 1041#define BOOL_OPER(oper, fn) \
- 1042 inline yc_bool_node_ptr operator oper(const yc_number_node_ptr lhs, const yc_number_node_ptr rhs) { \
- 1043 yc_node_factory nfac; return nfac.fn(lhs, rhs); } \
- 1044 inline yc_bool_node_ptr operator oper(const yc_number_node_ptr lhs, const yc_index_node_ptr rhs) { \
+
+ 1043#define BOOL_OPER(oper, fn) \
+ 1044 inline yc_bool_node_ptr operator oper(const yc_number_node_ptr lhs, const yc_number_node_ptr rhs) { \
1045 yc_node_factory nfac; return nfac.fn(lhs, rhs); } \
- 1046 inline yc_bool_node_ptr operator oper(const yc_number_node_ptr lhs, const yc_var_point_node_ptr rhs) { \
+ 1046 inline yc_bool_node_ptr operator oper(const yc_number_node_ptr lhs, const yc_index_node_ptr rhs) { \
1047 yc_node_factory nfac; return nfac.fn(lhs, rhs); } \
- 1048 inline yc_bool_node_ptr operator oper(const yc_index_node_ptr lhs, const yc_number_node_ptr rhs) { \
+ 1048 inline yc_bool_node_ptr operator oper(const yc_number_node_ptr lhs, const yc_var_point_node_ptr rhs) { \
1049 yc_node_factory nfac; return nfac.fn(lhs, rhs); } \
- 1050 inline yc_bool_node_ptr operator oper(const yc_index_node_ptr lhs, const yc_index_node_ptr rhs) { \
+ 1050 inline yc_bool_node_ptr operator oper(const yc_index_node_ptr lhs, const yc_number_node_ptr rhs) { \
1051 yc_node_factory nfac; return nfac.fn(lhs, rhs); } \
- 1052 inline yc_bool_node_ptr operator oper(const yc_index_node_ptr lhs, const yc_var_point_node_ptr rhs) { \
+ 1052 inline yc_bool_node_ptr operator oper(const yc_index_node_ptr lhs, const yc_index_node_ptr rhs) { \
1053 yc_node_factory nfac; return nfac.fn(lhs, rhs); } \
- 1054 inline yc_bool_node_ptr operator oper(const yc_var_point_node_ptr lhs, const yc_number_node_ptr rhs) { \
+ 1054 inline yc_bool_node_ptr operator oper(const yc_index_node_ptr lhs, const yc_var_point_node_ptr rhs) { \
1055 yc_node_factory nfac; return nfac.fn(lhs, rhs); } \
- 1056 inline yc_bool_node_ptr operator oper(const yc_var_point_node_ptr lhs, const yc_index_node_ptr rhs) { \
+ 1056 inline yc_bool_node_ptr operator oper(const yc_var_point_node_ptr lhs, const yc_number_node_ptr rhs) { \
1057 yc_node_factory nfac; return nfac.fn(lhs, rhs); } \
- 1058 inline yc_bool_node_ptr operator oper(const yc_var_point_node_ptr lhs, const yc_var_point_node_ptr rhs) { \
+ 1058 inline yc_bool_node_ptr operator oper(const yc_var_point_node_ptr lhs, const yc_index_node_ptr rhs) { \
1059 yc_node_factory nfac; return nfac.fn(lhs, rhs); } \
- 1060 inline yc_bool_node_ptr operator oper(const yc_number_node_ptr lhs, double rhs) { \
- 1061 yc_node_factory nfac; return nfac.fn(lhs, nfac.new_number_node(rhs)); } \
- 1062 inline yc_bool_node_ptr operator oper(const yc_index_node_ptr lhs, double rhs) { \
+ 1060 inline yc_bool_node_ptr operator oper(const yc_var_point_node_ptr lhs, const yc_var_point_node_ptr rhs) { \
+ 1061 yc_node_factory nfac; return nfac.fn(lhs, rhs); } \
+ 1062 inline yc_bool_node_ptr operator oper(const yc_number_node_ptr lhs, double rhs) { \
1063 yc_node_factory nfac; return nfac.fn(lhs, nfac.new_number_node(rhs)); } \
- 1064 inline yc_bool_node_ptr operator oper(const yc_var_point_node_ptr lhs, double rhs) { \
- 1065 yc_node_factory nfac; return nfac.fn(lhs, nfac.new_number_node(rhs)); }
-
-
-
-
-
- 1071 BOOL_OPER(<=, new_not_greater_than_node)
-
-
-
+ 1064 inline yc_bool_node_ptr operator oper(const yc_index_node_ptr lhs, double rhs) { \
+ 1065 yc_node_factory nfac; return nfac.fn(lhs, nfac.new_number_node(rhs)); } \
+ 1066 inline yc_bool_node_ptr operator oper(const yc_var_point_node_ptr lhs, double rhs) { \
+ 1067 yc_node_factory nfac; return nfac.fn(lhs, nfac.new_number_node(rhs)); }
+
+
+
+
+
+ 1073 BOOL_OPER(<=, new_not_greater_than_node)
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
-
-An addition node.
Definition: yc_node_api.hpp:361
-A boolean 'and' operator.
Definition: yc_node_api.hpp:424
-Base class for boolean binary operators that take boolean inputs.
Definition: yc_node_api.hpp:408
+
+
+
+An addition node.
Definition: yc_node_api.hpp:363
+A boolean 'and' operator.
Definition: yc_node_api.hpp:426
+Base class for boolean binary operators that take boolean inputs.
Definition: yc_node_api.hpp:410
virtual yc_bool_node_ptr get_lhs()=0
Get the left-hand-side operand.
virtual yc_bool_node_ptr get_rhs()=0
Get the right-hand-side operand.
-Base class for boolean binary operators that take numerical inputs.
Definition: yc_node_api.hpp:433
+Base class for boolean binary operators that take numerical inputs.
Definition: yc_node_api.hpp:435
virtual yc_number_node_ptr get_lhs()=0
Get the left-hand-side operand.
virtual yc_number_node_ptr get_rhs()=0
Get the right-hand-side operand.
-Base class for numerical binary operators.
Definition: yc_node_api.hpp:370
+Base class for numerical binary operators.
Definition: yc_node_api.hpp:372
virtual yc_number_node_ptr get_lhs()=0
Get the left-hand-side operand.
virtual yc_number_node_ptr get_rhs()=0
Get the right-hand-side operand.
Base class for all boolean AST nodes.
Definition: yc_node_api.hpp:256
virtual yc_bool_node_ptr clone_ast() const =0
Create a deep copy of AST starting with this node.
-Base class for commutative numerical operators.
Definition: yc_node_api.hpp:337
+Base class for commutative numerical operators.
Definition: yc_node_api.hpp:339
virtual void add_operand(yc_number_node_ptr node)=0
Add an operand.
virtual int get_num_operands()=0
Get the number of operands.
virtual std::vector< yc_number_node_ptr > get_operands()=0
Get a list of the operands.
-A constant numerical value.
Definition: yc_node_api.hpp:304
+A constant numerical value.
Definition: yc_node_api.hpp:306
virtual double get_value() const =0
Get the stored value.
virtual void set_value(double val)=0
Set the value.
-A division node.
Definition: yc_node_api.hpp:388
-A numerical-comparison 'equals' operator.
Definition: yc_node_api.hpp:451
+A division node.
Definition: yc_node_api.hpp:390
+A numerical-comparison 'equals' operator.
Definition: yc_node_api.hpp:453
Equation node.
Definition: yc_node_api.hpp:149
virtual yc_equation_node_ptr clone_ast() const =0
Create a deep copy of AST starting with this node.
virtual yc_bool_node_ptr get_cond()=0
Get the condition describing the sub-domain.
@@ -719,17 +719,16 @@
Base class for all AST nodes.
Definition: yc_node_api.hpp:125
virtual std::string format_simple() const =0
Create a simple human-readable string.
virtual int get_num_nodes() const =0
Count the size of the AST.
-A numerical-comparison 'greater_than' operator.
Definition: yc_node_api.hpp:469
-A dimension or an index in that dimension.
Definition: yc_node_api.hpp:270
+A numerical-comparison 'greater_than' operator.
Definition: yc_node_api.hpp:471
+A dimension or an index in that dimension.
Definition: yc_node_api.hpp:272
virtual const std::string & get_name() const =0
Get the dimension's name.
-A numerical-comparison 'less_than' operator.
Definition: yc_node_api.hpp:463
-A modulo node.
Definition: yc_node_api.hpp:392
-A multiplication node.
Definition: yc_node_api.hpp:365
-A numerical negation operator.
Definition: yc_node_api.hpp:323
+A numerical-comparison 'less_than' operator.
Definition: yc_node_api.hpp:465
+A modulo node.
Definition: yc_node_api.hpp:394
+A multiplication node.
Definition: yc_node_api.hpp:367
+A numerical negation operator.
Definition: yc_node_api.hpp:325
virtual yc_number_node_ptr get_rhs()=0
Get the [only] operand.
-Factory to create AST nodes.
Definition: yc_node_api.hpp:607
+Factory to create AST nodes.
Definition: yc_node_api.hpp:609
virtual yc_number_node_ptr new_multiply_node(yc_number_node_ptr lhs, yc_number_node_ptr rhs) const
Create a multiplication node.
-virtual yc_number_node_ptr new_first_domain_index(yc_index_node_ptr idx) const
Create a symbol for the first index value in a given dimension.
virtual yc_number_node_ptr new_add_node(yc_number_node_ptr lhs, yc_number_node_ptr rhs) const
Create an addition node.
virtual yc_bool_node_ptr new_not_greater_than_node(yc_number_node_ptr lhs, yc_number_node_ptr rhs) const
Create a numerical-comparison 'less-than or equals' node.
virtual yc_number_node_ptr new_negate_node(yc_number_node_ptr rhs) const
Create a numerical negation operator node.
@@ -739,51 +738,52 @@
virtual yc_bool_node_ptr new_or_node(yc_bool_node_ptr lhs, yc_bool_node_ptr rhs) const
Create a boolean 'or' node.
virtual yc_index_node_ptr new_step_index(const std::string &name) const
Create a step-index node.
virtual yc_number_node_ptr new_const_number_node(double val) const
Create a constant numerical-value node.
-virtual yc_number_node_ptr new_last_domain_index(yc_index_node_ptr idx) const
Create a symbol for the last index value in a given dimension.
virtual yc_bool_node_ptr new_not_less_than_node(yc_number_node_ptr lhs, yc_number_node_ptr rhs) const
Create a numerical-comparison 'greater-than or equals' node.
virtual yc_bool_node_ptr new_not_node(yc_bool_node_ptr rhs) const
Create a binary inverse operator node.
virtual yc_bool_node_ptr new_equals_node(yc_number_node_ptr lhs, yc_number_node_ptr rhs) const
Create a numerical-comparison 'equals' node.
virtual yc_bool_node_ptr new_greater_than_node(yc_number_node_ptr lhs, yc_number_node_ptr rhs) const
Create a numerical-comparison 'greater-than' node.
+virtual yc_index_node_ptr new_first_domain_index(yc_index_node_ptr idx) const
Create a symbol for the first index value in a given dimension.
+virtual yc_index_node_ptr new_last_domain_index(yc_index_node_ptr idx) const
Create a symbol for the last index value in a given dimension.
virtual yc_bool_node_ptr new_and_node(yc_bool_node_ptr lhs, yc_bool_node_ptr rhs) const
Create a boolean 'and' node.
virtual yc_number_node_ptr new_const_number_node(idx_t val) const
Create a constant numerical value node.
-virtual yc_number_node_ptr new_number_node(yc_number_any_arg arg) const
Create a numerical-value expression node.
Definition: yc_node_api.hpp:696
+virtual yc_number_node_ptr new_number_node(yc_number_any_arg arg) const
Create a numerical-value expression node.
Definition: yc_node_api.hpp:698
virtual yc_index_node_ptr new_misc_index(const std::string &name) const
Create a new miscellaneous index.
virtual yc_bool_node_ptr new_less_than_node(yc_number_node_ptr lhs, yc_number_node_ptr rhs) const
Create a numerical-comparison 'less-than' node.
virtual yc_number_node_ptr new_subtract_node(yc_number_node_ptr lhs, yc_number_node_ptr rhs) const
Create a subtraction node.
virtual yc_index_node_ptr new_domain_index(const std::string &name) const
Create a domain-index node.
virtual yc_bool_node_ptr new_not_equals_node(yc_number_node_ptr lhs, yc_number_node_ptr rhs) const
Create a numerical-comparison 'not-equals' node.
-A numerical-comparison 'not_equals' operator.
Definition: yc_node_api.hpp:457
-A numerical-comparison 'not_greater_than' operator.
Definition: yc_node_api.hpp:481
-A numerical-comparison 'not_less_than' operator.
Definition: yc_node_api.hpp:475
-A boolean inversion operator.
Definition: yc_node_api.hpp:398
+A numerical-comparison 'not_equals' operator.
Definition: yc_node_api.hpp:459
+A numerical-comparison 'not_greater_than' operator.
Definition: yc_node_api.hpp:483
+A numerical-comparison 'not_less_than' operator.
Definition: yc_node_api.hpp:477
+A boolean inversion operator.
Definition: yc_node_api.hpp:400
virtual yc_bool_node_ptr get_rhs()=0
Get the [only] operand.
-Arguments that may be YASK or non-YASK numeric types.
Definition: yc_node_api.hpp:561
-yc_number_any_arg(idx_t i)
Arg can be an index type.
Definition: yc_node_api.hpp:583
-yc_number_any_arg(std::nullptr_t p)
Arg can be a null pointer.
Definition: yc_node_api.hpp:599
-yc_number_any_arg(int i)
Arg can be an int.
Definition: yc_node_api.hpp:587
-yc_number_any_arg(yc_index_node_ptr p)
Arg can be an index-node pointer.
Definition: yc_node_api.hpp:575
+Arguments that may be YASK or non-YASK numeric types.
Definition: yc_node_api.hpp:563
+yc_number_any_arg(idx_t i)
Arg can be an index type.
Definition: yc_node_api.hpp:585
+yc_number_any_arg(std::nullptr_t p)
Arg can be a null pointer.
Definition: yc_node_api.hpp:601
+yc_number_any_arg(int i)
Arg can be an int.
Definition: yc_node_api.hpp:589
+yc_number_any_arg(yc_index_node_ptr p)
Arg can be an index-node pointer.
Definition: yc_node_api.hpp:577
yc_number_node_ptr _convert_const(double val) const
Create an argument from a constant value.
-yc_number_any_arg(yc_var_point_node_ptr p)
Arg can be a var-point-node pointer.
Definition: yc_node_api.hpp:579
-yc_number_any_arg(double f)
Arg can be a double.
Definition: yc_node_api.hpp:591
-yc_number_any_arg(yc_number_node_ptr p)
Arg can be a number-node pointer.
Definition: yc_node_api.hpp:571
-yc_number_any_arg(float f)
Arg can be a float.
Definition: yc_node_api.hpp:595
-Arguments that may be non-YASK numeric types.
Definition: yc_node_api.hpp:523
+yc_number_any_arg(yc_var_point_node_ptr p)
Arg can be a var-point-node pointer.
Definition: yc_node_api.hpp:581
+yc_number_any_arg(double f)
Arg can be a double.
Definition: yc_node_api.hpp:593
+yc_number_any_arg(yc_number_node_ptr p)
Arg can be a number-node pointer.
Definition: yc_node_api.hpp:573
+yc_number_any_arg(float f)
Arg can be a float.
Definition: yc_node_api.hpp:597
+Arguments that may be non-YASK numeric types.
Definition: yc_node_api.hpp:525
yc_number_node_ptr _convert_const(double val) const
Create an argument from a constant value.
-yc_number_const_arg(idx_t i)
Arg can be an index type.
Definition: yc_node_api.hpp:533
-yc_number_const_arg(float f)
Arg can be a float.
Definition: yc_node_api.hpp:545
-yc_number_const_arg(int i)
Arg can be an int.
Definition: yc_node_api.hpp:537
-yc_number_const_arg(double f)
Arg can be a double.
Definition: yc_node_api.hpp:541
+yc_number_const_arg(idx_t i)
Arg can be an index type.
Definition: yc_node_api.hpp:535
+yc_number_const_arg(float f)
Arg can be a float.
Definition: yc_node_api.hpp:547
+yc_number_const_arg(int i)
Arg can be an int.
Definition: yc_node_api.hpp:539
+yc_number_const_arg(double f)
Arg can be a double.
Definition: yc_node_api.hpp:543
Base class for all numerical AST nodes.
Definition: yc_node_api.hpp:247
virtual yc_number_node_ptr clone_ast() const =0
Create a deep copy of AST starting with this node.
-Arguments that may be YASK numeric pointer types.
Definition: yc_node_api.hpp:495
-yc_number_ptr_arg(yc_index_node_ptr p)
Arg can be an index-node pointer.
Definition: yc_node_api.hpp:504
-yc_number_ptr_arg(yc_var_point_node_ptr p)
Arg can be a var-point-node pointer.
Definition: yc_node_api.hpp:508
-yc_number_ptr_arg(yc_number_node_ptr p)
Arg can be a number-node pointer.
Definition: yc_node_api.hpp:500
-A boolean 'or' operator.
Definition: yc_node_api.hpp:430
-A subtraction node.
Definition: yc_node_api.hpp:384
-A reference to a point in a var.
Definition: yc_node_api.hpp:283
+Arguments that may be YASK numeric pointer types.
Definition: yc_node_api.hpp:497
+yc_number_ptr_arg(yc_index_node_ptr p)
Arg can be an index-node pointer.
Definition: yc_node_api.hpp:506
+yc_number_ptr_arg(yc_var_point_node_ptr p)
Arg can be a var-point-node pointer.
Definition: yc_node_api.hpp:510
+yc_number_ptr_arg(yc_number_node_ptr p)
Arg can be a number-node pointer.
Definition: yc_node_api.hpp:502
+A boolean 'or' operator.
Definition: yc_node_api.hpp:432
+A subtraction node.
Definition: yc_node_api.hpp:386
+A reference to a point in a var.
Definition: yc_node_api.hpp:285
virtual yc_var_ptr get_var()=0
Get the var this point is in.
-YASK_DEPRECATED yc_var_ptr get_grid()
[Deprecated] Use get_var().
Definition: yc_node_api.hpp:294
+YASK_DEPRECATED yc_var_ptr get_grid()
[Deprecated] Use get_var().
Definition: yc_node_api.hpp:296
A compile-time data variable.
Definition: yask_compiler_api.hpp:770
YASK_INT64_T idx_t
Type to use for indexing grids.
Definition: yask_common_api.hpp:79
std::shared_ptr< yc_const_number_node > yc_const_number_node_ptr
Shared pointer to yc_const_number_node.
Definition: yc_node_api.hpp:45
@@ -791,7 +791,7 @@
void operator+=(yc_number_node_ptr &lhs, yc_number_node_ptr rhs)
Shortcut for creating expression A = A + B.
std::shared_ptr< yc_not_node > yc_not_node_ptr
Shared pointer to yc_not_node.
Definition: yc_node_api.hpp:89
std::shared_ptr< yc_greater_than_node > yc_greater_than_node_ptr
Shared pointer to yc_greater_than_node.
Definition: yc_node_api.hpp:105
-#define BOOL_OPER(oper, fn)
Binary numerical-to-boolean operators. Used internally to define ==, <, etc.
Definition: yc_node_api.hpp:1041
+#define BOOL_OPER(oper, fn)
Binary numerical-to-boolean operators. Used internally to define ==, <, etc.
Definition: yc_node_api.hpp:1043
std::shared_ptr< yc_binary_comparison_node > yc_binary_comparison_node_ptr
Shared pointer to yc_binary_comparison_node.
Definition: yc_node_api.hpp:65
std::shared_ptr< yc_not_equals_node > yc_not_equals_node_ptr
Shared pointer to yc_not_equals_node.
Definition: yc_node_api.hpp:97
std::shared_ptr< yc_bool_node > yc_bool_node_ptr
Shared pointer to yc_bool_node.
Definition: yask_compiler_api.hpp:65
@@ -806,17 +806,17 @@
yc_number_node_ptr operator*(yc_number_ptr_arg lhs, yc_number_ptr_arg rhs)
Operator version of yc_node_factory::new_multiply_node().
void operator*=(yc_number_node_ptr &lhs, yc_number_node_ptr rhs)
Shortcut for creating expression A = A * B.
yc_bool_node_ptr operator!(yc_bool_node_ptr rhs)
Operator version of yc_node_factory::new_not_node().
-#define IF_STEP
Recommended macro to make the step-condition operator readable and self-explanatory.
Definition: yc_node_api.hpp:1105
+#define IF_STEP
Recommended macro to make the step-condition operator readable and self-explanatory.
Definition: yc_node_api.hpp:1107
std::shared_ptr< yc_and_node > yc_and_node_ptr
Shared pointer to yc_and_node.
Definition: yc_node_api.hpp:117
-#define UNARY_MATH_EXPR(fn_name)
Unary math functions. Used internally to define sqrt(), sin(), etc.
Definition: yc_node_api.hpp:918
+#define UNARY_MATH_EXPR(fn_name)
Unary math functions. Used internally to define sqrt(), sin(), etc.
Definition: yc_node_api.hpp:920
std::shared_ptr< yc_less_than_node > yc_less_than_node_ptr
Shared pointer to yc_less_than_node.
Definition: yc_node_api.hpp:101
std::shared_ptr< yc_not_greater_than_node > yc_not_greater_than_node_ptr
Shared pointer to yc_not_greater_than_node.
Definition: yc_node_api.hpp:113
yc_bool_node_ptr operator&&(yc_bool_node_ptr lhs, yc_bool_node_ptr rhs)
Operator version of yc_node_factory::new_and_node().
std::shared_ptr< yc_add_node > yc_add_node_ptr
Shared pointer to yc_add_node.
Definition: yc_node_api.hpp:69
std::shared_ptr< yc_var_point_node > yc_var_point_node_ptr
Shared pointer to yc_var_point_node.
Definition: yask_compiler_api.hpp:81
-#define BINARY_MATH_EXPR(fn_name)
Binary math functions. Used internally to define pow().
Definition: yc_node_api.hpp:942
+#define BINARY_MATH_EXPR(fn_name)
Binary math functions. Used internally to define pow().
Definition: yc_node_api.hpp:944
yc_number_node_ptr operator%(yc_number_ptr_arg lhs, yc_number_ptr_arg rhs)
Operator version of yc_node_factory::new_mod_node().
-#define EQUALS
Recommended macro to make the "equality" operator readable and self-explanatory.
Definition: yc_node_api.hpp:1084
+#define EQUALS
Recommended macro to make the "equality" operator readable and self-explanatory.
Definition: yc_node_api.hpp:1086
std::shared_ptr< yc_binary_bool_node > yc_binary_bool_node_ptr
Shared pointer to yc_binary_bool_node.
Definition: yc_node_api.hpp:61
yc_bool_node_ptr operator||(yc_bool_node_ptr lhs, yc_bool_node_ptr rhs)
Operator version of yc_node_factory::new_or_node().
std::shared_ptr< yc_index_node > yc_index_node_ptr
Shared pointer to yc_index_node.
Definition: yask_compiler_api.hpp:73
@@ -824,7 +824,7 @@
std::shared_ptr< yc_equals_node > yc_equals_node_ptr
Shared pointer to yc_equals_node.
Definition: yc_node_api.hpp:93
yc_number_node_ptr operator+(yc_number_ptr_arg lhs, yc_number_ptr_arg rhs)
Operator version of yc_node_factory::new_add_node().
std::shared_ptr< yc_negate_node > yc_negate_node_ptr
Shared pointer to yc_negate_node.
Definition: yc_node_api.hpp:49
-#define IF_DOMAIN
Recommended macro to make the domain-condition operator readable and self-explanatory.
Definition: yc_node_api.hpp:1094
+#define IF_DOMAIN
Recommended macro to make the domain-condition operator readable and self-explanatory.
Definition: yc_node_api.hpp:1096
std::shared_ptr< yc_or_node > yc_or_node_ptr
Shared pointer to yc_or_node.
Definition: yc_node_api.hpp:121
void operator/=(yc_number_node_ptr &lhs, yc_number_node_ptr rhs)
Shortcut for creating expression A = A / B.
yc_number_node_ptr operator/(yc_number_ptr_arg lhs, yc_number_ptr_arg rhs)
Operator version of yc_node_factory::new_divide_node().
diff --git a/docs/api/html/yc__solution__api_8hpp_source.html b/docs/api/html/yc__solution__api_8hpp_source.html
index 08f14719..35f16ee0 100644
--- a/docs/api/html/yc__solution__api_8hpp_source.html
+++ b/docs/api/html/yc__solution__api_8hpp_source.html
@@ -174,12 +174,12 @@
-
+
-
+
@@ -217,14 +217,14 @@
Bootstrap factory to create objects needed to define a stencil solution.
Definition: yask_compiler_api.hpp:96
-Factory to create AST nodes.
Definition: yc_node_api.hpp:607
-virtual yc_number_node_ptr new_first_domain_index(yc_index_node_ptr idx) const
Create a symbol for the first index value in a given dimension.
+Factory to create AST nodes.
Definition: yc_node_api.hpp:609
virtual yc_index_node_ptr new_step_index(const std::string &name) const
Create a step-index node.
-virtual yc_number_node_ptr new_last_domain_index(yc_index_node_ptr idx) const
Create a symbol for the last index value in a given dimension.
-virtual yc_number_node_ptr new_number_node(yc_number_any_arg arg) const
Create a numerical-value expression node.
Definition: yc_node_api.hpp:696
+virtual yc_index_node_ptr new_first_domain_index(yc_index_node_ptr idx) const
Create a symbol for the first index value in a given dimension.
+virtual yc_index_node_ptr new_last_domain_index(yc_index_node_ptr idx) const
Create a symbol for the last index value in a given dimension.
+virtual yc_number_node_ptr new_number_node(yc_number_any_arg arg) const
Create a numerical-value expression node.
Definition: yc_node_api.hpp:698
virtual yc_index_node_ptr new_misc_index(const std::string &name) const
Create a new miscellaneous index.
virtual yc_index_node_ptr new_domain_index(const std::string &name) const
Create a domain-index node.
-Arguments that may be YASK or non-YASK numeric types.
Definition: yc_node_api.hpp:561
+Arguments that may be YASK or non-YASK numeric types.
Definition: yc_node_api.hpp:563
A base class for defining solutions to be kept in a common registry.
Definition: yc_solution_api.hpp:57
yc_index_node_ptr new_misc_index(const std::string &name)
A simple wrapper for yc_node_factory::new_misc_index().
Definition: yc_solution_api.hpp:143
yc_number_node_ptr first_domain_index(yc_index_node_ptr dim)
A simple wrapper for yc_node_factory::new_first_domain_index().
Definition: yc_solution_api.hpp:155