Changeset 369 for XIOS/trunk/src/interface/c_attr/icdomain_attr.cpp
- Timestamp:
- 10/16/12 13:04:44 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/interface/c_attr/icdomain_attr.cpp
r352 r369 11 11 #include "icutil.hpp" 12 12 #include "timer.hpp" 13 #include " domain.hpp"13 #include "node_type.hpp" 14 14 15 15 extern "C" … … 33 33 void cxios_set_domain_data_i_index(domain_Ptr domain_hdl, int* data_i_index, int extent1) 34 34 { 35 CTimer::get("XIOS").resume(); 36 ARRAY(int,1) array_tmp(new CArray<int,1>(boost::extents[extent1])); 37 std::copy(data_i_index, &(data_i_index[array_tmp->num_elements()]), array_tmp->data()); 38 domain_hdl->data_i_index.setValue(array_tmp); 35 CTimer::get("XIOS").resume(); 36 CArray<int,1> tmp(data_i_index,shape(extent1),neverDeleteData) ; 37 domain_hdl->data_i_index.reference(tmp.copy()); 39 38 domain_hdl->sendAttributToServer(domain_hdl->data_i_index); 40 39 } … … 42 41 void cxios_get_domain_data_i_index(domain_Ptr domain_hdl, int* data_i_index, int extent1) 43 42 { 44 if (!array_copy(domain_hdl->data_i_index.getValue(), data_i_index, extent1))45 ERROR("void cxios_set_domain_data_i_index(domain_Ptr domain_hdl, int* data_i_index, int extent1)",<<"Output array size is not conform to array size attribute");43 CArray<int,1> tmp(data_i_index,shape(extent1),neverDeleteData) ; 44 tmp=domain_hdl->data_i_index ; 46 45 CTimer::get("XIOS").suspend(); 47 46 } … … 64 63 void cxios_set_domain_data_j_index(domain_Ptr domain_hdl, int* data_j_index, int extent1) 65 64 { 66 CTimer::get("XIOS").resume(); 67 ARRAY(int,1) array_tmp(new CArray<int,1>(boost::extents[extent1])); 68 std::copy(data_j_index, &(data_j_index[array_tmp->num_elements()]), array_tmp->data()); 69 domain_hdl->data_j_index.setValue(array_tmp); 65 CTimer::get("XIOS").resume(); 66 CArray<int,1> tmp(data_j_index,shape(extent1),neverDeleteData) ; 67 domain_hdl->data_j_index.reference(tmp.copy()); 70 68 domain_hdl->sendAttributToServer(domain_hdl->data_j_index); 71 69 } … … 73 71 void cxios_get_domain_data_j_index(domain_Ptr domain_hdl, int* data_j_index, int extent1) 74 72 { 75 if (!array_copy(domain_hdl->data_j_index.getValue(), data_j_index, extent1))76 ERROR("void cxios_set_domain_data_j_index(domain_Ptr domain_hdl, int* data_j_index, int extent1)",<<"Output array size is not conform to array size attribute");73 CArray<int,1> tmp(data_j_index,shape(extent1),neverDeleteData) ; 74 tmp=domain_hdl->data_j_index ; 77 75 CTimer::get("XIOS").suspend(); 78 76 } … … 212 210 void cxios_set_domain_latvalue(domain_Ptr domain_hdl, double* latvalue, int extent1) 213 211 { 214 CTimer::get("XIOS").resume(); 215 ARRAY(double,1) array_tmp(new CArray<double,1>(boost::extents[extent1])); 216 std::copy(latvalue, &(latvalue[array_tmp->num_elements()]), array_tmp->data()); 217 domain_hdl->latvalue.setValue(array_tmp); 212 CTimer::get("XIOS").resume(); 213 CArray<double,1> tmp(latvalue,shape(extent1),neverDeleteData) ; 214 domain_hdl->latvalue.reference(tmp.copy()); 218 215 domain_hdl->sendAttributToServer(domain_hdl->latvalue); 219 216 } … … 221 218 void cxios_get_domain_latvalue(domain_Ptr domain_hdl, double* latvalue, int extent1) 222 219 { 223 if (!array_copy(domain_hdl->latvalue.getValue(), latvalue, extent1))224 ERROR("void cxios_set_domain_latvalue(domain_Ptr domain_hdl, double* latvalue, int extent1)",<<"Output array size is not conform to array size attribute");220 CArray<double,1> tmp(latvalue,shape(extent1),neverDeleteData) ; 221 tmp=domain_hdl->latvalue ; 225 222 CTimer::get("XIOS").suspend(); 226 223 } … … 248 245 void cxios_set_domain_lonvalue(domain_Ptr domain_hdl, double* lonvalue, int extent1) 249 246 { 250 CTimer::get("XIOS").resume(); 251 ARRAY(double,1) array_tmp(new CArray<double,1>(boost::extents[extent1])); 252 std::copy(lonvalue, &(lonvalue[array_tmp->num_elements()]), array_tmp->data()); 253 domain_hdl->lonvalue.setValue(array_tmp); 247 CTimer::get("XIOS").resume(); 248 CArray<double,1> tmp(lonvalue,shape(extent1),neverDeleteData) ; 249 domain_hdl->lonvalue.reference(tmp.copy()); 254 250 domain_hdl->sendAttributToServer(domain_hdl->lonvalue); 255 251 } … … 257 253 void cxios_get_domain_lonvalue(domain_Ptr domain_hdl, double* lonvalue, int extent1) 258 254 { 259 if (!array_copy(domain_hdl->lonvalue.getValue(), lonvalue, extent1))260 ERROR("void cxios_set_domain_lonvalue(domain_Ptr domain_hdl, double* lonvalue, int extent1)",<<"Output array size is not conform to array size attribute");255 CArray<double,1> tmp(lonvalue,shape(extent1),neverDeleteData) ; 256 tmp=domain_hdl->lonvalue ; 261 257 CTimer::get("XIOS").suspend(); 262 258 } … … 265 261 void cxios_set_domain_mask(domain_Ptr domain_hdl, bool* mask, int extent1, int extent2) 266 262 { 267 CTimer::get("XIOS").resume(); 268 ARRAY(bool,2) array_tmp(new CArray<bool,2>(boost::extents[extent1][extent2])); 269 std::copy(mask, &(mask[array_tmp->num_elements()]), array_tmp->data()); 270 domain_hdl->mask.setValue(array_tmp); 263 CTimer::get("XIOS").resume(); 264 CArray<bool,2> tmp(mask,shape(extent1,extent2),neverDeleteData) ; 265 domain_hdl->mask.reference(tmp.copy()); 271 266 domain_hdl->sendAttributToServer(domain_hdl->mask); 272 267 } … … 274 269 void cxios_get_domain_mask(domain_Ptr domain_hdl, bool* mask, int extent1, int extent2) 275 270 { 276 if (!array_copy(domain_hdl->mask.getValue(), mask, extent1, extent2))277 ERROR("void cxios_set_domain_mask(domain_Ptr domain_hdl, bool* mask, int extent1, int extent2)",<<"Output array size is not conform to array size attribute");271 CArray<bool,2> tmp(mask,shape(extent1,extent2),neverDeleteData) ; 272 tmp=domain_hdl->mask ; 278 273 CTimer::get("XIOS").suspend(); 279 274 }
Note: See TracChangeset
for help on using the changeset viewer.