Changeset 1950 for XIOS/dev/dev_ym/XIOS_COUPLING/src/node
- Timestamp:
- 10/06/20 10:19:12 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_ym/XIOS_COUPLING/src/node/axis.cpp
r1943 r1950 1806 1806 { 1807 1807 { // send label 1808 // need to transform array of string (no fixed size for string) into array of array of char 1809 // to use connector to transfer 1810 // the strings must have fixed size which the maximum lenght over the string label. 1811 int maxSize=0 ; 1812 for(int i=0; i<label.numElements();i++) 1813 if (maxSize < label(i).size()) maxSize=label(i).size() ; 1814 MPI_Allreduce(MPI_IN_PLACE, &maxSize,1,MPI_INT,MPI_MAX, context->getIntraComm()) ; 1815 maxSize=maxSize+1 ; 1816 CArray<char,2> charArray(maxSize,label.numElements()) ; 1817 for(int j=0; j<label.numElements();j++) 1818 { 1819 const char* str = label(j).c_str() ; 1820 int strSize=label(j).size()+1 ; 1821 for(int i=0; i<strSize; i++) charArray(i,j) = str[i] ; 1822 } 1808 1823 CEventClient event(getType(), EVENT_ID_SEND_DISTRIBUTED_ATTRIBUTE); 1809 1824 CMessage message ; 1810 message<<serverAxisId<<string("label") ; 1811 // something to do ? => convert string label into char ? 1812 //clientToServerConnector_[client]->transfer(2, bounds, client, event,message) ; 1825 message<<serverAxisId<<string("label")<<maxSize ; 1826 scattererConnector.transfer(maxSize, charArray, client, event,message) ; 1813 1827 } 1814 1828 } … … 1837 1851 gathererConnector_->transfer(event, 2, value, 0.); 1838 1852 bounds.resize(2,n) ; 1839 if (bounds.numElements() > 0 ) bounds=CArray<double,2>( bounds.dataFirst(),shape(2,n),neverDeleteData) ;1853 if (bounds.numElements() > 0 ) bounds=CArray<double,2>(value.dataFirst(),shape(2,n),neverDeleteData) ; 1840 1854 } 1841 1855 else if (type=="label") 1842 1856 { 1843 1857 int maxSize ; 1858 for (auto& subEvent : event.subEvents) (*subEvent.buffer) >> maxSize ; 1859 CArray<char,1> value ; 1860 gathererConnector_->transfer(event, maxSize, value, '\0'); 1861 CArray<char,2> charArray(maxSize,n) ; 1862 label.resize(n) ; 1863 if (n>0) 1864 { 1865 charArray=CArray<char,2>(value.dataFirst(),shape(maxSize,n),neverDeleteData) ; 1866 for(int j=0;j<n;j++) 1867 { 1868 int strSize ; 1869 for(int i=0;i<maxSize;i++) 1870 if (charArray(i,j)=='\0') { strSize=i ; break; } 1871 string str(strSize,'\0') ; 1872 for(int i=0;i<strSize;i++) str[i]=charArray(i,j) ; 1873 label(j)=str ; 1874 } 1875 } 1844 1876 } 1845 1877 }
Note: See TracChangeset
for help on using the changeset viewer.