DIC GUI Workflow

Overview

This document describes the workflow for the DIC GUI. The GUI is a graphical user interface for the DIC algorithm. It is written in Python using the tk GUI toolkit.

There are two separate windows for the gui:

  • DIC analysis GUI: responsible for running the DIC analysis and obtaining strain map results. This code only uses data from the camera and the camera log file and exports a strain curve vs the time.

  • Merge dic and UT: responsible for taking the output from the dic analysis (see above) and then merging it with the UT data.

the graphical procedure is outlined in the following diagram.

        flowchart TD
    userDICparams["User Parameters"]
    analysis_json("Analysis setup<br><b>.json</b>")
    gui_analysis["DIC analysis  GUI"]
    gui_merge["Merge DIC & UT <br> GUI"]
    DisplProc["Displacement<br>Processor class"]
    DisplacementToStrainclass["Diplacement to Strain<br> class"]
    result_dic("Marker Displacement<br> result.dic")
    outOptStrainMap("Strain Map<br>(not implemented)")
    excel_image["Strain Data<br> for each image<br>(<b>.csv</b>)"]
    excel_dic("Strain vs time<br><b>.csv</b>")
    foutExcel("<b> Final output</b><br>|time|displacement|force|strain| stress|<br><b>.xlsx</b>")


    subgraph tensile_test["Test results"]
        camera["Camera"]
        utmachine["UT Machine"]
        camera--> inImages & inImagesLog
        utmachine --> inTensileMachine
        inImages("Images<br><b>.png</b>")
        inImagesLog("Images time Log<br><b>.csv or .txt</b>")
        inTensileMachine("Force Displacement<br>Tensile Machine Data<br><b>.csv")
    end

    subgraph sOptionalDisplOutput["Optional DIC output"]
        direction LR
        outOptMarker("Markers (<b>.png</b>)")
        outOptDisp("Displacement (<b>.png</b>)")
        outOptGrid("Grid (<b>.png</b>)")
    end

    subgraph sDICAnalysis["DIC analysis process"]
        direction LR
        gui_analysis
        DisplProc
        DisplacementToStrainclass
    end

    userDICparams   --> gui_analysis
    userDICparams   --> analysis_json
    sDICAnalysis    =====> analysis_json

    inImages        --> gui_analysis
    inImagesLog     --> gui_analysis

    DisplProc                   --> result_dic
    DisplProc                 -..-> sOptionalDisplOutput
    DisplProc                   ==> DisplacementToStrainclass
    DisplacementToStrainclass   --> excel_image
    result_dic                -.-> DisplacementToStrainclass
    DisplacementToStrainclass   --> outOptStrainMap
    gui_analysis                --> DisplProc


    DisplacementToStrainclass   --> excel_dic
    excel_dic                   --> gui_merge

    inTensileMachine --> gui_merge
    gui_merge --> foutExcel


classDef clInput fill:lightgreen,stroke:#333,stroke-width:4px;
class inImages,inImagesLog,inTensileMachine,userDICparams clInput;
classDef outputs fill:#f9f,stroke:#333,stroke-width:4px;
class result_dic,excel_dic,analysis_json,excel_image,foutExcel outputs;
classDef clNotImplemented fill:red,stroke:#333,stroke-width:4px;
class outOptStrainMap clNotImplemented;
classDef clSoftwareClass fill:lightblue,stroke:#333,stroke-width:4px;
class DisplProc,DisplacementToStrainclass clSoftwareClass;


classDef subgraph_padding fill:none,stroke-dasharray: 0 1
class sRigidBodypadding,sRBKinematicspadding subgraph_padding
    

Currently :

  • the DIC analysis GUI is implemented in the examples/dic_gui/tkapp_dic.py file.

  • the Merge dic and UT GUI is implemented in the examples/imada_dic_merge_gui/tkapp_dic_ut_merge.py file.