Skip to content
Snippets Groups Projects
Select Git revision
  • 543e2b16e359b6ec7c7392cb4c0012dcf93b02be
  • master default protected
  • julia protected
  • 6.x protected
  • python-codegen
  • llvm-15
  • 5.x protected
  • 4.6 protected
  • uop
  • rework_pac
  • aux_vars_fix
  • julia-7.0.0
  • julia-6.4.0
  • julia-6.3.0
  • julia-6.2.0
15 results

ConfigFile.hh

Blame
  • StaticModel.cc 137.71 KiB
    /*
     * Copyright © 2003-2019 Dynare Team
     *
     * This file is part of Dynare.
     *
     * Dynare is free software: you can redistribute it and/or modify
     * it under the terms of the GNU General Public License as published by
     * the Free Software Foundation, either version 3 of the License, or
     * (at your option) any later version.
     *
     * Dynare is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     * GNU General Public License for more details.
     *
     * You should have received a copy of the GNU General Public License
     * along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
     */
    
    #include <iostream>
    #include <cmath>
    #include <cstdlib>
    #include <cassert>
    #include <algorithm>
    
    #include "StaticModel.hh"
    #include "DynamicModel.hh"
    
    void
    StaticModel::copyHelper(const StaticModel &m)
    {
      auto f = [this](expr_t e) { return e->clone(*this); };
    
      auto convert_vector_tt = [f](vector<temporary_terms_t> vtt)
        {
          vector<temporary_terms_t> vtt2;
          for (const auto &tt : vtt)
            {
              temporary_terms_t tt2;
              for (const auto &it : tt)
                tt2.insert(f(it));
              vtt2.push_back(tt2);
            }
          return vtt2;
        };
    
      for (const auto &it : m.v_temporary_terms)
        v_temporary_terms.push_back(convert_vector_tt(it));
      for (const auto &it : m.v_temporary_terms_local)
        v_temporary_terms_local.push_back(convert_vector_tt(it));
    
      for (const auto &it : m.first_chain_rule_derivatives)
        first_chain_rule_derivatives[it.first] = f(it.second);
    
      for (const auto &it : m.equation_type_and_normalized_equation)
        equation_type_and_normalized_equation.emplace_back(it.first, f(it.second));
    
      for (const auto &it : m.blocks_derivatives)
        {
          block_derivatives_equation_variable_laglead_nodeid_t v;
          for (const auto &it2 : it)
            v.emplace_back(get<0>(it2), get<1>(it2), get<2>(it2), f(get<3>(it2)));
          blocks_derivatives.push_back(v);
        }
    
      for (const auto &it : m.dynamic_jacobian)
        dynamic_jacobian[it.first] = f(it.second);
    
      auto convert_derivative_t = [f](derivative_t dt)
        {