Skip to content

ASTE with time dependent functions #176

@fsimonis

Description

@fsimonis

ASTE is a great tool to analyze the error of a single map operation.
To simulate multiple time windows, we need to generate a complete mesh for every time step. This is not only very space inefficient, but also results in a lot of unnecessary IO.

It would be a great simple tool for testing transient mappings for functions that depend on t, as well as testing mappings with a time independent function to study their runtime stability over time.

Currently we have the following data flow:

flowchart TB
    IM[Mesh] -->|"eval f(x,y,z)"| IMD
    IMD[Mesh+Data] --> |partition| IMDP
    OM[Mesh] --> |partition| OMP
    OMP[Partitioned Mesh] --> |B Mesh| ASTE
    IMDP[Partitioned Mesh+Data] --> |A Mesh| ASTE
    ASTE(ASTE)--> |map Data form A to B| MMP
    MMP[Paritioned Mesh+Data] --> MM
    MM[Mesh+Data]
Loading

We could pass the function directly to ASTE (preciceMap) and evaluate it on the input mesh using VTK.
Adding the time t as further input allows us to evaluate this for each time step/window without the need to read a completely new mesh.
Time window size and max time windows are configurable in the configuration file.

flowchart TB
    IM[Mesh] --> |partition| IMDP
    OM[Mesh] --> |partition| OMP
    OMP[Partitioned Mesh] --> BIM
    IMDP[Partitioned Mesh] -->  AIM
    F("f(x,y,z,t)") --> AF


    subgraph ASTEA [Participant A]
        direction TB
        AF(Function) --> |"apply"| AIMD
        AIM[A Mesh] -->  AIMD
        AIMD[A Mesh + Data] --> |"writeData()"| AP
        AP(preCICE)
    end

    subgraph ASTEB [Participant B]
        direction TB
        BP(preCICE) --> |"readData()"| BIMD
        BIM[B Mesh] --> BIMD[B Mesh + Data]
    end
    AP -.-> BP

    BIMD --> MMP

    MMP[Paritioned Mesh+Data] --> MM
    MM[Mesh+Data] --> MME[Mesh+Error]
    F --> |calc error| MME
Loading

Taking this one step further, using the function as input for both participants allows us to calculate the error directly in ASTE.

flowchart TB
    IM[Mesh] --> |partition| IMDP
    OM[Mesh] --> |partition| OMP
    OMP[Partitioned Mesh] --> BIM
    IMDP[Partitioned Mesh] -->  AIM
    F("f(x,y,z,t)") --> AF
    F --> BF

    MMP[Paritioned Mesh+Error] --> MM
    MM[Mesh+Error]

    subgraph ASTEA [Participant A]
        direction TB
        AF(Function) --> |"apply"| AIMD
        AIM[A Mesh] -->  AIMD
        AIMD[A Mesh + Data] --> |"writeData()"| AP
        AP(preCICE)
    end

    subgraph ASTEB [Participant B]
        direction TB
        BF(Function) --> |"|f(x,y,z,u) - d(x,y,z)|"| BE
        BP(preCICE) --> |"readData()"| BIMD
        BIM[B Mesh] --> BIMD["B Mesh + Data d"]
        BIMD --> BE
        BE[B Mesh + Error]
    end
    BE --> MMP
    AP -.-> BP
Loading

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions