Ignore:
Timestamp:
10/16/12 13:04:44 (12 years ago)
Author:
ymipsl
Message:

Major Update

  • redesign Type and attribute manipulation
  • add enumerate type and attribute
  • use blitz class array instead of boost class array

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/interface/c/icdata.cpp

    r361 r369  
    2323#include <mpi.h> 
    2424#include "timer.hpp" 
     25#include "array_new.hpp" 
    2526 
    2627extern "C" 
     
    111112      CTimer::get("XIOS send field").resume() ; 
    112113      CContext* context = CContext::getCurrent() ; 
    113 //      boost::const_multi_array_ref<double, 1> array_(data_k8, 
    114 //          boost::extents [data_Xsize], 
    115 //          boost::fortran_storage_order()); 
    116       ARRAY(double, 1) data(new CArray<double, 1>(boost::extents [data_Xsize])); 
    117       std::copy(data_k8, &(data_k8[data->num_elements()]), data->data()); 
    118        
    119 //      dtreat->write_data(fieldid_str, data); 
    120       CField::get(fieldid_str)->setData(data) ; 
     114 
     115      CArray<double,(StdSize)1> data(data_k8,shape(data_Xsize),neverDeleteData) ; 
     116      CField::get(fieldid_str)->setData(data) ; 
     117      CField toto ; 
     118      toto.setData(data) ; 
    121119      CTimer::get("XIOS send field").suspend() ; 
    122120      CTimer::get("XIOS").suspend() ; 
     
    132130      CContext* context = CContext::getCurrent() ; 
    133131       
    134 //      boost::const_multi_array_ref<double, 2> array_(data_k8, 
    135 //          boost::extents [data_Xsize][data_Ysize], 
    136 //          boost::fortran_storage_order()); 
    137       ARRAY(double, 2) data(new CArray<double, 2>(boost::extents [data_Xsize][data_Ysize])); 
    138       std::copy(data_k8, &(data_k8[data->num_elements()]), data->data()); 
    139 //      dtreat->write_data(fieldid_str, data); 
     132      CArray<double,2>data(data_k8,shape(data_Xsize,data_Ysize),neverDeleteData) ; 
    140133      CField::get(fieldid_str)->setData(data) ; 
    141134      CTimer::get("XIOS send field").suspend() ; 
     
    151144      CTimer::get("XIOS send field").resume() ; 
    152145      CContext* context = CContext::getCurrent() ; 
    153 //      boost::const_multi_array_ref<double, 3> array_(data_k8, 
    154 //          boost::extents [data_Xsize][data_Ysize][data_Zsize], 
    155 //          boost::fortran_storage_order()); 
    156       ARRAY(double, 3) data(new CArray<double, 3>(boost::extents [data_Xsize][data_Ysize][data_Zsize])); 
    157       std::copy(data_k8, &(data_k8[data->num_elements()]), data->data()); 
    158 //      dtreat->write_data(fieldid_str, data); 
     146 
     147      CArray<double,3>data(data_k8,shape(data_Xsize,data_Ysize,data_Zsize),neverDeleteData) ; 
    159148      CField::get(fieldid_str)->setData(data) ; 
    160149      CTimer::get("XIOS send field").suspend() ; 
     
    170159      CTimer::get("XIOS send field").resume() ; 
    171160      CContext* context = CContext::getCurrent() ; 
    172 //      boost::const_multi_array_ref<float, 1> array_(data_k4, 
    173 //          boost::extents [data_Xsize], 
    174 //          boost::fortran_storage_order()); 
    175 //      ARRAY(float, 1) data(new CArray<float, 1>(boost::extents [data_Xsize])); 
    176 //      std::copy(data_k4, &(data_k4[data->num_elements()]), data->data()); 
    177 //      dtreat->write_data(fieldid_str, data); 
    178       ARRAY(double, 1) data(new CArray<double, 1>(boost::extents [data_Xsize])); 
    179       double* ptr_data=data->data() ;  
    180       for(int i=0;i<data->num_elements();i++) ptr_data[i]=data_k4[i]; 
     161      CArray<float,1> data_tmp(data_k4,shape(data_Xsize),neverDeleteData) ; 
     162      CArray<double,1> data(data_Xsize) ; 
     163      data=data_tmp ; 
    181164      CField::get(fieldid_str)->setData(data) ; 
    182165      CTimer::get("XIOS send field").suspend() ; 
     
    192175      CTimer::get("XIOS send field").resume() ; 
    193176      CContext* context = CContext::getCurrent() ; 
    194 //      boost::const_multi_array_ref<float, 2> array_(data_k4, 
    195 //          boost::extents [data_Xsize][data_Ysize], 
    196 //          boost::fortran_storage_order()); 
    197 //      ARRAY(float, 2) data(new CArray<float, 2>(boost::extents [data_Xsize][data_Ysize])); 
    198 //      std::copy(data_k4, &(data_k4[data->num_elements()]), data->data()); 
    199 //      dtreat->write_data(fieldid_str, data); 
    200       ARRAY(double, 2) data(new CArray<double, 2>(boost::extents [data_Xsize][data_Ysize])); 
    201       double* ptr_data=data->data() ;  
    202       for(int i=0;i<data->num_elements();i++) ptr_data[i]=data_k4[i]; 
     177      CArray<float,2> data_tmp(data_k4,shape(data_Xsize,data_Ysize),neverDeleteData) ; 
     178      CArray<double,2> data(data_Xsize,data_Ysize) ; 
     179      data=data_tmp ; 
    203180      CField::get(fieldid_str)->setData(data) ; 
    204181      CTimer::get("XIOS send field").suspend() ; 
     
    215192      CTimer::get("XIOS send field").resume() ; 
    216193      CContext* context = CContext::getCurrent() ; 
    217       
    218 //      boost::const_multi_array_ref<float, 3> array_(data_k4, 
    219 //          boost::extents [data_Xsize][data_Ysize][data_Zsize], 
    220 //          boost::fortran_storage_order()); 
    221 //      ARRAY(float, 3) data(new CArray<float, 3>(boost::extents [data_Xsize][data_Ysize][data_Zsize])); 
    222 //      std::copy(data_k4, &(data_k4[data->num_elements()]), data->data()); 
    223 //      dtreat->write_data(fieldid_str, data); 
    224       ARRAY(double, 3) data(new CArray<double, 3>(boost::extents [data_Xsize][data_Ysize][data_Zsize])); 
    225       double* ptr_data=data->data() ;  
    226       for(int i=0;i<data->num_elements();i++) ptr_data[i]=data_k4[i]; 
     194 
     195      CArray<float,3> data_tmp(data_k4,shape(data_Xsize,data_Ysize,data_Zsize),neverDeleteData) ; 
     196      CArray<double,3> data(data_Xsize,data_Ysize,data_Zsize) ; 
     197      data=data_tmp ; 
     198  
    227199      CField::get(fieldid_str)->setData(data) ; 
    228200      CTimer::get("XIOS send field").suspend() ; 
Note: See TracChangeset for help on using the changeset viewer.