Ignore:
Timestamp:
05/12/20 11:52:13 (4 years ago)
Author:
ymipsl
Message:

XIOS coupling branch
Some updates.

First coupling test is beginning to work...

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/array_new.hpp

    r1622 r1875  
    77#include "buffer_out.hpp" 
    88#include "message.hpp" 
     9#include "tv_data_display.h" 
     10#ifdef __GNUC__ 
     11#include <typeinfo> 
     12#include <cxxabi.h> 
     13#endif 
    914#include <cmath> 
    1015 
    1116using namespace blitz; 
    1217BZ_DECLARE_FUNCTION(round) 
     18 
     19namespace xios 
     20{ 
     21  template <typename T_numtype,int N_rank> 
     22  class CArray ; 
     23 
     24 template <typename T_numtype,int N_rank> 
     25 int TV_ttf_display_type ( const CArray<T_numtype, N_rank>* array ) ; 
     26} 
     27 
     28template <typename T_numtype,int N_rank> 
     29int TV_ttf_display_type ( const xios::CArray<T_numtype, N_rank>* array ) ; 
    1330 
    1431namespace xios 
     
    1936    private: 
    2037      bool initialized; 
    21  
     38      void inc_symbol(void) 
     39      { 
     40        TV_ttf_display_type(this); 
     41      } 
    2242    public: 
    2343      typedef typename Array<T_numtype,N_rank>::T_default_storage T_default_storage; 
     
    2747        : Array<T_numtype,N_rank>(expr) 
    2848        , initialized(true) 
    29       {} 
     49      { bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol(); } 
    3050 
    3151      CArray(GeneralArrayStorage<N_rank> storage = T_default_storage()) 
    3252        : Array<T_numtype,N_rank>(storage) 
    3353        , initialized(false) 
    34       {} 
     54      { bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    3555 
    3656      explicit CArray(int length0, GeneralArrayStorage<N_rank> storage = T_default_storage()) 
    3757        : Array<T_numtype,N_rank>(length0, storage) 
    3858        , initialized(true) 
    39       {} 
     59      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    4060 
    4161      CArray(int length0, int length1, GeneralArrayStorage<N_rank> storage = T_default_storage()) 
    4262        : Array<T_numtype,N_rank>(length0, length1, storage) 
    4363        , initialized(true) 
    44       {} 
     64      { bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    4565 
    4666      CArray(int length0, int length1, int length2, GeneralArrayStorage<N_rank> storage = T_default_storage()) 
    4767        : Array<T_numtype,N_rank>(length0, length1, length2, storage) 
    4868        , initialized(true) 
    49       {} 
     69      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    5070 
    5171      CArray(int length0, int length1, int length2, int length3, GeneralArrayStorage<N_rank> storage = T_default_storage()) 
    5272        : Array<T_numtype,N_rank>(length0, length1, length2, length3, storage) 
    5373        , initialized(true) 
    54       {} 
     74      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    5575 
    5676      CArray(int length0, int length1, int length2, int length3, int length4, GeneralArrayStorage<N_rank> storage = T_default_storage()) 
    5777        : Array<T_numtype,N_rank>(length0,length1, length2, length3, length4, storage) 
    5878        , initialized(true) 
    59       {} 
     79      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    6080 
    6181      CArray(int length0, int length1, int length2, int length3, int length4, int length5, GeneralArrayStorage<N_rank> storage = T_default_storage()) 
    6282        : Array<T_numtype,N_rank>(length0, length1, length2, length3, length4, length5, storage) 
    6383        , initialized(true) 
    64       {} 
     84      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    6585 
    6686      CArray(int length0, int length1, int length2, int length3, int length4, int length5, int length6, GeneralArrayStorage<N_rank> storage = T_default_storage()) 
    6787        : Array<T_numtype,N_rank>(length0, length1, length2, length3, length4, length5, length6, storage) 
    6888        , initialized(true) 
    69       {} 
     89      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    7090 
    7191      CArray(int length0, int length1, int length2, int length3, int length4, int length5, int length6, int length7, 
     
    7393        : Array<T_numtype,N_rank>(length0, length1, length2, length3, length4, length5, length6, length7, storage) 
    7494        , initialized(true) 
    75       {} 
     95      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    7696 
    7797      CArray(int length0, int length1, int length2, int length3, int length4, int length5, int length6, 
     
    7999       : Array<T_numtype,N_rank>(length0, length1, length2, length3, length4, length5, length6, length7, length8, storage) 
    80100       , initialized(true) 
    81       {} 
     101      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    82102 
    83103      CArray(int length0, int length1, int length2, int length3, int length4, 
     
    85105        : Array<T_numtype,N_rank>(length0, length1, length2, length3, length4, length5, length6, length7, length8, length9, storage) 
    86106        , initialized(true) 
    87       {} 
     107      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    88108 
    89109      CArray(int length0, int length1, int length2, int length3, int length4, int length5, int length6, 
     
    91111       : Array<T_numtype,N_rank>(length0, length1, length2, length3, length4, length5, length6, length7, length8, length9, length10, storage) 
    92112       , initialized(true) 
    93       {} 
     113      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    94114 
    95115      CArray(T_numtype* restrict dataFirst, TinyVector<int, N_rank> shape, GeneralArrayStorage<N_rank> storage = T_default_storage()) 
    96116        : Array<T_numtype,N_rank>(dataFirst, shape, storage) 
    97117        , initialized(true) 
    98       {} 
     118      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    99119 
    100120      CArray(T_numtype* restrict dataFirst, TinyVector<int, N_rank> shape, TinyVector<diffType, N_rank> stride, 
     
    102122        : Array<T_numtype,N_rank>(dataFirst, shape, stride, storage) 
    103123        , initialized(true) 
    104       {} 
     124      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    105125 
    106126      CArray(T_numtype* restrict dataFirst, TinyVector<int, N_rank> shape, preexistingMemoryPolicy deletionPolicy, 
     
    108128        : Array<T_numtype,N_rank>(dataFirst, shape, deletionPolicy, storage) 
    109129        , initialized(true) 
    110       {} 
     130      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    111131 
    112132      CArray(T_numtype* restrict dataFirst, TinyVector<int, N_rank> shape, TinyVector<diffType, N_rank> stride, 
     
    114134        : Array<T_numtype,N_rank>(dataFirst, shape, stride, deletionPolicy, storage) 
    115135        , initialized(true) 
    116       {} 
     136      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    117137 
    118138      CArray(const TinyVector<int, N_rank>& extent, GeneralArrayStorage<N_rank> storage = T_default_storage()) 
    119139        : Array<T_numtype,N_rank>(extent, storage) 
    120140        , initialized(true) 
    121       {} 
     141      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    122142 
    123143      CArray(const TinyVector<int, N_rank>& lbounds, const TinyVector<int, N_rank>& extent, 
     
    125145        : Array<T_numtype,N_rank>(lbounds, extent, storage) 
    126146        , initialized(true) 
    127       {} 
     147      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    128148 
    129149      CArray(Range r0, GeneralArrayStorage<N_rank> storage = T_default_storage()) 
    130150        : Array<T_numtype,N_rank>(r0, storage) 
    131151        , initialized(true) 
    132       {} 
     152      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    133153 
    134154      CArray(Range r0, Range r1, GeneralArrayStorage<N_rank> storage = T_default_storage()) 
    135155        : Array<T_numtype,N_rank>(r0, r1, storage) 
    136156        , initialized(true) 
    137       {} 
     157      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    138158 
    139159      CArray(Range r0, Range r1, Range r2, GeneralArrayStorage<N_rank> storage = T_default_storage()) 
    140160        : Array<T_numtype,N_rank>(r0, r1, r2, storage) 
    141161        , initialized(true) 
    142       {} 
     162      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    143163 
    144164      CArray(Range r0, Range r1, Range r2, Range r3, GeneralArrayStorage<N_rank> storage = T_default_storage()) 
    145165        : Array<T_numtype,N_rank>(r0, r1, r2, r3, storage) 
    146166        , initialized(true) 
    147       {} 
     167      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    148168 
    149169      CArray(Range r0, Range r1, Range r2, Range r3, Range r4, GeneralArrayStorage<N_rank> storage = T_default_storage()) 
    150170        : Array<T_numtype,N_rank>(r0, r1, r2, r3, r4, storage) 
    151171        , initialized(true) 
    152       {} 
     172      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    153173 
    154174      CArray(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5, GeneralArrayStorage<N_rank> storage = T_default_storage()) 
    155175        : Array<T_numtype,N_rank>(r0, r1, r2, r3, r4, r5, storage) 
    156176        , initialized(true) 
    157       {} 
     177      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    158178 
    159179      CArray(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5, Range r6, 
     
    161181        : Array<T_numtype,N_rank>(r0, r1, r2, r3, r4, r5, r6, storage) 
    162182        , initialized(true) 
    163       {} 
     183      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    164184 
    165185      CArray(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5, Range r6, Range r7, 
     
    167187        : Array<T_numtype,N_rank>(r0, r1, r2, r3, r4, r5, r6, r7, storage) 
    168188        , initialized(true) 
    169       {} 
     189      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    170190 
    171191      CArray(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5, 
     
    173193        : Array<T_numtype,N_rank>(r0, r1, r2, r3, r4, r5, r6, r7, r8, storage) 
    174194        , initialized(true) 
    175       {} 
     195      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    176196 
    177197      CArray(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5, 
     
    179199        : Array<T_numtype,N_rank>(r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, storage) 
    180200        , initialized(true) 
    181       {} 
     201      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    182202 
    183203      CArray(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5, Range r6, Range r7, 
     
    185205        : Array<T_numtype,N_rank>(r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, storage) 
    186206        , initialized(true) 
    187       {} 
     207      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    188208 
    189209      CArray(const CArray<T_numtype, N_rank>& array) 
    190210        : Array<T_numtype,N_rank>(array) 
    191211        , initialized(array.initialized) 
    192       {} 
     212      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    193213 
    194214      CArray(const Array<T_numtype, N_rank>& array) 
    195215        : Array<T_numtype,N_rank>(array) 
    196216        , initialized(true) 
    197       {} 
     217      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    198218 
    199219      CArray(const TinyVector<int,N_rank-1>& shape, int lastExtent, const GeneralArrayStorage<N_rank>& storage) 
    200220        : Array<T_numtype,N_rank>(shape, lastExtent, storage) 
    201221        , initialized(true) 
    202       {} 
     222      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    203223 
    204224      CArray(Array<T_numtype, N_rank>& array, Range r0) 
    205225        : Array<T_numtype,N_rank>(array, r0) 
    206226        , initialized(true) 
    207       {} 
     227      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    208228 
    209229      CArray(Array<T_numtype, N_rank>& array, Range r0, Range r1) 
    210230        : Array<T_numtype,N_rank>(array, r0, r1) 
    211231        , initialized(true) 
    212       {} 
     232      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    213233 
    214234      CArray(Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2) 
    215235        : Array<T_numtype,N_rank>( array, r0, r1, r2) 
    216236        , initialized(true) 
    217       {} 
     237      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    218238 
    219239      CArray(Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2, Range r3) 
    220240        : Array<T_numtype,N_rank>(array, r0, r1, r2, r3) 
    221241        , initialized(true) 
    222       {} 
     242      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    223243 
    224244      CArray(Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2, 
     
    226246        : Array<T_numtype,N_rank>(array, r0, r1, r2, r3,  r4) 
    227247        , initialized(true) 
    228       {} 
     248      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    229249 
    230250      CArray(Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2, 
     
    232252        : Array<T_numtype,N_rank>( array, r0, r1, r2, r3, r4, r5) 
    233253        , initialized(true) 
    234       {} 
     254      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    235255 
    236256      CArray(Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2, Range r3, 
     
    238258        : Array<T_numtype,N_rank>( array, r0, r1, r2, r3, r4, r5, r6) 
    239259        , initialized(true) 
    240       {} 
     260      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    241261 
    242262      CArray(Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2, Range r3, Range r4, 
     
    244264        : Array<T_numtype,N_rank>(array, r0, r1, r2, r3, r4, r5, r6, r7) 
    245265        , initialized(true) 
    246       {} 
     266      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    247267 
    248268      CArray(Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2, Range r3, Range r4, Range r5, 
     
    250270        : Array<T_numtype,N_rank>(array, r0, r1, r2, r3, r4, r5, r6, r7, r8) 
    251271        , initialized(true) 
    252       {} 
     272      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    253273 
    254274      CArray(Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2, Range r3, Range r4, Range r5, 
     
    256276        : Array<T_numtype,N_rank>(array, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9) 
    257277        , initialized(true) 
    258       {} 
     278      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    259279 
    260280      CArray(Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2, Range r3, Range r4, Range r5, Range r6, 
     
    262282        : Array<T_numtype,N_rank>(array, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10) 
    263283        , initialized(true) 
    264       {} 
     284      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    265285 
    266286      CArray(Array<T_numtype, N_rank>& array, const RectDomain<N_rank>& subdomain) 
    267287        : Array<T_numtype,N_rank>(array, subdomain) 
    268288        , initialized(true) 
    269       {} 
     289      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    270290 
    271291      CArray(Array<T_numtype, N_rank>& array, const StridedDomain<N_rank>& subdomain) 
    272292        : Array<T_numtype,N_rank>(array, subdomain) 
    273293        , initialized(true) 
    274       {} 
     294      {bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol();} 
    275295 
    276296      template<int N_rank2, typename R0, typename R1, typename R2, typename R3, typename R4, typename R5, 
     
    279299        : Array<T_numtype,N_rank>(array, r0,r1, r2, r3, r4, r5, r6, r7, r8, r9, r10) 
    280300        , initialized(true) 
    281       {} 
     301      { bool neverTrue ; neverTrue=false ; bool neverTrue ; neverTrue=false ; if(neverTrue) inc_symbol(); } 
    282302 
    283303      virtual ~CArray() {} 
     
    548568      virtual size_t size(void) const { return size(this->numElements()); } 
    549569      static size_t size(sizeType numElements) { return (N_rank + 1) * sizeof(int) + sizeof(size_t) + numElements * sizeof(T_numtype); } 
    550  
     570       
     571      static int show_TV_ttf_display_type ( const CArray<T_numtype,N_rank>* array ) 
     572      { 
     573        int status ; 
     574        if (array->isEmpty())  
     575        { 
     576          status = TV_ttf_add_row("State", TV_ttf_type_ascii_string,"(empty)") ; 
     577          if (status != TV_ttf_ec_ok) return TV_ttf_format_raw ; 
     578          else return TV_ttf_format_ok_elide ; 
     579        } 
     580        else  
     581        { 
     582          char tname[128] ; 
     583          char bname[128] = "value_type" ; 
     584#ifdef __GNUC__ 
     585         size_t size = sizeof(bname) ; 
     586         abi::__cxa_demangle(typeid(T_numtype).name(), bname, &size, &status) ; 
     587         if (status !=0) return TV_ttf_format_raw ; 
     588#endif 
     589          int dim = array->dimensions() ; 
     590          if (dim==1) snprintf (tname, sizeof(tname), "%s[%d]", bname, array->extent(0)); 
     591          if (dim==2) snprintf (tname, sizeof(tname), "%s[%d][%d]", bname, array->extent(1), array->extent(0)); 
     592          if (dim==3) snprintf (tname, sizeof(tname), "%s[%d][%d][%d]", bname, array->extent(2), array->extent(1), array->extent(3)); 
     593          if (dim==4) snprintf (tname, sizeof(tname), "%s[%d][%d][%d][%d]", bname, array->extent(0), array->extent(1), array->extent(2), array->extent(3)); 
     594          if (dim==5) snprintf (tname, sizeof(tname), "%s[%d][%d][%d][%d][%d]", bname, array->extent(4), array->extent(3), array->extent(2), array->extent(1) 
     595                                                                                      ,array->extent(0)); 
     596          if (dim==6) snprintf (tname, sizeof(tname), "%s[%d][%d][%d][%d][%d][%d]", bname, array->extent(5), array->extent(4), array->extent(3), array->extent(2) 
     597                                                                                      ,array->extent(1),array->extent(0)); 
     598          if (dim==7) snprintf (tname, sizeof(tname), "%s[%d][%d][%d][%d][%d][%d][%d]", bname, array->extent(6), array->extent(5), array->extent(4), array->extent(3) 
     599                                                                                      ,array->extent(2),array->extent(1),array->extent(0)); 
     600          status = TV_ttf_add_row("array_values", tname, array->dataFirst()) ; 
     601          if (status != TV_ttf_ec_ok) return TV_ttf_format_raw ; 
     602          else return TV_ttf_format_ok ; 
     603        } 
     604      } 
     605       
     606 
     607      static int TV_ttf_display_type ( const CArray<T_numtype,N_rank>* array ) 
     608      { 
     609        return show_TV_ttf_display_type (array) ; 
     610      } 
     611       
    551612      virtual CBaseType* clone(void) const { return new CArray(*this); } 
    552613 
     
    578639        return ret; 
    579640      } 
     641 
    580642  }; 
     643 
     644 
     645#define macrotyperank(_TYPE_,_RANK_)\ 
     646  template<> int CArray<_TYPE_,_RANK_>::TV_ttf_display_type( const CArray<_TYPE_,_RANK_>* array ) \ 
     647  {\ 
     648    return show_TV_ttf_display_type (array) ;\ 
     649  } 
     650 
     651#define macrotype(_TYPE_)\ 
     652macrotyperank(_TYPE_,1)\ 
     653macrotyperank(_TYPE_,2)\ 
     654macrotyperank(_TYPE_,3)\ 
     655macrotyperank(_TYPE_,4)\ 
     656macrotyperank(_TYPE_,5)\ 
     657macrotyperank(_TYPE_,6)\ 
     658macrotyperank(_TYPE_,7) 
     659 
     660macrotype(double) 
     661macrotype(int) 
     662macrotype(bool) 
     663macrotype(size_t) 
     664macrotype(float) 
     665macrotype(string) 
     666 
     667#undef macrotyperank 
     668#undef macrotype 
     669 
    581670 
    582671 
Note: See TracChangeset for help on using the changeset viewer.