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.
  #
  ###############################################################################
  
  import conduit
  import numpy as np
  
  #
  # Conduit supports zero copy, allowing a Conduit Node to describe and
  # point to externally allocated data.
  # 
  # set_external() is method used to zero copy data into a Node
  #
  n = conduit.Node()
  a1 = np.zeros(10, dtype=np.int32)
  
  a1[0] = 0
  a1[1] = 1
  
  for i in range(2,10):
     a1[i] = a1[i-2] + a1[i-1]
  
  
  # create another array to demo difference 
  # between set and set_external
  a2 = np.zeros(10, dtype=np.int32) 
  
  a2[0] = 0
  a2[1] = 1
  
  for i in range(2,10):
     a2[i] = a2[i-2] + a2[i-1]
  
  n["fib_deep_copy"].set(a1);
  n["fib_shallow_copy"].set_external(a2);
  
  a1[-1] = -1
  a2[-1] = -1
  
  print(n.to_yaml())