Skip to content
Snippets Groups Projects
Select Git revision
  • cd11756dc7f25e770fbb58b968ff75ba13594359
  • master default protected
  • suffa/cumulantfourth_order_correction_with_psm
  • mr_refactor_wfb
  • Sparse
  • WallLaw
  • improved_comm
  • release/1.3.7
  • release/1.3.6
  • release/1.3.5
  • release/1.3.4
  • release/1.3.3
  • release/1.3.2
  • release/1.3.1
  • release/1.3
  • release/1.2
  • release/1.1.1
  • release/1.1
  • release/1.0.1
  • release/1.0
  • release/0.4.4
  • release/0.4.3
  • release/0.4.2
  • release/0.4.1
  • release/0.4.0
  • release/0.3.4
  • release/0.3.3
27 results

simplificationfactory.py

Blame
  • simplificationfactory.py 1.68 KiB
    from functools import partial
    import sympy as sp
    
    from lbmpy.innerloopsplit import createLbmSplitGroups
    from lbmpy.methods.cumulantbased import CumulantBasedLbMethod
    from pystencils.equationcollection.simplifications import applyOnAllEquations, \
        subexpressionSubstitutionInMainEquations, sympyCSE, addSubexpressionsForDivisions
    
    
    def createSimplificationStrategy(lbmMethod, doCseInOpposingDirections=False, doOverallCse=False, splitInnerLoop=False):
        from pystencils.equationcollection import SimplificationStrategy
        from lbmpy.methods import MomentBasedLbMethod
        from lbmpy.methods.momentbasedsimplifications import replaceSecondOrderVelocityProducts, \
            factorDensityAfterFactoringRelaxationTimes, factorRelaxationRates, cseInOpposingDirections, \
            replaceCommonQuadraticAndConstantTerm, replaceDensityAndVelocity
    
        s = SimplificationStrategy()
    
        expand = partial(applyOnAllEquations, operation=sp.expand)
        expand.__name__ = "expand"
    
        if isinstance(lbmMethod, MomentBasedLbMethod):
            s.add(expand)
            s.add(replaceSecondOrderVelocityProducts)
            s.add(expand)
            s.add(factorRelaxationRates)
            s.add(replaceDensityAndVelocity)
            s.add(replaceCommonQuadraticAndConstantTerm)
            s.add(factorDensityAfterFactoringRelaxationTimes)
            s.add(subexpressionSubstitutionInMainEquations)
            if splitInnerLoop:
                s.add(createLbmSplitGroups)
        elif isinstance(lbmMethod, CumulantBasedLbMethod):
            s.add(expand)
            s.add(factorRelaxationRates)
    
        s.add(addSubexpressionsForDivisions)
    
        if doCseInOpposingDirections:
            s.add(cseInOpposingDirections)
        if doOverallCse:
            s.add(sympyCSE)
    
        return s