Salome HOME
#23999 EDF 22760 - integration of dev in SMESH (from branch 'gni/adaptation')
authoreap <eap@opencascade.com>
Sat, 20 Mar 2021 13:01:14 +0000 (16:01 +0300)
committereap <eap@opencascade.com>
Sat, 20 Mar 2021 13:01:14 +0000 (16:01 +0300)
1  2 
CMakeLists.txt
doc/salome/examples/tests.set
resources/CMakeLists.txt
src/SMESHGUI/CMakeLists.txt
src/SMESHGUI/SMESHGUI.cxx
src/SMESH_I/CMakeLists.txt
src/SMESH_I/SMESH_Gen_i.hxx

diff --combined CMakeLists.txt
index feff178cddbc77acd1354406c3de510d015839ca,651fbb877756f3cbcce0fe4437cc7bfbb0de06e1..242782dc419e25991699cecc0753e2f3acacbf4e
@@@ -65,7 -65,7 +65,7 @@@ SET(BUILD_SHARED_LIBS TRUE
  # ============
  OPTION(SALOME_BUILD_TESTS "Build SALOME tests" ON)
  OPTION(SALOME_BUILD_DOC "Generate SALOME SMESH documentation" ON)
-   
  # Advanced options:
  OPTION(SALOME_BUILD_GUI           "Enable GUI" ON)
  OPTION(SALOME_SMESH_USE_CGNS      "Enable import/export to CGNS format" OFF)
@@@ -130,12 -130,8 +130,12 @@@ IF(SALOME_BUILD_TESTS
  ENDIF()
  IF(SALOME_BUILD_DOC)
    FIND_PACKAGE(SalomeDoxygen)
 -  SET(Sphinx_EXTENSIONS sphinxcontrib.napoleon)
    FIND_PACKAGE(SalomeSphinx)
 +  INCLUDE(UseSphinx)
 +  SPHINX_CHECK_EXTENSIONS(sphinx_rtd_theme)
 +  IF(SPHINX_VERSION VERSION_LESS "1.3")
 +    SPHINX_CHECK_EXTENSIONS(sphinxcontrib.napoleon)
 +  ENDIF()
    SALOME_LOG_OPTIONAL_PACKAGE(Doxygen SALOME_BUILD_DOC)
    SALOME_LOG_OPTIONAL_PACKAGE(Sphinx SALOME_BUILD_DOC)
  ENDIF()
@@@ -146,7 -142,7 +146,7 @@@ IF(SALOME_BUILD_GUI
    IF(EXISTS ${GUI_ROOT_DIR})
      FIND_PACKAGE(SalomeGUI)
      SALOME_GUI_WITH_CORBA() #check whether GUI built with CORBA
-     SALOME_GUI_MODE(SALOME_USE_VTKVIEWER SALOME_USE_SALOMEOBJECT 
+     SALOME_GUI_MODE(SALOME_USE_VTKVIEWER SALOME_USE_SALOMEOBJECT
                      OPTIONAL SALOME_USE_PLOT2DVIEWER SALOME_USE_PYCONSOLE)
      ##
      ## Prerequisites From GUI:
@@@ -195,6 -191,15 +195,15 @@@ IF(NOT WITH_SHAPER_STUDY AND SALOME_BUI
    MESSAGE(WARNING "SHAPERSTUDY is not found; the corresponding tests will be omitted")
  ENDIF()
  
+ # Find MEDCoupling
+ # ================
+ SET(MEDCOUPLING_ROOT_DIR $ENV{MEDCOUPLING_ROOT_DIR} CACHE PATH "Path to the MEDCoupling tool")
+ IF(EXISTS ${MEDCOUPLING_ROOT_DIR})
+   FIND_PACKAGE(SalomeMEDCoupling REQUIRED)   # will reload HDF5, MEDFile, XDR, etc ...
+ ELSE(EXISTS ${MEDCOUPLING_ROOT_DIR})
+   MESSAGE(FATAL_ERROR "We absolutely need the MEDCoupling tool, please define MEDCOUPLING_ROOT_DIR !")
+ ENDIF(EXISTS ${MEDCOUPLING_ROOT_DIR})
  ##
  ## SMESH specifics
  ##
  # VTK is obligatiry for the SMESH
  FIND_PACKAGE(SalomeVTK REQUIRED)
  
- FIND_PACKAGE(SalomeOpenCASCADE REQUIRED) 
+ FIND_PACKAGE(SalomeOpenCASCADE REQUIRED)
  
  IF(SALOME_SMESH_USE_CGNS)
    FIND_PACKAGE(SalomeCGNS)
@@@ -228,7 -233,7 +237,7 @@@ IF(WIN32
      MESSAGE(STATUS "Build MEFISTO2D mesher using Fortran to C generator")
    ELSE(${F2C_FOUND})
      MESSAGE(FATAL "Fortran to C generator is not found: MEFISTO2D mesher cannot be compiled! Please define F2C_ROOT_DIR !")
-   ENDIF(${F2C_FOUND})  
+   ENDIF(${F2C_FOUND})
  ENDIF(WIN32)
  
  IF(SALOME_SMESH_ENABLE_MEFISTO)
@@@ -247,32 -252,32 +256,32 @@@ SET(SALOME_INSTALL_BINS "${SALOME_INSTA
  SET(SALOME_INSTALL_LIBS "${SALOME_INSTALL_LIBS}" CACHE PATH "Install path: SALOME libs")
  SET(SALOME_INSTALL_IDLS "${SALOME_INSTALL_IDLS}" CACHE PATH "Install path: SALOME IDL files")
  SET(SALOME_INSTALL_HEADERS "${SALOME_INSTALL_HEADERS}" CACHE PATH "Install path: SALOME headers")
- SET(SALOME_INSTALL_SCRIPT_SCRIPTS "${SALOME_INSTALL_SCRIPT_SCRIPTS}" CACHE PATH 
+ SET(SALOME_INSTALL_SCRIPT_SCRIPTS "${SALOME_INSTALL_SCRIPT_SCRIPTS}" CACHE PATH
     "Install path: SALOME scripts")
- SET(SALOME_INSTALL_SCRIPT_DATA "${SALOME_INSTALL_SCRIPT_DATA}" CACHE PATH 
+ SET(SALOME_INSTALL_SCRIPT_DATA "${SALOME_INSTALL_SCRIPT_DATA}" CACHE PATH
     "Install path: SALOME script data")
- SET(SALOME_INSTALL_SCRIPT_PYTHON "${SALOME_INSTALL_SCRIPT_PYTHON}" CACHE PATH 
+ SET(SALOME_INSTALL_SCRIPT_PYTHON "${SALOME_INSTALL_SCRIPT_PYTHON}" CACHE PATH
     "Install path: SALOME Python scripts")
- SET(SALOME_INSTALL_APPLISKEL_SCRIPTS "${SALOME_INSTALL_APPLISKEL_SCRIPTS}" CACHE PATH 
+ SET(SALOME_INSTALL_APPLISKEL_SCRIPTS "${SALOME_INSTALL_APPLISKEL_SCRIPTS}" CACHE PATH
     "Install path: SALOME application skeleton - scripts")
- SET(SALOME_INSTALL_APPLISKEL_PYTHON "${SALOME_INSTALL_APPLISKEL_PYTHON}" CACHE PATH 
+ SET(SALOME_INSTALL_APPLISKEL_PYTHON "${SALOME_INSTALL_APPLISKEL_PYTHON}" CACHE PATH
     "Install path: SALOME application skeleton - Python")
  SET(SALOME_INSTALL_PYTHON "${SALOME_INSTALL_PYTHON}" CACHE PATH "Install path: SALOME Python stuff")
- SET(SALOME_INSTALL_PYTHON_SHARED "${SALOME_INSTALL_PYTHON_SHARED}" CACHE PATH 
+ SET(SALOME_INSTALL_PYTHON_SHARED "${SALOME_INSTALL_PYTHON_SHARED}" CACHE PATH
     "Install path: SALOME Python shared modules")
- SET(SALOME_INSTALL_CMAKE_LOCAL "${SALOME_INSTALL_CMAKE_LOCAL}" CACHE PATH 
-     "Install path: local SALOME CMake files") 
+ SET(SALOME_INSTALL_CMAKE_LOCAL "${SALOME_INSTALL_CMAKE_LOCAL}" CACHE PATH
+     "Install path: local SALOME CMake files")
  SET(SALOME_INSTALL_AMCONFIG_LOCAL "${SALOME_INSTALL_AMCONFIG_LOCAL}" CACHE PATH
    "Install path: local SALOME config files (obsolete, to be removed)")
  SET(SALOME_INSTALL_RES "${SALOME_INSTALL_RES}" CACHE PATH "Install path: SALOME resources")
  SET(SALOME_INSTALL_DOC "${SALOME_INSTALL_DOC}" CACHE PATH "Install path: SALOME documentation")
  
  # Specific to SMESH:
- SET(SALOME_SMESH_INSTALL_RES_DATA "${SALOME_INSTALL_RES}/smesh" CACHE PATH 
+ SET(SALOME_SMESH_INSTALL_RES_DATA "${SALOME_INSTALL_RES}/smesh" CACHE PATH
      "Install path: SALOME SMESH specific data")
- SET(SALOME_SMESH_INSTALL_PLUGINS share/salome/plugins/smesh CACHE PATH 
+ SET(SALOME_SMESH_INSTALL_PLUGINS share/salome/plugins/smesh CACHE PATH
      "Install path: SALOME SMESH plugins")
-     
  MARK_AS_ADVANCED(SALOME_INSTALL_BINS SALOME_INSTALL_LIBS SALOME_INSTALL_IDLS SALOME_INSTALL_HEADERS)
  MARK_AS_ADVANCED(SALOME_INSTALL_SCRIPT_SCRIPTS SALOME_INSTALL_SCRIPT_DATA SALOME_INSTALL_SCRIPT_PYTHON)
  MARK_AS_ADVANCED(SALOME_INSTALL_APPLISKEL_SCRIPTS  SALOME_INSTALL_APPLISKEL_PYTHON SALOME_INSTALL_CMAKE_LOCAL SALOME_INSTALL_RES)
@@@ -280,13 -285,23 +289,23 @@@ MARK_AS_ADVANCED(SALOME_INSTALL_PYTHON 
  MARK_AS_ADVANCED(SALOME_INSTALL_AMCONFIG_LOCAL SALOME_INSTALL_DOC)
  MARK_AS_ADVANCED(SALOME_SMESH_INSTALL_RES_DATA SALOME_SMESH_INSTALL_PLUGINS)
  
+ # Specific to ADAPT:
+ # SET(SALOME_ADAPT_INSTALL_RES_DATA "${SALOME_INSTALL_RES}/adapt" CACHE PATH
+ #   "Install path: SALOME ADAPT specific data")
+ SET(SALOME_ADAPT_INSTALL_SAMPLES share/salome/adaptsamples CACHE PATH
+   "Install path: SALOME ADAPT samples")
+ SET(SALOME_ADAPT_INSTALL_TEST ${SALOME_INSTALL_SCRIPT_SCRIPTS}/test CACHE PATH
+     "Install path: SALOME ADAPT Test files")
+ SET(SALOME_ADAPT_INSTALL_RES_DATA "${SALOME_INSTALL_RES}/adapt" CACHE PATH
+     "Install path: SALOME ADAPT specific data")
  # Accumulate environment variables for SMESH module
  SALOME_ACCUMULATE_ENVIRONMENT(PYTHONPATH NOCHECK ${CMAKE_INSTALL_PREFIX}/${SALOME_INSTALL_BINS}
                                                   ${CMAKE_INSTALL_PREFIX}/${SALOME_INSTALL_PYTHON}
                                                   ${CMAKE_INSTALL_PREFIX}/${SALOME_INSTALL_PYTHON_SHARED})
- SALOME_ACCUMULATE_ENVIRONMENT(LD_LIBRARY_PATH NOCHECK ${CMAKE_INSTALL_PREFIX}/${SALOME_INSTALL_LIBS}) 
+ SALOME_ACCUMULATE_ENVIRONMENT(LD_LIBRARY_PATH NOCHECK ${CMAKE_INSTALL_PREFIX}/${SALOME_INSTALL_LIBS})
  
- # Sources 
+ # Sources
  # ========
  
  ADD_SUBDIRECTORY(idl)
@@@ -313,7 -328,7 +332,7 @@@ INCLUDE(CMakePackageConfigHelpers
  
  # List of targets in this project we want to make visible to the rest of the world.
  # They all have to be INSTALL'd with the option "EXPORT ${PROJECT_NAME}TargetGroup"
- SET(_${PROJECT_NAME}_exposed_targets 
+ SET(_${PROJECT_NAME}_exposed_targets
    SMESHControls MeshDriver MeshDriverDAT MeshDriverGMF MeshDriverMED
    MeshDriverSTL MeshDriverUNV MEDWrapper
    SMDS SMESHimpl SMESHEngine SMESHClient SMESHDS
  
  IF(SALOME_SMESH_ENABLE_MEFISTO)
    LIST(APPEND _${PROJECT_NAME}_exposed_targets
-        MEFISTO2D) 
+        MEFISTO2D)
  ENDIF(SALOME_SMESH_ENABLE_MEFISTO)
  
  IF(SALOME_BUILD_GUI)
  ENDIF(SALOME_BUILD_GUI)
  
  IF(SALOME_SMESH_USE_CGNS)
-   LIST(APPEND _${PROJECT_NAME}_exposed_targets 
+   LIST(APPEND _${PROJECT_NAME}_exposed_targets
      MeshDriverCGNS
    )
  ENDIF(SALOME_SMESH_USE_CGNS)
@@@ -350,7 -365,7 +369,7 @@@ SET(GEOM_ROOT_DIR "${GEOM_ROOT_DIR}"
  SET(MEDFILE_ROOT_DIR "${MEDFILE_ROOT_DIR}")
  SET(CGNS_ROOT_DIR "${CGNS_ROOT_DIR}")
  SET(TBB_ROOT_DIR  "${TBB_ROOT_DIR}")
-  
  SET(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/include" "${PROJECT_BINARY_DIR}/include")
  
  # Build variables that will be expanded when configuring Salome<MODULE>Config.cmake:
@@@ -373,5 -388,5 +392,5 @@@ INSTALL(FILE
    DESTINATION "${SALOME_INSTALL_CMAKE_LOCAL}")
  
  # Install the export set for use with the install-tree
- INSTALL(EXPORT ${PROJECT_NAME}TargetGroup DESTINATION "${SALOME_INSTALL_CMAKE_LOCAL}" 
+ INSTALL(EXPORT ${PROJECT_NAME}TargetGroup DESTINATION "${SALOME_INSTALL_CMAKE_LOCAL}"
    FILE ${PROJECT_NAME}Targets.cmake)
index 89f21a798dd99a7a21e9fb33caa8787a406ff012,5b7fb54df870f8583c17ac10ec25589ebe4a26ba..02ffd1e76d0c6ca64029c45a669f770ff7b926e6
@@@ -45,6 -45,7 +45,7 @@@ SET(BAD_TEST
    radial_prism_3d_algo.py
    test_smeshplugin_mg_tetra_parallele.py
    test_smeshplugins.py
+   MGAdaptTests_without_session.py
    )
  
  SET(GOOD_TESTS
  set(SESSION_FREE_TESTS
    basic_geom_smesh_without_session.py
    basic_shaper_smesh_without_session.py
 +  shaper_smesh_groups_without_session.py
  )
  
  SET(EXAMPLES_TESTS ${BAD_TESTS} ${GOOD_TESTS} ${SESSION_FREE_TESTS} testme.py)
diff --combined resources/CMakeLists.txt
index 05688ce814dd8f94c6be39880ca2ffd795c3feee,1306b1319958edf6e2552732c42ffd708c01745e..3d9bae66761808c60a4c455a375b509d99430d67
@@@ -22,6 -22,7 +22,7 @@@
  
  SET(SMESH_RESOURCES_FILES
    ModuleMesh.png
+   adapt_mg_adapt.png
    advanced_mesh_info.png
    bare_border_face.png
    bare_border_volume.png
  INSTALL(FILES ${SMESH_RESOURCES_FILES} DESTINATION ${SALOME_SMESH_INSTALL_RES_DATA})
  
  SALOME_CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/SalomeApp.xml.in ${CMAKE_CURRENT_BINARY_DIR}/SalomeApp.xml INSTALL ${SALOME_SMESH_INSTALL_RES_DATA})
 +INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/SalomeApp.xml RENAME SalomeAppSL.xml DESTINATION ${SALOME_SMESH_INSTALL_RES_DATA})
  SALOME_CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/StdMeshers.xml.in ${CMAKE_CURRENT_BINARY_DIR}/StdMeshers.xml INSTALL ${SALOME_SMESH_INSTALL_RES_DATA})
  SALOME_CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/SMESHCatalog.xml.in ${CMAKE_CURRENT_BINARY_DIR}/SMESHCatalog.xml INSTALL ${SALOME_SMESH_INSTALL_RES_DATA})
index af116da9f4386db1b4596d9b83e3712cb74d2b57,237f63801af93a9f2685296bf3e33412b340e579..4f50dbc8e7d01bf44df59a10ee9cd9429e38e4e7
@@@ -42,9 -42,9 +42,10 @@@ INCLUDE_DIRECTORIES
    ${PROJECT_SOURCE_DIR}/src/Controls
    ${PROJECT_SOURCE_DIR}/src/SMESHClient
    ${PROJECT_SOURCE_DIR}/src/MEDWrapper
 +  ${PROJECT_SOURCE_DIR}/src/SMESH_I
    ${PROJECT_BINARY_DIR}
    ${PROJECT_BINARY_DIR}/idl
+   ${MEDCOUPLING_INCLUDE_DIRS}
  )
  
  # additional preprocessor / compiler flags
@@@ -74,7 -74,7 +75,8 @@@ SET(_link_LIBRARIE
    SMDS
    SMESHControls
    SMESHObject
 +  SMESHEngine
+   ${MEDCoupling_medloader}
  )
  
  # --- headers ---
@@@ -147,6 -147,9 +149,9 @@@ SET(_moc_HEADER
    SMESHGUI_SplitBiQuad.h
    SMESHGUI_IdPreview.h
    SMESHGUI_PreVisualObj.h
+   SMESHGUI_AdaptDlg.h
+   SMESHGUI_MG_ADAPTDRIVER.h
+   MG_ADAPTGUI.hxx # to replace in ../ADAPTGUI/
  )
  
  # header files / no moc processing
@@@ -169,6 -172,7 +174,7 @@@ SET(_other_HEADER
    SMESHGUI_FileValidator.h
    SMESHGUI_SelectionProxy.h
    SMESH_SMESHGUI.hxx
+   #~MG_ADAPT.hxx # to replace in ../ADAPT/
  )
  
  # header files / to install
@@@ -262,6 -266,10 +268,10 @@@ SET(_other_SOURCE
    SMESHGUI_SplitBiQuad.cxx
    SMESHGUI_PreVisualObj.cxx
    SMESHGUI_IdPreview.cxx
+   SMESHGUI_AdaptDlg.cxx
+   SMESHGUI_MG_ADAPTDRIVER.cxx
+   MG_ADAPTGUI.cxx # to replace in ../ADAPTGUI/
+   #MG_ADAPT.cxx
  )
  
  # sources / to compile
@@@ -275,7 -283,7 +285,7 @@@ SET(_ts_RESOURCE
    SMESH_msg_en.ts
    SMESH_msg_fr.ts
    SMESH_msg_ja.ts
- ) 
+ )
  
  # --- rules ---
  
index e96570c1f06233a1e4e7d7c9d0bf14033abebf41,a16812234d7f1d945935710d26415e73b295ddfb..762c7cb341a911478a46e8f9db8087f81a298abd
@@@ -30,6 -30,7 +30,7 @@@
  
  //  SMESH includes
  #include "SMESHGUI.h"
+ #include "SMESHGUI_AdaptDlg.h"
  #include "SMESHGUI_Add0DElemsOnAllNodesDlg.h"
  #include "SMESHGUI_AddMeshElementDlg.h"
  #include "SMESHGUI_AddQuadraticElementDlg.h"
  #include "SMESH_ControlsDef.hxx"
  #include "SMESH_ScalarBarActor.h"
  #include "SMESH_TypeFilter.hxx"
 +#include "SMESH_Component_Generator.hxx"
  
  // SALOME GUI includes
  #include <LightApp_DataOwner.h>
@@@ -1971,12 -1971,12 +1972,12 @@@ void SMESHGUI::OnEditDelete(
    int objectCount = 0;
    QString aNameList;
    QString aParentComponent = QString::null;
-   
    for( SALOME_ListIteratorOfListIO anIt( selected ); anIt.More(); anIt.Next() )
    {
      Handle(SALOME_InteractiveObject) anIO = anIt.Value();
      if ( anIO.IsNull() ) continue;
-     
      QString father = "unknown", name;
  
      _PTR(SObject) aSO = aStudy->FindObjectID( anIO->getEntry() );
@@@ -2156,20 -2156,13 +2157,20 @@@ SMESH::SMESH_Gen_var SMESHGUI::myCompon
   *
   */
  //=============================================================================
 -SMESHGUI::SMESHGUI() :
 -SalomeApp_Module( "SMESH" )
 +SMESHGUI::SMESHGUI() : SalomeApp_Module( "SMESH" )
  {
    if ( CORBA::is_nil( myComponentSMESH ) )
    {
      CORBA::Boolean anIsEmbeddedMode;
 -    myComponentSMESH = SMESH_Client::GetSMESHGen(getApp()->orb(),anIsEmbeddedMode);
 +    SALOME_NamingService_Abstract *ns = SalomeApp_Application::namingService();
 +    if( dynamic_cast<SALOME_NamingService *>(ns) )
 +      myComponentSMESH = SMESH_Client::GetSMESHGen(getApp()->orb(),anIsEmbeddedMode);
 +    else
 +      {
 +        Engines::EngineComponent_var comp = RetrieveSMESHInstance();
 +        myComponentSMESH = SMESH::SMESH_Gen::_narrow(comp);
 +      }
 +    
      //MESSAGE("-------------------------------> anIsEmbeddedMode=" << anIsEmbeddedMode);
  
      //  0019923: EDF 765 SMESH : default values of hypothesis
@@@ -3042,6 -3035,13 +3043,13 @@@ bool SMESHGUI::OnGUIEvent( int theComma
        }
        break;
      }
+   // Adaptation - begin
+   case SMESHOp::OpMGAdapt:
+     {
+       SMESH::SMESH_Mesh_var aMesh = SMESH::SMESH_Mesh::_nil();
+       SMESHGUI_AdaptDlg *objet = new SMESHGUI_AdaptDlg( this, theCommandID, aMesh);
+     }
+   // Adaptation - end
    case SMESHOp::OpSplitBiQuadratic:
    case SMESHOp::OpConvertMeshToQuadratic:
    case SMESHOp::OpCreateBoundaryElements: // create 2D mesh from 3D
@@@ -4279,6 -4279,10 +4287,10 @@@ void SMESHGUI::initialize( CAM_Applicat
    createSMESHAction( SMESHOp::OpAutoColor,        "AUTO_COLOR" );
    createSMESHAction( SMESHOp::OpDisableAutoColor, "DISABLE_AUTO_COLOR" );
  
+   // Adaptation - begin
+   createSMESHAction( SMESHOp::OpMGAdapt,              "MG_ADAPT",                "ICON_MG_ADAPT" );
+   // Adaptation - end
    createSMESHAction( SMESHOp::OpMinimumDistance,  "MEASURE_MIN_DIST", "ICON_MEASURE_MIN_DIST" );
    createSMESHAction( SMESHOp::OpBoundingBox,      "MEASURE_BND_BOX",  "ICON_MEASURE_BND_BOX" );
    createSMESHAction( SMESHOp::OpPropertiesLength, "MEASURE_LENGTH",   "ICON_MEASURE_LENGTH" );
        meshId    = createMenu( tr( "MEN_MESH" ),    -1, 70, 10 ),
        ctrlId    = createMenu( tr( "MEN_CTRL" ),    -1, 60, 10 ),
        modifyId  = createMenu( tr( "MEN_MODIFY" ),  -1, 40, 10 ),
+       adaptId   = createMenu( tr( "MEN_ADAPT" ),   -1, 80, 10 ),
        measureId = createMenu( tr( "MEN_MEASURE" ), -1, 50, 10 ),
        viewId    = createMenu( tr( "MEN_VIEW" ),    -1,  2 );
  
    createMenu( SMESHOp::OpSmoothing,              modifyId, -1 );
    createMenu( SMESHOp::OpPatternMapping,         modifyId, -1 );
  
+   // Adaptation - begin
+   createMenu( SMESHOp::OpMGAdapt,              adaptId, -1 );
+   // Adaptation - end
    createMenu( SMESHOp::OpMinimumDistance,  measureId,   -1 );
    createMenu( SMESHOp::OpBoundingBox,      measureId,   -1 );
    createMenu( SMESHOp::OpAngle,            measureId,   -1 );
    connect( volumeMenu, SIGNAL( aboutToShow() ), this, SLOT( onUpdateControlActions() ) );
  
    // ----- create toolbars --------------
-   int meshTb       = createTool( tr( "TB_MESH" ),      QString( "SMESHMeshToolbar" ) ),
-       info         = createTool( tr( "TB_INFO" ),      QString( "SMESHInformationToolbar" ) ),
-       groupTb      = createTool( tr( "TB_GROUP" ),     QString( "SMESHGroupToolbar" ) ),
-       ctrl0dTb     = createTool( tr( "TB_CTRL0D" ),    QString( "SMESHNodeControlsToolbar" ) ),
-       ctrl1dTb     = createTool( tr( "TB_CTRL1D" ),    QString( "SMESHEdgeControlsToolbar" ) ),
-       ctrl2dTb     = createTool( tr( "TB_CTRL2D" ),    QString( "SMESHFaceControlsToolbar" ) ),
-       ctrl3dTb     = createTool( tr( "TB_CTRL3D" ),    QString( "SMESHVolumeControlsToolbar" ) ),
-       addElemTb    = createTool( tr( "TB_ADD" ),       QString( "SMESHAddElementToolbar" ) ),
-       addNonElemTb = createTool( tr( "TB_ADDNON" ),    QString( "SMESHAddElementToolbar" ) ),
-       remTb        = createTool( tr( "TB_REM" ),       QString( "SMESHRemoveToolbar" ) ),
-     //renumbTb     = createTool( tr( "TB_RENUMBER" ),  QString( "SMESHRenumberingToolbar" ) ),
-       transformTb  = createTool( tr( "TB_TRANSFORM" ), QString( "SMESHTransformationToolbar" ) ),
-       modifyTb     = createTool( tr( "TB_MODIFY" ),    QString( "SMESHModificationToolbar" ) ),
-       measuremTb   = createTool( tr( "TB_MEASUREM" ),  QString( "SMESHMeasurementsToolbar" ) ),
-       dispModeTb   = createTool( tr( "TB_DISP_MODE" ), QString( "SMESHDisplayModeToolbar" ) );
+   int meshTb       = createTool( tr( "TB_MESH" ),      QString( "SMESHMeshToolbar" ) ) ;
    createTool( SMESHOp::OpCreateMesh,        meshTb );
    createTool( SMESHOp::OpCreateSubMesh,     meshTb );
    createTool( SMESHOp::OpEditMeshOrSubMesh, meshTb );
    createTool( SMESHOp::OpEvaluate,          meshTb );
    createTool( SMESHOp::OpMeshOrder,         meshTb );
  
+   int infoTb       = createTool( tr( "TB_INFO" ),      QString( "SMESHInformationToolbar" ) ) ;
+   createTool( SMESHOp::OpMeshInformation,    infoTb );
+   //createTool( SMESHOp::OpStdInfo, meshTb );
+   //createTool( SMESHOp::OpWhatIs, meshTb ); // VSR: issue #0021242 (eliminate "Mesh Element Information" command)
+   createTool( SMESHOp::OpFindElementByPoint, infoTb );
+   int groupTb      = createTool( tr( "TB_GROUP" ),     QString( "SMESHGroupToolbar" ) ) ;
    createTool( SMESHOp::OpCreateGroup,         groupTb );
    createTool( SMESHOp::OpCreateGeometryGroup, groupTb );
    createTool( SMESHOp::OpConstructGroup,      groupTb );
    createTool( SMESHOp::OpEditGroup,           groupTb );
  
-   createTool( SMESHOp::OpMeshInformation,    info );
-   //createTool( SMESHOp::OpStdInfo, meshTb );
-   //createTool( SMESHOp::OpWhatIs, meshTb ); // VSR: issue #0021242 (eliminate "Mesh Element Information" command)
-   createTool( SMESHOp::OpFindElementByPoint, info );
+   int ctrl0dTb     = createTool( tr( "TB_CTRL0D" ),    QString( "SMESHNodeControlsToolbar" ) ) ;
    createTool( SMESHOp::OpFreeNode,  ctrl0dTb );
    createTool( SMESHOp::OpEqualNode, ctrl0dTb );
    //createTool( SMESHOp::OpNodeConnectivityNb, ctrl0dTb );
  
+   int ctrl1dTb     = createTool( tr( "TB_CTRL1D" ),    QString( "SMESHEdgeControlsToolbar" ) ) ;
    createTool( SMESHOp::OpFreeBorder, ctrl1dTb );
    createTool( SMESHOp::OpLength,     ctrl1dTb );
    createTool( SMESHOp::OpConnection, ctrl1dTb );
    createTool( SMESHOp::OpEqualEdge,  ctrl1dTb );
  
+   int ctrl2dTb     = createTool( tr( "TB_CTRL2D" ),    QString( "SMESHFaceControlsToolbar" ) ) ;
    createTool( SMESHOp::OpFreeEdge,            ctrl2dTb );
    createTool( SMESHOp::OpFreeFace,            ctrl2dTb );
    createTool( SMESHOp::OpBareBorderFace,      ctrl2dTb );
    createTool( SMESHOp::OpEqualFace,           ctrl2dTb );
    createTool( SMESHOp::OpDeflection2D,        ctrl2dTb );
  
+   int ctrl3dTb     = createTool( tr( "TB_CTRL3D" ),    QString( "SMESHVolumeControlsToolbar" ) ) ;
    createTool( SMESHOp::OpAspectRatio3D,         ctrl3dTb );
    createTool( SMESHOp::OpVolume,                ctrl3dTb );
    createTool( SMESHOp::OpMaxElementLength3D,    ctrl3dTb );
    createTool( SMESHOp::OpOverConstrainedVolume, ctrl3dTb );
    createTool( SMESHOp::OpEqualVolume,           ctrl3dTb );
  
+   int addElemTb    = createTool( tr( "TB_ADD" ),       QString( "SMESHAddElementToolbar" ) ) ;
    createTool( SMESHOp::OpNode,              addElemTb );
    createTool( SMESHOp::OpElem0D,            addElemTb );
    createTool( SMESHOp::OpElem0DOnElemNodes, addElemTb );
    createTool( SMESHOp::OpHexagonalPrism,    addElemTb );
    createTool( SMESHOp::OpPolyhedron,        addElemTb );
  
+   int addNonElemTb = createTool( tr( "TB_ADDNON" ),    QString( "SMESHAddElementToolbar" ) ) ;
    createTool( SMESHOp::OpQuadraticEdge,          addNonElemTb );
    createTool( SMESHOp::OpQuadraticTriangle,      addNonElemTb );
    createTool( SMESHOp::OpBiQuadraticTriangle,    addNonElemTb );
    createTool( SMESHOp::OpQuadraticHexahedron,    addNonElemTb );
    createTool( SMESHOp::OpTriQuadraticHexahedron, addNonElemTb );
  
+   int remTb        = createTool( tr( "TB_REM" ),       QString( "SMESHRemoveToolbar" ) ) ;
    createTool( SMESHOp::OpRemoveNodes,       remTb );
    createTool( SMESHOp::OpRemoveElements,    remTb );
    createTool( SMESHOp::OpRemoveOrphanNodes, remTb );
    createTool( SMESHOp::OpClearMesh,         remTb );
  
+ //   int renumbTb     = createTool( tr( "TB_RENUMBER" ),  QString( "SMESHRenumberingToolbar" ) ) ;
    //createTool( SMESHOp::OpRenumberingNodes,    renumbTb );
    //createTool( SMESHOp::OpRenumberingElements, renumbTb );
  
+   int transformTb  = createTool( tr( "TB_TRANSFORM" ), QString( "SMESHTransformationToolbar" ) ) ;
    createTool( SMESHOp::OpMergeNodes,     transformTb );
    createTool( SMESHOp::OpMergeElements,  transformTb );
    createTool( SMESHOp::OpTranslation,    transformTb );
    createTool( SMESHOp::OpSewing,         transformTb );
    createTool( SMESHOp::OpDuplicateNodes, transformTb );
  
+   int modifyTb     = createTool( tr( "TB_MODIFY" ),    QString( "SMESHModificationToolbar" ) ) ;
    createTool( SMESHOp::OpConvertMeshToQuadratic, modifyTb );
    createTool( SMESHOp::OpCreateBoundaryElements, modifyTb );
    createTool( SMESHOp::OpExtrusion,              modifyTb );
    createTool( SMESHOp::OpSmoothing,              modifyTb );
    createTool( SMESHOp::OpPatternMapping,         modifyTb );
  
+   // Adaptation - begin
+   int adaptTb      = createTool( tr( "TB_ADAPTATION" ),QString( "SMESHAdaptationToolbar" ) ) ;
+   createTool( SMESHOp::OpMGAdapt,              adaptTb );
+   // Adaptation - end
+   int measuremTb   = createTool( tr( "TB_MEASUREM" ),  QString( "SMESHMeasurementsToolbar" ) ) ;
    createTool( SMESHOp::OpMinimumDistance, measuremTb );
  
+   int dispModeTb   = createTool( tr( "TB_DISP_MODE" ), QString( "SMESHDisplayModeToolbar" ) );
    createTool( SMESHOp::OpUpdate, dispModeTb );
  
    QString lc = "$";        // VSR : instead of QtxPopupSelection::defEquality();
    popupMgr()->insert( separator(), -1, 0 );
    createPopupItem( SMESHOp::OpConvertMeshToQuadratic, OB, mesh_submesh, "&& " + hasElems );
    createPopupItem( SMESHOp::OpCreateBoundaryElements, OB, mesh_group, "&& selcount=1 && dim>=2");
-   //popupMgr()->insert( separator(), -1, 0 );
+   popupMgr()->insert( separator(), -1, 0 );
  
-   //popupMgr()->insert( separator(), -1, 0 );
+   // Adaptation - begin
+   createPopupItem( SMESHOp::OpMGAdapt,              OB, mesh );
+   // Adaptation - end
  
    QString only_one_non_empty = QString( " && %1=1 && numberOfNodes>0" ).arg( dc );
    QString multiple_non_empty = QString( " && %1>0 && numberOfNodes>0" ).arg( dc );
@@@ -5139,7 -5154,7 +5162,7 @@@ bool SMESHGUI::activateModule( SUIT_Stu
    lab = lab + tr("INFO_COMPUTE") + "<br/>";
    lab = lab + tr("INFO_REFINE") + ":";
    items << wrap(tr("INFO_REFINE_LOCAL_SIZE"), "li")
-       << wrap(tr("INFO_REFINE_SUBMESH"), "li");
+         << wrap(tr("INFO_REFINE_SUBMESH"), "li");
    lab = lab + wrap(items.join(""), "ul");
    items.clear();
  
  
    gb = app->infoPanel()->addGroup(tr("INFO_GRP_IMPORT_MESH"));
    items << wrap("UNV", "li")
-       << wrap("MED", "li")
-       << wrap("STL", "li")
-       << wrap("CGNS", "li")
-       << wrap("SAUV", "li")
-       << wrap("GMF", "li");
+         << wrap("MED", "li")
+         << wrap("STL", "li")
+         << wrap("CGNS", "li")
+         << wrap("SAUV", "li")
+         << wrap("GMF", "li");
    lab = tr("INFO_AVAILABLE_FORMATS") + ":" + wrap(items.join(""), "ul");
    items.clear();
-   
    app->infoPanel()->addLabel(lab, gb);
-     
    gb = app->infoPanel()->addGroup(tr("INFO_GRP_CHECK_MESH"));
    lab = tr("INFO_DISPLAY") + "<br/>";
    items << wrap(tr("INFO_QUALITY_AREA"), "li")
-       << wrap(tr("INFO_QUALITY_VOLUME"), "li")
-       << wrap(tr("INFO_QUALITY_ASPECT_RATION"), "li")
-       << wrap("...", "li");
+         << wrap(tr("INFO_QUALITY_VOLUME"), "li")
+         << wrap(tr("INFO_QUALITY_ASPECT_RATION"), "li")
+         << wrap("...", "li");
    lab = lab + tr("INFO_QUALITY_INFO") + ":" + wrap(items.join(""), "ul");
    items.clear();
    lab = lab + tr("INFO_CLIPPING");
-   
    app->infoPanel()->addLabel(lab, gb);
    // << Help Panel
  
@@@ -5374,7 -5389,7 +5397,7 @@@ void SMESHGUI::createPreferences(
    setPreferenceProperty( dispgroup, "columns", 2 );
  
    addPreference( tr( "PREF_FITALL_ON_DISPLAYONLY" ), dispgroup, LightApp_Preferences::Bool, "SMESH", "fitall_on_displayonly" );
-   
    int dispmode = addPreference( tr( "PREF_DISPLAY_MODE" ), dispgroup, LightApp_Preferences::Selector, "SMESH", "display_mode" );
    QStringList modes;
    modes.append( tr("MEN_WIRE") );
    setPreferenceProperty( coloringType, "indexes", indices );
    addPreference( tr( "SMESH_DISTRIBUTION_COLOR" ), distributionGr, LightApp_Preferences::Color, "SMESH", "distribution_color" );
  
+   // Adaptation - begin
+   // Adaptation tab ------------------------------------------------------------------------
+   int adaptTab = addPreference( tr( "ADAPT_PREF_TAB_GENERAL" ) );
+   int bloc, pref ;
+   // MG-Adapt
+   bloc = addPreference( tr( "ADAPT_PREF_MG_ADAPT" ), adaptTab );
+   setPreferenceProperty( bloc, "columns", 1 );
+   pref = addPreference( tr( "ADAPT_PREF_MG_ADAPT_FILE_MAILLAGE_OUT" ), bloc, LightApp_Preferences::Bool, "HOMARD", "mg_adapt_file_mesh_out" );
+   pref = addPreference( tr( "ADAPT_PREF_MG_ADAPT_PUBLICATION_MAILLAGE_OUT" ), bloc, LightApp_Preferences::Bool, "HOMARD", "mg_adapt_publish_mesh_out" );
+   pref = addPreference( tr( "ADAPT_PREF_MG_ADAPT_SIZE_MAP" ), bloc, LightApp_Preferences::Selector, "HOMARD", "mg_adapt_size_map" );
+   QStringList aListOfSizeMap;
+   aListOfSizeMap << tr( "ADAPT_PREF_MG_ADAPT_SIZE_MAP_LOCAL" );
+   aListOfSizeMap << tr( "ADAPT_PREF_MG_ADAPT_SIZE_MAP_BACKGROUND" );
+   aListOfSizeMap << tr( "ADAPT_PREF_NONE" );;
+   setPreferenceProperty( pref, "strings", aListOfSizeMap );
+   pref = addPreference( tr( "ADAPT_PREF_MG_ADAPT_TIME_STEP" ), bloc, LightApp_Preferences::Selector, "HOMARD", "mg_adapt_time_step" );
+   QStringList aListOfTimeStep;
+   aListOfTimeStep << tr( "ADAPT_PREF_NONE" );
+   aListOfTimeStep << tr( "ADAPT_PREF_MG_ADAPT_TIME_STEP_LAST" );
+   aListOfTimeStep << tr( "ADAPT_PREF_MG_ADAPT_TIME_STEP_C" );;
+   setPreferenceProperty( pref, "strings", aListOfTimeStep );
+   // Adaptation - end
  }
  
  void SMESHGUI::preferencesChanged( const QString& sect, const QString& name )
@@@ -5964,6 -6002,10 +6010,10 @@@ LightApp_Operation* SMESHGUI::createOpe
    case SMESHOp::OpElem0DOnElemNodes: // Create 0D elements on all nodes
      op = new SMESHGUI_Add0DElemsOnAllNodesOp();
      break;
+   // Adaptation - begin
+   case SMESHOp::OpMGAdapt:
+     break;
+   // Adaptation - end
    default:
      break;
    }
index 9079fbf5a75fd310b1758e567296ee010b277ef7,9b2d937ffa304b216248e76c408e8238d0847abe..b9df761dd2f511c7492e19606d7c740c939a8b80
@@@ -31,15 -31,17 +31,16 @@@ INCLUDE_DIRECTORIES
    ${PROJECT_SOURCE_DIR}/src/Controls
    ${PROJECT_SOURCE_DIR}/src/SMDS
    ${PROJECT_SOURCE_DIR}/src/SMESHDS
 +  ${PROJECT_SOURCE_DIR}/src/SMESH_I
    ${PROJECT_SOURCE_DIR}/src/MEDWrapper
    ${PROJECT_SOURCE_DIR}/src/Driver
    ${PROJECT_SOURCE_DIR}/src/DriverMED
    ${PROJECT_SOURCE_DIR}/src/DriverCGNS
    ${PROJECT_SOURCE_DIR}/src/SMESH
    ${PROJECT_SOURCE_DIR}/src/SMESHUtils
 -  #~${PROJECT_SOURCE_DIR}/src/ADAPT
    ${PROJECT_BINARY_DIR}
    ${PROJECT_BINARY_DIR}/idl
 -  #~${PROJECT_BINARY_DIR}/ADAPT
+   ${MEDCOUPLING_INCLUDE_DIRS}
  )
  
  # additional preprocessor / compiler flags
@@@ -84,6 -86,7 +85,7 @@@ SET(_link_LIBRARIE
    SMESHDS
    SMESHControls
    MeshDriverMED
+   ${MEDCoupling_medloader}
  )
  
  # --- headers ---
@@@ -112,7 -115,7 +114,8 @@@ SET(SMESHEngine_HEADER
    SMESH_PreMeshInfo.hxx
    SMESH_MeshPartDS.hxx
    SMESH.hxx
 +  SMESH_Component_Generator.hxx
+   MG_ADAPT_i.hxx
  )
  
  # --- sources ---
@@@ -140,7 -143,7 +143,8 @@@ SET(SMESHEngine_SOURCE
    SMESH_NoteBook.cxx
    SMESH_Measurements_i.cxx
    SMESH_PreMeshInfo.cxx
 +  SMESH_Component_Generator.cxx
+   MG_ADAPT_i.cxx
  )
  
  # --- rules ---
index 5a5ba6fad617fca978243ac9b30021c0c2776860,817abd07c790003944d31648f1abe2a9d151e496..d5c6be39962da6c95e1a27520a19dcec153d67d2
@@@ -104,7 -104,7 +104,7 @@@ public
    // Get SMESH module's POA object
    static PortableServer::POA_var GetPOA() { return myPoa;}
    // Get Naming Service object
 -  static SALOME_NamingService* GetNS();
 +  static SALOME_NamingService_Abstract* GetNS();
    // Get SALOME_LifeCycleCORBA object
    static SALOME_LifeCycleCORBA* GetLCC();
    // Retrieve and get GEOM engine reference
  
    int CountInPyDump(const TCollection_AsciiString& text);
  
+   SMESH::MG_ADAPT_ptr CreateMG_ADAPT();
+   SMESH::MG_ADAPT_ptr CreateAdaptationHypothesis();
+   SMESH::MG_ADAPT_OBJECT_ptr Adaptation( const char* adaptationType);
    // *****************************************
    // Internal methods
    // *****************************************
@@@ -646,10 -650,10 +650,10 @@@ private
  
  protected:
    static GEOM::GEOM_Gen_var      myGeomGen;
 +  static SALOME_NamingService_Abstract*   myNS;          // Naming Service
  private:
    static CORBA::ORB_var          myOrb;         // ORB reference
    static PortableServer::POA_var myPoa;         // POA reference
 -  static SALOME_NamingService*   myNS;          // Naming Service
    static SALOME_LifeCycleCORBA*  myLCC;         // Life Cycle CORBA
    static SMESH_Gen_i*            mySMESHGen;    // Point to last created instance of the class
    ::SMESH_Gen                    myGen;         // SMESH_Gen local implementation