Skip to content
Snippets Groups Projects
Select Git revision
  • c74ee8e61bcbcdf40b2f9af4bd524ff44e54ae93
  • master default
  • fcst_shock_decomp
  • 4.5
  • clang+openmp
  • local_state_space_iteration_k
  • dynamic-striated
  • occbin
  • exo_steady_state
  • filter_initial_state
  • declare_vars_in_model_block
  • exceptions
  • rmExtraExo
  • julia
  • error_msg_undeclared_model_vars
  • static_aux_vars
  • slice
  • aux_func
  • penalty
  • 4.4
  • separateM_
  • 4.5.7
  • 4.5.6
  • 4.5.5
  • 4.5.4
  • 4.5.3
  • 4.5.2
  • 4.5.1
  • 4.5.0
  • 4.4.3
  • 4.4.2
  • 4.4.1
  • 4.4.0
  • 4.4-beta1
  • 4.3.3
  • 4.3.2
  • 4.3.1
  • 4.3.0
  • 4.2.5
  • 4.2.4
  • 4.2.3
41 results

DynamicModel.cc

Blame
  • Forked from Dynare / dynare
    Source project has a limited visibility.
    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)
        {