Changeset 786


Ignore:
Timestamp:
11/12/15 16:33:25 (5 years ago)
Author:
mhnguyen
Message:

Generating interface for transformations

+) Update Fortran interface for other transformations
+) Remove some redundant files
+) Update test to new interface

Test
+) On Curie
+) test_client and test_complete are correct

Location:
XIOS/trunk
Files:
21 added
1 deleted
8 edited
1 copied
2 moved

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/inputs/COMPLETE/context_atmosphere.xml

    r784 r786  
    2020    <axis id="axis_atm"/> 
    2121    <axis id="axis_atm_zoom" axis_ref="axis_atm"> 
    22       <zoom_axis zoom_size="2" zoom_end="2" /> 
     22      <zoom_axis id="axis_atm_zoom" zoom_size="4" zoom_end="2" /> 
    2323    </axis> 
    2424  </axis_definition> 
  • XIOS/trunk/inputs/REMAP/iodef.xml

    r785 r786  
    6666     </domain> 
    6767     <domain id="dst_domain_regular_pole" domain_src="src_domain" ni_glo="180" nj_glo="90" type="rectilinear"> 
    68        <generate_rectilinear_domain lat_start="-90" lat_end="90" lon_start="2" lon_end="360"/> 
     68       <generate_rectilinear_domain id="domain_regular_pole"/> 
    6969       <interpolate_domain/> 
    70 <!--       <zoom_domain id="dst_domain_regular_pole"/>--> 
    7170     </domain> 
    7271     <domain id="dst_domain_regular" domain_src="src_domain_regular_tmp" ni_glo="90" nj_glo="45" type="rectilinear"> 
  • XIOS/trunk/src/generate_fortran_interface.cpp

    r784 r786  
    55#include "object_template.hpp" 
    66#include "group_template.hpp" 
    7 #include "context.hpp" 
    8 #include "file.hpp" 
    9 #include "zoom_domain.hpp" 
    10 #include "zoom_axis.hpp" 
     7//#include "context.hpp" 
     8//#include "file.hpp" 
     9//#include "zoom_domain.hpp" 
     10//#include "zoom_axis.hpp" 
     11//#include "interpolate_axis.hpp" 
     12//#include "interpolate_domain.hpp" 
     13#include "node_type.hpp" 
    1114 
    1215int main (int argc, char ** argv, char ** UNUSED (env)) 
     
    3437  CZoomAxis zoomAxis; 
    3538 
     39  CInterpolateAxis interpolateAxis; 
     40  CInterpolateDomain interpolateDomain; 
     41 
     42  CGenerateRectilinearDomain genDomain; 
     43  CInverseAxis inverseAxis; 
     44 
    3645  ostringstream oss; 
    3746  ofstream file; 
     
    224233  file.close(); 
    225234 
     235  file.open((path+"interpolate_axis_interface_attr.F90").c_str()); 
     236  interpolateAxis.generateFortran2003Interface(file); 
     237  file.close(); 
     238 
     239  file.open((path+"icinterpolate_axis_attr.cpp").c_str()); 
     240  interpolateAxis.generateCInterface(file); 
     241  file.close(); 
     242 
     243  file.open((path+"iinterpolate_axis_attr.F90").c_str()); 
     244  interpolateAxis.generateFortranInterface(file); 
     245  file.close(); 
     246 
     247  file.open((path+"interpolate_domain_interface_attr.F90").c_str()); 
     248  interpolateDomain.generateFortran2003Interface(file); 
     249  file.close(); 
     250 
     251  file.open((path+"icinterpolate_domain_attr.cpp").c_str()); 
     252  interpolateDomain.generateCInterface(file); 
     253  file.close(); 
     254 
     255  file.open((path+"iinterpolate_domain_attr.F90").c_str()); 
     256  interpolateDomain.generateFortranInterface(file); 
     257  file.close(); 
     258 
     259  file.open((path+"generate_rectilinear_domain_interface_attr.F90").c_str()); 
     260  genDomain.generateFortran2003Interface(file); 
     261  file.close(); 
     262 
     263  file.open((path+"icgenerate_rectilinear_domain_attr.cpp").c_str()); 
     264  genDomain.generateCInterface(file); 
     265  file.close(); 
     266 
     267  file.open((path+"igenerate_rectilinear_domain_attr.F90").c_str()); 
     268  genDomain.generateFortranInterface(file); 
     269  file.close(); 
     270 
     271  file.open((path+"inverse_axis_interface_attr.F90").c_str()); 
     272  inverseAxis.generateFortran2003Interface(file); 
     273  file.close(); 
     274 
     275  file.open((path+"icinverse_axis_attr.cpp").c_str()); 
     276  inverseAxis.generateCInterface(file); 
     277  file.close(); 
     278 
     279  file.open((path+"iinverse_axis_attr.F90").c_str()); 
     280  inverseAxis.generateFortranInterface(file); 
     281  file.close(); 
     282 
    226283  file.open((path+"context_interface_attr.F90").c_str()); 
    227284  context->generateFortran2003Interface(file); 
     
    235292  context->generateFortranInterface(file); 
    236293  file.close(); 
    237  
    238  
    239  
    240294} 
  • XIOS/trunk/src/interface/c/icgenerate_rectilinear_domain.cpp

    r785 r786  
    1414#include "icutil.hpp" 
    1515#include "timer.hpp" 
    16 #include "zoom_domain.hpp" 
     16#include "generate_rectilinear_domain.hpp" 
    1717 
    1818extern "C" 
     
    2222   // ----------------------- Redéfinition de types ---------------------------- 
    2323 
    24    typedef xios::CZoomDomain      * XZoomDomainPtr; 
     24   typedef xios::CGenerateRectilinearDomain   * XGenDomainPtr; 
    2525 
    2626   // ------------------------ Création des handle ----------------------------- 
    27    void cxios_zoom_domain_handle_create(XZoomDomainPtr * _ret, const char * _id, int _id_len) 
     27   void cxios_generate_rectilinear_domain_handle_create(XGenDomainPtr * _ret, const char * _id, int _id_len) 
    2828   { 
    2929      std::string id; 
    3030      if (!cstr2string(_id, _id_len, id)) return; 
    3131      CTimer::get("XIOS").resume() ; 
    32       *_ret = xios::CZoomDomain::get(id); 
     32      *_ret = xios::CGenerateRectilinearDomain::get(id); 
    3333      CTimer::get("XIOS").suspend() ; 
    3434   } 
    3535 
    3636   // -------------------- Vérification des identifiants ----------------------- 
    37    void cxios_zoom_domain_valid_id(bool * _ret, const char * _id, int _id_len) 
     37   void cxios_generate_rectilinear_domain_valid_id(bool * _ret, const char * _id, int _id_len) 
    3838   { 
    3939      std::string id; 
     
    4141 
    4242      CTimer::get("XIOS").resume() ; 
    43       *_ret = xios::CZoomDomain::has(id); 
     43      *_ret = xios::CGenerateRectilinearDomain::has(id); 
    4444      CTimer::get("XIOS").suspend() ; 
    4545   } 
  • XIOS/trunk/src/interface/c/icinverse_axis.cpp

    r785 r786  
    1414#include "icutil.hpp" 
    1515#include "timer.hpp" 
    16 #include "zoom_axis.hpp" 
     16#include "inverse_axis.hpp" 
    1717 
    1818extern "C" 
     
    2222   // ----------------------- Redéfinition de types ---------------------------- 
    2323 
    24    typedef xios::CZoomAxis   * XZoomAxisPtr; 
     24   typedef xios::CInverseAxis      * XInverseAxisPtr; 
    2525 
    2626   // ------------------------ Création des handle ----------------------------- 
    27    void cxios_zoom_axis_handle_create (XZoomAxisPtr * _ret, const char * _id, int _id_len) 
     27   void cxios_inverse_axis_handle_create(XInverseAxisPtr * _ret, const char * _id, int _id_len) 
    2828   { 
    2929      std::string id; 
    3030      if (!cstr2string(_id, _id_len, id)) return; 
    3131      CTimer::get("XIOS").resume() ; 
    32       *_ret = xios::CZoomAxis::get(id); 
     32      *_ret = xios::CInverseAxis::get(id); 
    3333      CTimer::get("XIOS").suspend() ; 
    3434   } 
    3535 
    3636   // -------------------- Vérification des identifiants ----------------------- 
    37    void cxios_zoom_axis_valid_id (bool * _ret, const char * _id, int _id_len) 
     37   void cxios_inverse_axis_valid_id(bool * _ret, const char * _id, int _id_len) 
    3838   { 
    3939      std::string id; 
     
    4141 
    4242      CTimer::get("XIOS").resume() ; 
    43       *_ret = xios::CZoomAxis::has(id); 
     43      *_ret = xios::CInverseAxis::has(id); 
    4444      CTimer::get("XIOS").suspend() ; 
    4545   } 
  • XIOS/trunk/src/interface/c/iczoom.cpp

    r785 r786  
    1515#include "timer.hpp" 
    1616#include "zoom_axis.hpp" 
     17#include "zoom_domain.hpp" 
    1718 
    1819extern "C" 
     
    2324 
    2425   typedef xios::CZoomAxis   * XZoomAxisPtr; 
    25  
     26   typedef xios::CZoomDomain * XZoomDomainPtr; 
    2627   // ------------------------ Création des handle ----------------------------- 
    2728   void cxios_zoom_axis_handle_create (XZoomAxisPtr * _ret, const char * _id, int _id_len) 
     
    4445      CTimer::get("XIOS").suspend() ; 
    4546   } 
     47 
     48   // ------------------------ Création des handle ----------------------------- 
     49   void cxios_zoom_domain_handle_create(XZoomDomainPtr * _ret, const char * _id, int _id_len) 
     50   { 
     51      std::string id; 
     52      if (!cstr2string(_id, _id_len, id)) return; 
     53      CTimer::get("XIOS").resume() ; 
     54      *_ret = xios::CZoomDomain::get(id); 
     55      CTimer::get("XIOS").suspend() ; 
     56   } 
     57 
     58   // -------------------- Vérification des identifiants ----------------------- 
     59   void cxios_zoom_domain_valid_id(bool * _ret, const char * _id, int _id_len) 
     60   { 
     61      std::string id; 
     62      if (!cstr2string(_id, _id_len, id)) return; 
     63 
     64      CTimer::get("XIOS").resume() ; 
     65      *_ret = xios::CZoomDomain::has(id); 
     66      CTimer::get("XIOS").suspend() ; 
     67   } 
    4668} // extern "C" 
  • XIOS/trunk/src/interface/fortran/ixios.F90

    r784 r786  
    7575USE izoom_domain_attr, ONLY : xios(set_zoom_domain_attr), xios(get_zoom_domain_attr), xios(is_defined_zoom_domain_attr) 
    7676 
     77USE iinterpolate_axis, ONLY : txios(interpolate_axis), xios(is_valid_interpolate_axis) 
     78 
     79USE iinterpolate_axis_attr, ONLY : xios(set_interpolate_axis_attr), xios(get_interpolate_axis_attr), & 
     80                                   xios(is_defined_interpolate_axis_attr) 
     81 
     82USE iinterpolate_domain, ONLY : txios(interpolate_domain), xios(is_valid_interpolate_domain) 
     83 
     84USE iinterpolate_domain_attr, ONLY : xios(set_interpolate_domain_attr), xios(get_interpolate_domain_attr), & 
     85                                     xios(is_defined_interpolate_domain_attr) 
     86 
     87USE iinverse_axis, ONLY : txios(inverse_axis), xios(is_valid_inverse_axis) 
     88 
     89USE iinverse_axis_attr, ONLY : xios(set_inverse_axis_attr), xios(get_inverse_axis_attr), xios(is_defined_inverse_axis_attr) 
     90 
     91USE igenerate_rectilinear_domain, ONLY : txios(generate_rectilinear_domain), xios(is_valid_generate_rectilinear_domain) 
     92 
     93USE igenerate_rectilinear_domain_attr, ONLY : xios(set_generate_rectilinear_domain_attr), xios(get_generate_rectilinear_domain_attr), & 
     94                                              xios(is_defined_generate_rectilinear_domain_attr) 
     95 
    7796USE XIOS_INTERFACES, ONLY : xios(set_attr), xios(get_attr), xios(is_defined_attr), xios(get_handle), xios(add_child), & 
    7897                            xios(send_field), xios(send_scalar), xios(recv_field), xios(field_is_active), xios(getVar), xios(setVar) 
  • XIOS/trunk/src/interface/fortran/ixios_interfaces.F90

    r784 r786  
    5959USE izoom_domain_attr, ONLY : xios(set_zoom_domain_attr_hdl), xios(get_zoom_domain_attr_hdl), xios(is_defined_zoom_domain_attr_hdl) 
    6060 
     61USE iinterpolate_axis, ONLY : xios(get_interpolate_axis_handle) 
     62 
     63USE iinterpolate_axis_attr, ONLY : xios(set_interpolate_axis_attr_hdl), xios(get_interpolate_axis_attr_hdl), & 
     64                                   xios(is_defined_interpolate_axis_attr_hdl) 
     65 
     66USE iinterpolate_domain, ONLY : xios(get_interpolate_domain_handle) 
     67 
     68USE iinterpolate_domain_attr, ONLY : xios(set_interpolate_domain_attr_hdl), xios(get_interpolate_domain_attr_hdl), & 
     69                                     xios(is_defined_interpolate_domain_attr_hdl) 
     70 
     71USE iinverse_axis, ONLY : xios(get_inverse_axis_handle) 
     72 
     73USE iinverse_axis_attr, ONLY : xios(set_inverse_axis_attr_hdl), xios(get_inverse_axis_attr_hdl), xios(is_defined_inverse_axis_attr_hdl) 
     74 
     75USE igenerate_rectilinear_domain, ONLY : xios(get_generate_rectilinear_domain_handle) 
     76 
     77USE igenerate_rectilinear_domain_attr, ONLY : xios(set_generate_rectilinear_domain_attr_hdl), & 
     78                                              xios(get_generate_rectilinear_domain_attr_hdl), & 
     79                                              xios(is_defined_generate_rectilinear_domain_attr_hdl) 
     80 
    6181USE ixml_tree, ONLY : xios(add_axis), xios(add_file), xios(add_grid), xios(add_field), xios(add_domain),   & 
    6282                      xios(add_fieldtofile), xios(add_variabletofile), xios(add_variabletofield),          & 
     
    7393                   xios(set_grid_attr_hdl), xios(set_gridgroup_attr_hdl), xios(set_axis_attr_hdl) ,          & 
    7494                   xios(set_axisgroup_attr_hdl), xios(set_context_attr_hdl), xios(set_zoom_axis_attr_hdl),   & 
    75                    xios(set_zoom_domain_attr_hdl) 
     95                   xios(set_zoom_domain_attr_hdl), xios(set_interpolate_axis_attr_hdl),                      & 
     96                   xios(set_interpolate_domain_attr_hdl), xios(set_inverse_axis_attr_hdl),                   & 
     97                   xios(set_generate_rectilinear_domain_attr_hdl) 
    7698END INTERFACE xios(set_attr) 
    7799 
     
    82104                   xios(get_grid_attr_hdl), xios(get_gridgroup_attr_hdl), xios(get_axis_attr_hdl) ,          & 
    83105                   xios(get_axisgroup_attr_hdl), xios(get_context_attr_hdl), xios(get_zoom_axis_attr_hdl),   & 
    84                    xios(get_zoom_domain_attr_hdl) 
     106                   xios(get_zoom_domain_attr_hdl), xios(get_interpolate_axis_attr_hdl),                      & 
     107                   xios(get_interpolate_domain_attr_hdl), xios(get_inverse_axis_attr_hdl),                   & 
     108                   xios(get_generate_rectilinear_domain_attr_hdl) 
    85109END INTERFACE xios(get_attr) 
    86110 
     
    91115                   xios(is_defined_grid_attr_hdl), xios(is_defined_gridgroup_attr_hdl), xios(is_defined_axis_attr_hdl) ,          & 
    92116                   xios(is_defined_axisgroup_attr_hdl), xios(is_defined_context_attr_hdl),                                        & 
    93                    xios(is_defined_zoom_axis_attr_hdl), xios(is_defined_zoom_domain_attr_hdl) 
     117                   xios(is_defined_zoom_axis_attr_hdl), xios(is_defined_zoom_domain_attr_hdl),                                    & 
     118                   xios(is_defined_interpolate_axis_attr_hdl), xios(is_defined_interpolate_domain_attr_hdl),                      & 
     119                   xios(is_defined_inverse_axis_attr_hdl), xios(is_defined_generate_rectilinear_domain_attr_hdl) 
    94120END INTERFACE xios(is_defined_attr) 
    95121 
     
    99125                   xios(get_gridgroup_handle), xios(get_axis_handle), xios(get_axisgroup_handle),   & 
    100126                   xios(get_field_handle), xios(get_fieldgroup_handle),xios(get_variable_handle),   & 
    101                    xios(get_variablegroup_handle), xios(get_zoom_axis_handle),                  & 
    102                    xios(get_zoom_domain_handle) 
     127                   xios(get_variablegroup_handle), xios(get_zoom_axis_handle),                      & 
     128                   xios(get_zoom_domain_handle), xios(get_interpolate_axis_handle),                 & 
     129                   xios(get_interpolate_domain_handle), xios(get_inverse_axis_handle),              & 
     130                   xios(get_generate_rectilinear_domain_handle) 
    103131END INTERFACE xios(get_handle) 
    104132 
  • XIOS/trunk/src/node/axis.cpp

    r784 r786  
    920920          tmp->parse(node); 
    921921          transformationMap_.push_back(std::make_pair(TRANS_INVERSE_AXIS,tmp)); 
    922         } else if (node.getElementName() == zoom) { 
    923           CZoomAxis* tmp = (CZoomAxisGroup::get(zoomAxisDefRoot))->createChild(); 
     922        } 
     923        else if (node.getElementName() == zoom) { 
     924          CZoomAxis* tmp = (CZoomAxisGroup::get(zoomAxisDefRoot))->createChild(nodeId); 
    924925          tmp->parse(node); 
    925926          transformationMap_.push_back(std::make_pair(TRANS_ZOOM_AXIS,tmp)); 
  • XIOS/trunk/src/test/test_complete.f90

    r784 r786  
    8888 
    8989  CALL xios_set_axis_attr("axis_atm",n_glo=llm ,value=lval) ; 
     90  CALL xios_set_zoom_axis_attr("axis_atm_zoom",zoom_size=2); 
    9091 
    9192  CALL xios_set_domain_attr("domain_atm",ni_glo=ni_glo, nj_glo=nj_glo, ibegin=ibegin, ni=ni,jbegin=jbegin,nj=nj, type='curvilinear') 
  • XIOS/trunk/src/test/test_remap.f90

    r785 r786  
    120120                            bounds_lon_1D=dst_boundslon, bounds_lat_1D=dst_boundslat, nvertex=dst_nvertex) 
    121121 
    122 !  CALL xios_set_zoom_domain_attr("dst_domain_regular_pole", zoom_ibegin=10, zoom_ni=10, & 
    123 !                                 zoom_jbegin=10, zoom_nj=10) 
     122  CALL xios_set_generate_rectilinear_domain_attr("domain_regular_pole", lat_start=dble(-90.0), lat_end=dble(90), & 
     123                                                 lon_start=dble(2), lon_end=dble(360)) 
    124124 
    125125  dtime%second = 3600 
Note: See TracChangeset for help on using the changeset viewer.