Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • hyteg hyteg
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 35
    • Issues 35
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 3
    • Merge requests 3
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • hyteg
  • hyteghyteg
  • Merge requests
  • !404

Closed
Created Mar 31, 2021 by Marcus Mohr@mohrDeveloper
  • Report abuse
Report abuse

New VectorFunction classes and hierarchy

  • Overview 10
  • Commits 24
  • Pipelines 1
  • Changes 113

The merge will resolve issue #142 (closed). Especially it will bring a new class hierarchy for vector-valued functions. The associated base class provides most of the methods we find in our P1Function and P2Function classes, but allow to directly operate on vector functions, which means we can e.g. write

f.uvw.multElementwise( { f.uvw, outwardNormal.uvw }, l );
f.uvw.assign( { rayleighNumber }, { f.uvw }, l, All );

instead of the previous

f.uvw.u.multElementwise( {f.uvw.u, outwardNormal.uvw.u}, l );
f.uvw.v.multElementwise( {f.uvw.v, outwardNormal.uvw.v}, l );
f.uvw.w.multElementwise( {f.uvw.w, outwardNormal.uvw.w}, l );
f.uvw.u.assign( {rayleighNumber}, {f.uvw.u}, l, All );
f.uvw.v.assign( {rayleighNumber}, {f.uvw.v}, l, All );
f.uvw.w.assign( {rayleighNumber}, {f.uvw.w}, l, All );

Access to indiviudal scalar component functions is supported, e.g. via operator[]. This allows implementing loops based on the return value of the getDimension() method.

for ( uint_t k = 0; k < function.uvw.getDimension(); k++ )
{
  prolongationOperator_.prolongate( function.uvw[k], sourceLevel, flag );
}

which is important, since we do not provide a dummy third component for 2D vector functions.

The implementation relies on CRTP as our scalar functions do and as we discussed for the proposed block functions.

There is a first draft for a VectorToVector operator. But that only provides apply() as method and is not really used, yet.

This merge will bring many changes, so please take a look at it (and approve 😅)

Cheers
Marcus

Assignee
Assign to
Reviewer
Request review from
Time tracking
Source branch: mohr/issue142-mc