Sparse representation: Octave compatibility fix
Octave does not support “private” subdir inside plus folders (“+namespace”). See https://savannah.gnu.org/bugs/?45444master
parent
8ebd9a9496
commit
bbdbd0807b
|
@ -2628,8 +2628,6 @@ DynamicModel::writeDynamicFile(const string &basename, bool block, bool use_dll,
|
||||||
|
|
||||||
auto sparsefolder {plusfolder / "+sparse"};
|
auto sparsefolder {plusfolder / "+sparse"};
|
||||||
create_directories(sparsefolder);
|
create_directories(sparsefolder);
|
||||||
if (!use_dll)
|
|
||||||
create_directories(sparsefolder / "private");
|
|
||||||
if (block_decomposed)
|
if (block_decomposed)
|
||||||
create_directories(sparsefolder / "+block");
|
create_directories(sparsefolder / "+block");
|
||||||
|
|
||||||
|
|
|
@ -2474,7 +2474,6 @@ ModelTree::writeSparseModelMFiles(const string &basename) const
|
||||||
auto [d_sparse_output, tt_sparse_output] = writeModelFileHelper<output_type>();
|
auto [d_sparse_output, tt_sparse_output] = writeModelFileHelper<output_type>();
|
||||||
|
|
||||||
const filesystem::path m_dir {packageDir(basename) / "+sparse"};
|
const filesystem::path m_dir {packageDir(basename) / "+sparse"};
|
||||||
const filesystem::path private_m_dir {m_dir / "private"};
|
|
||||||
// TODO: when C++20 support is complete, mark the following strings constexpr
|
// TODO: when C++20 support is complete, mark the following strings constexpr
|
||||||
const string prefix { dynamic ? "dynamic_" : "static_" };
|
const string prefix { dynamic ? "dynamic_" : "static_" };
|
||||||
const string full_prefix { basename + ".sparse." + prefix };
|
const string full_prefix { basename + ".sparse." + prefix };
|
||||||
|
@ -2494,7 +2493,7 @@ ModelTree::writeSparseModelMFiles(const string &basename) const
|
||||||
};
|
};
|
||||||
|
|
||||||
// Residuals (non-block)
|
// Residuals (non-block)
|
||||||
open_file(private_m_dir / (prefix + "resid_tt.m"));
|
open_file(m_dir / (prefix + "resid_tt.m"));
|
||||||
output << "function [T_order, T] = " << prefix << "resid_tt(y, x, params" << ss_arg << ", T_order, T)" << endl
|
output << "function [T_order, T] = " << prefix << "resid_tt(y, x, params" << ss_arg << ", T_order, T)" << endl
|
||||||
<< "if T_order >= 0" << endl
|
<< "if T_order >= 0" << endl
|
||||||
<< " return" << endl
|
<< " return" << endl
|
||||||
|
@ -2513,7 +2512,7 @@ ModelTree::writeSparseModelMFiles(const string &basename) const
|
||||||
<< " T_order = -1;" << endl
|
<< " T_order = -1;" << endl
|
||||||
<< " T = NaN(" << ttlen << ", 1);" << endl
|
<< " T = NaN(" << ttlen << ", 1);" << endl
|
||||||
<< "end" << endl
|
<< "end" << endl
|
||||||
<< "[T_order, T] = " << prefix << "resid_tt(y, x, params" << ss_arg << ", T_order, T);" << endl
|
<< "[T_order, T] = " << full_prefix << "resid_tt(y, x, params" << ss_arg << ", T_order, T);" << endl
|
||||||
<< "residual = NaN(" << equations.size() << ", 1);" << endl
|
<< "residual = NaN(" << equations.size() << ", 1);" << endl
|
||||||
<< d_sparse_output[0].str();
|
<< d_sparse_output[0].str();
|
||||||
if constexpr(!dynamic)
|
if constexpr(!dynamic)
|
||||||
|
@ -2526,12 +2525,12 @@ ModelTree::writeSparseModelMFiles(const string &basename) const
|
||||||
// Jacobian (non-block)
|
// Jacobian (non-block)
|
||||||
ttlen += temporary_terms_derivatives[1].size();
|
ttlen += temporary_terms_derivatives[1].size();
|
||||||
|
|
||||||
open_file(private_m_dir / (prefix + "g1_tt.m"));
|
open_file(m_dir / (prefix + "g1_tt.m"));
|
||||||
output << "function [T_order, T] = " << prefix << "g1_tt(y, x, params" << ss_arg << ", T_order, T)" << endl
|
output << "function [T_order, T] = " << prefix << "g1_tt(y, x, params" << ss_arg << ", T_order, T)" << endl
|
||||||
<< "if T_order >= 1" << endl
|
<< "if T_order >= 1" << endl
|
||||||
<< " return" << endl
|
<< " return" << endl
|
||||||
<< "end" << endl
|
<< "end" << endl
|
||||||
<< "[T_order, T] = " << prefix << "resid_tt(y, x, params" << ss_arg << ", T_order, T);" << endl
|
<< "[T_order, T] = " << full_prefix << "resid_tt(y, x, params" << ss_arg << ", T_order, T);" << endl
|
||||||
<< "T_order = 1;" << endl
|
<< "T_order = 1;" << endl
|
||||||
<< "if size(T, 1) < " << ttlen << endl
|
<< "if size(T, 1) < " << ttlen << endl
|
||||||
<< " T = [T; NaN(" << ttlen << " - size(T, 1), 1)];" << endl
|
<< " T = [T; NaN(" << ttlen << " - size(T, 1), 1)];" << endl
|
||||||
|
@ -2547,7 +2546,7 @@ ModelTree::writeSparseModelMFiles(const string &basename) const
|
||||||
<< " T_order = -1;" << endl
|
<< " T_order = -1;" << endl
|
||||||
<< " T = NaN(" << ttlen << ", 1);" << endl
|
<< " T = NaN(" << ttlen << ", 1);" << endl
|
||||||
<< "end" << endl
|
<< "end" << endl
|
||||||
<< "[T_order, T] = " << prefix << "g1_tt(y, x, params" << ss_arg << ", T_order, T);" << endl
|
<< "[T_order, T] = " << full_prefix << "g1_tt(y, x, params" << ss_arg << ", T_order, T);" << endl
|
||||||
<< "g1_v = NaN(" << jacobian_sparse_column_major_order.size() << ", 1);" << endl
|
<< "g1_v = NaN(" << jacobian_sparse_column_major_order.size() << ", 1);" << endl
|
||||||
<< d_sparse_output[1].str();
|
<< d_sparse_output[1].str();
|
||||||
if constexpr(!dynamic)
|
if constexpr(!dynamic)
|
||||||
|
@ -2568,12 +2567,12 @@ ModelTree::writeSparseModelMFiles(const string &basename) const
|
||||||
{
|
{
|
||||||
ttlen += temporary_terms_derivatives[i].size();
|
ttlen += temporary_terms_derivatives[i].size();
|
||||||
|
|
||||||
open_file(private_m_dir / (prefix + "g" + to_string(i) + "_tt.m"));
|
open_file(m_dir / (prefix + "g" + to_string(i) + "_tt.m"));
|
||||||
output << "function T = " << prefix << "g" << i << "_tt(y, x, params" << ss_arg << ")" << endl
|
output << "function T = " << prefix << "g" << i << "_tt(y, x, params" << ss_arg << ")" << endl
|
||||||
<< "if T_order >= " << i << endl
|
<< "if T_order >= " << i << endl
|
||||||
<< " return" << endl
|
<< " return" << endl
|
||||||
<< "end" << endl
|
<< "end" << endl
|
||||||
<< "[T_order, T] = " << prefix << "g" << i-1 << "_tt(y, x, params" << ss_arg << ", T_order, T);" << endl
|
<< "[T_order, T] = " << full_prefix << "g" << i-1 << "_tt(y, x, params" << ss_arg << ", T_order, T);" << endl
|
||||||
<< "T_order = " << i << ";" << endl
|
<< "T_order = " << i << ";" << endl
|
||||||
<< "if size(T, 1) < " << ttlen << endl
|
<< "if size(T, 1) < " << ttlen << endl
|
||||||
<< " T = [T; NaN(" << ttlen << " - size(T, 1), 1)];" << endl
|
<< " T = [T; NaN(" << ttlen << " - size(T, 1), 1)];" << endl
|
||||||
|
@ -2588,7 +2587,7 @@ ModelTree::writeSparseModelMFiles(const string &basename) const
|
||||||
<< " T_order = -1;" << endl
|
<< " T_order = -1;" << endl
|
||||||
<< " T = NaN(" << ttlen << ", 1);" << endl
|
<< " T = NaN(" << ttlen << ", 1);" << endl
|
||||||
<< "end" << endl
|
<< "end" << endl
|
||||||
<< "[T_order, T] = " << prefix << "g" << i << "_tt(y, x, params" << ss_arg << ", T_order, T);" << endl
|
<< "[T_order, T] = " << full_prefix << "g" << i << "_tt(y, x, params" << ss_arg << ", T_order, T);" << endl
|
||||||
<< "g" << i << "_v = NaN(" << derivatives[i].size() << ", 1);" << endl
|
<< "g" << i << "_v = NaN(" << derivatives[i].size() << ", 1);" << endl
|
||||||
<< d_sparse_output[i].str()
|
<< d_sparse_output[i].str()
|
||||||
<< "end" << endl;
|
<< "end" << endl;
|
||||||
|
|
|
@ -481,8 +481,6 @@ StaticModel::writeStaticFile(const string &basename, bool block, bool use_dll, c
|
||||||
|
|
||||||
auto sparsefolder {plusfolder / "+sparse"};
|
auto sparsefolder {plusfolder / "+sparse"};
|
||||||
create_directories(sparsefolder);
|
create_directories(sparsefolder);
|
||||||
if (!use_dll)
|
|
||||||
create_directories(sparsefolder / "private");
|
|
||||||
if (block_decomposed)
|
if (block_decomposed)
|
||||||
create_directories(sparsefolder / "+block");
|
create_directories(sparsefolder / "+block");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue