WarpX icon indicating copy to clipboard operation
WarpX copied to clipboard

[WIP] Input abstract for in situ with Ascent

Open lge0303 opened this issue 3 years ago • 12 comments

Target: develop capability to allow users to input plots setup parameters, Ascent Action file will be generated, read in and performed in situ while run warpx.

This pull request is for a simple test, more functions will be added in. Input example attached here.

Discussions:

  1. Since there are many different kinds of plots, contours, volumes, slice, particles, ..., do we need to go through all of them?

  2. For complicated plot, we need to combine several fields setup in one plot, for example, combine particles and Ez clipped volume in this test. Will we explore this advanced feature? inputs_3d.txt

  3. This is preliminary development, parameters I/O is serial. Parallel will be considered later, I think performance will not be affected much, though.

lge0303 avatar Apr 12 '21 18:04 lge0303

Thank you for the PR! :)

Since there are many different kinds of plots, contours, volumes, slice, particles, ..., do we need to go through all of them?

Let's provide all the ones we documented in our google docs. I think contours, slices, volumes, particles make sense, yes.

For complicated plot, we need to combine several fields setup in one plot, for example, combine particles and Ez clipped volume in this test.

Yes, I would say let's allow this, similar to our ISAV demo case where we had

  • a contoured field
  • a volume rendered field
  • a particle species as scatter plot with glyphs

Let's maybe also add an example to this PR so that we can do example-driven feature additions :)

This is preliminary development, parameters I/O is serial. Parallel will be considered later, I think performance will not be affected much, though.

Already added, just a one-liner to change :-)

ax3l avatar Apr 23 '21 07:04 ax3l

I added more functions to this PR, will push the changes.

Thanks for reminding 😊

From: Axel Huebl @.> Reply-To: ECP-WarpX/WarpX @.> Date: Monday, May 24, 2021 at 11:56 AM To: ECP-WarpX/WarpX @.> Cc: lixin ge @.>, Mention @.***> Subject: Re: [ECP-WarpX/WarpX] Input abstract for in situ with Ascent (#1890)

@ax3l commented on this pull request.


In Source/Diagnostics/Diagnostics.cpphttps://github.com/ECP-WarpX/WarpX/pull/1890#discussion_r638204289:

@@ -243,7 +243,114 @@ Diagnostics::InitBaseData ()

     m_flush_format = std::make_unique<FlushFormatCheckpoint>() ;

 } else if (m_format == "ascent"){

     m_flush_format = std::make_unique<FlushFormatAscent>();
  • } else if (m_format == "sensei"){
  •    std::cout<< " m_diag_name " <<m_diag_name<<std::endl;
    
  •    amrex::ParmParse pp_diag_viz(m_diag_name);
    
  •    int write_yaml_file = 0;
    
  •    pp_diag_viz.query("viz", write_yaml_file);
    
  •    if (write_yaml_file){
    

@lge0303https://github.com/lge0303 did you push the changes you mentioned to the PR's branch? I still see the old version on GitHub :)

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://github.com/ECP-WarpX/WarpX/pull/1890#discussion_r638204289, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ADZAQ5NUPKFJC4VM4WQN3JLTPKOMNANCNFSM42Z2FXVA.

lge0303 avatar May 24 '21 20:05 lge0303

@ax3l I'm adding a test case for this input abstract development. I want to combine all the plot functions in this test. I tried all the cases, except Revi's test case, in our google driver https://drive.google.com/drive/folders/1ZPzNgR6mzi_zuKOYwcE6l0-mFywelB9U. None of them provided a satisfactory plot. I prefer use the one you showed ISAV20. Could you give me the input and ascent_action.yaml files? Thank you very much!

lge0303 avatar Jun 07 '21 16:06 lge0303

Hi @lge0303, the ISAV video is in the same google drive, but we had to apply a hack from #1499. I think ~jmlarson1~ @mclarsen mentioned that that transformation is now also available in a regular Ascent release, so we can squeeze on the fly...

ax3l avatar Jun 08 '21 03:06 ax3l

I think @jmlarson1 mentioned that that transformation is now also available in a regular Ascent release, so we can squeeze on the fly...

Hi @ax3l . Was the wrong name was tagged? If not, can you clarify the transformation?

jmlarson1 avatar Jun 08 '21 12:06 jmlarson1

Hi @jmlarson1, ouch - I am sorry. Yes, I meant to tag @mclarsen :) (Please feel free to unsubscribe from the issue Jeffrey, so we don't spam you with notifications :) )

ax3l avatar Jun 08 '21 18:06 ax3l

Correct, the squeeze feature is now in our release.

mclarsen avatar Jun 08 '21 20:06 mclarsen

@mclarsen What's the syntax should I put in ascent_actions.yaml in order to use the tranformation?

lge0303 avatar Jun 08 '21 21:06 lge0303

Its its a two phase process. First you have to create a filter that scales the data set along the elongated axis:

- 
  action: "add_pipelines"
  pipelines: 
    pl1: 
      f1: 
        type: "scale"
        params: 
          x_scale: 1.0
          y_scale: 1.0
          z_scale: 0.5
- 
  action: "add_scenes"
  scenes: 
    s1: 
      plots: 
        p1: 
          type: "pseudocolor"
          field: "braid"
          pipeline: "pl1"
      renders: 
        r1: 
          image_prefix: "example_image"
          axis_scale_z: 2.0

This would cut the z axis in half. The second phase it to tell the rendering about the different units so the annotations are correctly written for the scaled axis. In this case, we scaled the z axis by 0.5, so we have to tell the render to unscale it with the inverse, i.e. 2.0

mclarsen avatar Jun 08 '21 22:06 mclarsen

@mclarsen got it, Thanks!!!

lge0303 avatar Jun 09 '21 05:06 lge0303

@lge0303 do you have time to continue on this PR? :)

ax3l avatar Jun 28 '21 23:06 ax3l

@ax3l Should this PR be closed?

RemiLehe avatar Jul 30 '24 18:07 RemiLehe