Skip to content
Snippets Groups Projects
Select Git revision
  • 4264befd1dde497aeafcd5cab9fb064d736870f6
  • master default protected
  • alphashapes
  • quadMeshingTools
  • cygwin_conv_path
  • macos_arm64
  • add-transfiniteautomatic-to-geo
  • patch_releases_4_10
  • HierarchicalHDiv
  • isuruf-master-patch-63355
  • hyperbolic
  • hexdom
  • hxt_update
  • jf
  • 1618-pythonocc-and-gmsh-api-integration
  • octreeSizeField
  • hexbl
  • alignIrregularVertices
  • getEdges
  • patch_releases_4_8
  • isuruf-master-patch-51992
  • gmsh_4_11_0
  • gmsh_4_10_5
  • gmsh_4_10_4
  • gmsh_4_10_3
  • gmsh_4_10_2
  • gmsh_4_10_1
  • gmsh_4_10_0
  • gmsh_4_9_5
  • gmsh_4_9_4
  • gmsh_4_9_3
  • gmsh_4_9_2
  • gmsh_4_9_1
  • gmsh_4_9_0
  • gmsh_4_8_4
  • gmsh_4_8_3
  • gmsh_4_8_2
  • gmsh_4_8_1
  • gmsh_4_8_0
  • gmsh_4_7_1
  • gmsh_4_7_0
41 results

Gmsh.tab.cpp

Blame
  • Forked from gmsh / gmsh
    Source project has a limited visibility.
    updater.cpp 1.54 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;
                _ds._state[type].value( (_wu->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;
                _ds._state[type].value( (_wu->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>;