Skip to content
Snippets Groups Projects
Select Git revision
  • 3c44d0edd2a393cf69ae90aaceb725c11a353926
  • master default protected
  • devel
  • MC/hide_eigen_sol
  • compare_at_gauss_points
  • mixed_interface_fix
  • detect-gmsh-api-version
  • MC/mpi_support
  • MC/volsrcs
  • fix-gmsh-master
  • find-gmsh
  • MC/hipify
  • v0.3.0
  • v0.2.0
  • v0.1.0
15 results

lua_api.md

Blame
  • updater.cpp 1.71 KiB
    #include "updater.h"
    #include "../wave/updater.h"
    
    template<Physic T_Physic>
    void DataUpdater<T_Physic>::update(Type type, const ModelStateEvaluator& m)
    {
        if(_ds._isUpToDate[type]){return;}
    
        std::array<bool,4> waveNeedToBeUpToDate = {false,false,false,false};
        switch (type)
        {
            case Type::F:
                waveNeedToBeUpToDate[Type::F] = true;
                for (unsigned int f = 0; f < _nf; f++)
                {
                    _ds._state[type].value(f, (_wu[f].get(waveNeedToBeUpToDate,m)).state(type) );
                }
                break;
            case Type::A: case Type::D:
                update(Type::F,m);
                _ds._state[type] = _objective->update(type,_ds);
                break;
            case Type::PF:
                waveNeedToBeUpToDate[Type::PF] = true;
                for (unsigned int f = 0; f < _nf; f++)
                {
                    _ds._state[type].value(f, (_wu[f].get(waveNeedToBeUpToDate,m)).state(type) );
                }
                break;
            case Type::PA:
                update(Type::F,m);
                update(Type::PF,m);
                _ds._state[type] = _objective->update(type,_ds);
                break;
        }
    
        _ds._isUpToDate[type] = true;
    }
    
    template<Physic T_Physic>
    const DataStateEvaluator<T_Physic>& DataUpdater<T_Physic>::get(std::array<bool,5> needToBeUpToDate, const ModelStateEvaluator& m)
    {
        for (unsigned int t = 0; t < 5; t++)
        {
            Type type = ((Type) t);
            if(needToBeUpToDate[type]){update(type,m);}
        }
        return _ds;
    }
    
    template<Physic T_Physic>
    void DataUpdater<T_Physic>::isObsolete(std::array<bool,5> NoMoreUpToDate)
    {
        for (unsigned int t = 0; t < 5; t++)
        {
            if(NoMoreUpToDate[t]){_ds._isUpToDate[t] = false;}
        }
    }
    
    template class DataUpdater<Physic::acoustic>;