Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef FIELD_CONVERT_HXX
00024 #define FIELD_CONVERT_HXX
00025
00026
00027 #include "MEDMEM_Field.hxx"
00028 #include "MEDMEM_ArrayInterface.hxx"
00029 #include "MEDMEM_ArrayConvert.hxx"
00030
00031 namespace MEDMEM {
00032 class FIELD_;
00033
00034 template <class T> FIELD<T,FullInterlace> *
00035 FieldConvert(const FIELD<T,NoInterlace> & field )
00036 {
00037 typedef typename MEDMEM_ArrayInterface<T,FullInterlace,NoGauss>::Array ArrayFullNo;
00038 typedef typename MEDMEM_ArrayInterface<T,FullInterlace,Gauss>::Array ArrayFullGa;
00039
00040 FIELD<T,FullInterlace> * myField = new FIELD<T,FullInterlace>();
00041 FIELD_ * myField_ = myField;
00042 FIELD_ * field_ = &(const_cast< FIELD<T,NoInterlace> &> (field));
00043 *myField_ = *field_;
00044
00045
00046 if ( field.getGaussPresence() ) {
00047 ArrayFullGa * myArray = ArrayConvert( *(field.getArrayGauss()) );
00048 myField->setArray(myArray);
00049 return myField;
00050 } else {
00051 ArrayFullNo * myArray = ArrayConvert( *(field.getArrayNoGauss()) );
00052 myField->setArray(myArray);
00053 return myField;
00054 }
00055 }
00056
00057 template <class T> FIELD<T,NoInterlace> *
00058 FieldConvert(const FIELD<T,FullInterlace> & field )
00059 {
00060 typedef typename MEDMEM_ArrayInterface<T,NoInterlace,NoGauss>::Array ArrayNoNo;
00061 typedef typename MEDMEM_ArrayInterface<T,NoInterlace,Gauss>::Array ArrayNoGa;
00062
00063
00064 FIELD<T,NoInterlace> * myField = new FIELD<T,NoInterlace>();
00065 FIELD_ * myField_ = myField;
00066 FIELD_ * field_ = &(const_cast< FIELD<T,FullInterlace> &> (field));
00067 *myField_ = *field_;
00068
00069
00070 if ( field.getGaussPresence() ) {
00071 ArrayNoGa * myArray = ArrayConvert( *(field.getArrayGauss()) );
00072 myField->setArray(myArray);
00073 return myField;
00074 } else {
00075 ArrayNoNo * myArray = ArrayConvert( *(field.getArrayNoGauss()) );
00076 myField->setArray(myArray);
00077 return myField;
00078 }
00079
00080 }
00081
00082 template <class T> FIELD<T,FullInterlace> *
00083 FieldConvert(const FIELD<T,NoInterlaceByType> & field )
00084 {
00085 typedef typename MEDMEM_ArrayInterface<T,FullInterlace,NoGauss>::Array ArrayFullNo;
00086 typedef typename MEDMEM_ArrayInterface<T,FullInterlace,Gauss>::Array ArrayFullGa;
00087
00088 FIELD<T,FullInterlace> * myField = new FIELD<T,FullInterlace>();
00089 FIELD_ * myField_ = myField;
00090 FIELD_ * field_ = &(const_cast< FIELD<T,NoInterlaceByType> &> (field));
00091 *myField_ = *field_;
00092
00093
00094 if ( field.getGaussPresence() ) {
00095 ArrayFullGa * myArray = ArrayConvert( *(field.getArrayGauss()) );
00096 myField->setArray(myArray);
00097 return myField;
00098 } else {
00099 ArrayFullNo * myArray = ArrayConvert( *(field.getArrayNoGauss()) );
00100 myField->setArray(myArray);
00101 return myField;
00102 }
00103 }
00104
00105 }
00106 #endif