text: //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  // Copyright (c) 2015-2019, Lawrence Livermore National Security, LLC.
  //
  // Produced at the Lawrence Livermore National Laboratory
  //
  // LLNL-CODE-716457
  //
  // All rights reserved.
  //
  // This file is part of Ascent.
  //
  // For details, see: http://ascent.readthedocs.io/.
  //
  // Please also read ascent/LICENSE
  //
  // Redistribution and use in source and binary forms, with or without
  // modification, are permitted provided that the following conditions are met:
  //
  // * Redistributions of source code must retain the above copyright notice,
  //   this list of conditions and the disclaimer below.
  //
  // * Redistributions in binary form must reproduce the above copyright notice,
  //   this list of conditions and the disclaimer (as noted below) in the
  //   documentation and/or other materials provided with the distribution.
  //
  // * Neither the name of the LLNS/LLNL nor the names of its contributors may
  //   be used to endorse or promote products derived from this software without
  //   specific prior written permission.
  //
  // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  // ARE DISCLAIMED. IN NO EVENT SHALL LAWRENCE LIVERMORE NATIONAL SECURITY,
  // LLC, THE U.S. DEPARTMENT OF ENERGY OR CONTRIBUTORS BE LIABLE FOR ANY
  // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  // DAMAGES  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
  // IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  // POSSIBILITY OF SUCH DAMAGE.
  //
  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
  
  //-----------------------------------------------------------------------------
  ///
  /// file: ascent_scene_example1.cpp
  ///
  //-----------------------------------------------------------------------------
  #include <iostream>
  #include "ascent.hpp"
  #include "conduit_blueprint.hpp"
  
  #include "ascent_tutorial_cpp_utils.hpp"
  
  using namespace ascent;
  using namespace conduit;
  
  int main(int argc, char **argv)
  {
  
      Node mesh;
      // (call helper to create example tet mesh as in blueprint example 2)
      tutorial_tets_example(mesh);
  
      // Use Ascent with multiple scenes to render different variables
  
      Ascent a;
  
      // open ascent
      a.open();
  
      // publish mesh to ascent
      a.publish(mesh);
  
      // setup actions
      Node actions;
      Node &add_act = actions.append();
      add_act["action"] = "add_scenes";
  
      // declare two scenes (s1 and s2) to render the dataset    
      Node &scenes = add_act["scenes"];
      
      // our first scene (named 's1') will render the field 'var1'
      // to the file out_scene_ex1_render_var1.png
      scenes["s1/plots/p1/type"] = "pseudocolor";
      scenes["s1/plots/p1/field"] = "var1";
      scenes["s1/image_prefix"] = "ascent_output_render_var1";
  
      // our second scene (named 's2') will render the field 'var2'
      // to the file out_scene_ex1_render_var2.png
      scenes["s2/plots/p1/type"] = "pseudocolor";
      scenes["s2/plots/p1/field"] = "var2";
      scenes["s2/image_prefix"] = "ascent_output_render_var2";
  
      // print our full actions tree
      std::cout << actions.to_yaml() << std::endl;
  
      // execute the actions
      a.execute(actions);
  
      a.close();
  }
  
  
  
  