Skip to content
Snippets Groups Projects
Select Git revision
  • 67ea7b6e8989fdfbbac0aea73aa64dd41bcf460e
  • master default
  • cgnsUnstructured
  • partitioning
  • poppler
  • HighOrderBLCurving
  • gmsh_3_0_4
  • gmsh_3_0_3
  • gmsh_3_0_2
  • gmsh_3_0_1
  • gmsh_3_0_0
  • gmsh_2_16_0
  • gmsh_2_15_0
  • gmsh_2_14_1
  • gmsh_2_14_0
  • gmsh_2_13_2
  • gmsh_2_13_1
  • gmsh_2_12_0
  • gmsh_2_11_0
  • gmsh_2_10_1
  • gmsh_2_10_0
  • gmsh_2_9_3
  • gmsh_2_9_2
  • gmsh_2_9_1
  • gmsh_2_9_0
  • gmsh_2_8_6
26 results

loader.cpp

Blame
  • Forked from gmsh / gmsh
    Source project has a limited visibility.
    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>;