--- /dev/null
+# Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS, L3S, LJLL, MENSI
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
+# -* Makefile *-
+#
+# Author : Christian VAN WAMBEKE (CEA)
+# Date : 2007/02/01
+#
+
+# source path
+top_srcdir=@top_srcdir@
+top_builddir=.
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/bin:@top_srcdir@/resources:./bin:@top_srcdir@/idl
+
+
+@COMMENCE@
+
+SUBDIRS = idl src adm_local
+
+RESOURCES_FILES = \
+ GHS3DPRLPLUGIN.xml \
+ mesh_algo_GHS3DPRL.png \
+ mesh_hypo_GHS3DPRL.png \
+ mesh_tree_algo_GHS3DPRL.png \
+ mesh_tree_hypo_GHS3DPRL.png \
+ GHS3DPRL.png
+
+BIN_SCRIPT = VERSION
+
+# copy header files in common directory ------------
+
+ifeq ($(HAVE_SSTREAM),yes)
+ include_list=include/salome/SALOMEconfig.h
+else
+ include_list=include/salome/SALOMEconfig.h include/salome/sstream
+endif
+
+inc: idl $(include_list)
+
+include/salome/SALOMEconfig.h: salome_adm/unix/SALOMEconfig.ref
+ -$(RM) $@
+ $(LN_S) ../../$< $@
+
+# test if SALOMEconfig.h has changed (contents)
+salome_adm/unix/SALOMEconfig.ref: salome_adm/unix/SALOMEconfig.h
+ @if ! [ -a $@ ]; then \
+ cp -p -f $< $@; \
+ fi; \
+ if ! cmp $< $@; then \
+ cp -p -f $< $@; \
+ fi; \
+
+include/salome/sstream: salome_adm/unix/sstream
+ -$(RM) $@
+ $(LN_S) ../../$< $@
+
+# install script in $(bindir) :
+install-bin: $(BIN_SCRIPT)
+ $(INSTALL) -d $(bindir)
+ if test $(BIN_SCRIPT)X != X; then \
+ $(INSTALL_PROGRAM) $^ $(bindir); \
+ fi
+
+# CLEAN --------------------
+
+distclean: distclean-other
+
+distclean-other:
+ -$(RM) salome_adm/unix/*~ salome_adm/unix/*% salome_adm/unix/*.bak salome_adm/unix/*.new salome_adm/unix/*.old
+ -$(RM) salome_adm/unix/make_*
+ -$(RM) salome_adm/unix/depend salome_adm/unix/SALOMEconfig.h
+ -$(RM) config.cache config.log config.status
+
+@MODULE@
+
+install: install-bin
--- /dev/null
+# Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS, L3S, LJLL, MENSI
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
+# source path
+top_srcdir=@top_srcdir@
+top_builddir=..
+srcdir=@srcdir@
+VPATH=.:$(srcdir)/adm_local
+
+
+all: resources
+
+install:
+ cp -rf @top_srcdir@/adm_local @prefix@
+
+bin:
+
+resources :
+ cp -rf @top_srcdir@/adm_local $(top_builddir)
+
+inc:
+
+lib:
+
+depend:
+
+depend_idl:
+
+install-end:
+
+install-include:
+
+install-bin:
+
+uninstall:
+
+uninstall-idl:
+
+distclean:
+
+clean:
+
+distclean-other:
+
--- /dev/null
+AC_DEFUN([CHECK_GHS3DPRL],[
+
+AC_REQUIRE([AC_PROG_CXX])dnl
+AC_REQUIRE([AC_PROG_CXXCPP])dnl
+
+AC_CHECKING(for GHS3DPRL(Tepal) commercial product)
+
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+
+AC_ARG_WITH(,
+ [ --with-GHS3DPRL=DIR root directory path of Tepal installation],
+ GHS3DPRL_HOME=$withval,GHS3DPRL_HOME="")
+
+GHS3DPRL_ok=no
+
+if test "x$GHS3DPRL_HOME" == "x" ; then
+
+# no --with-GHS3DPRL option used
+ if test "x$GHS3DPRLHOME" != "x" ; then
+
+ # GHS3DPRLHOME environment variable defined
+ GHS3DPRL_HOME=$GHS3DPRLHOME
+
+ fi
+#
+fi
+
+if test "x$GHS3DPRL_HOME" != "x"; then
+
+ echo
+ echo -------------------------------------------------
+ echo You are about to choose to use somehow the
+ echo "GHS3DPRL(Tepal) commercial product to generate 3D tetrahedral mesh."
+ echo
+
+ AC_MSG_CHECKING(for GHS3DPRL(Tepal) executable)
+
+ AC_CHECK_PROG(GHS3DPRL,tepal,found)
+
+ if test "x$GHS3DPRL" == x ; then
+ AC_MSG_RESULT(no)
+ AC_MSG_WARN(Tepal program not found in PATH variable)
+ else
+ GHS3DPRL_ok=yes
+ fi
+
+fi
+
+AC_MSG_RESULT(for GHS3DPRL(Tepal): $GHS3DPRL_ok)
+AC_LANG_RESTORE
+
+])dnl
--- /dev/null
+# common directories to put headerfiles
+inc_builddir=$(top_builddir)/include/salome
+
+@SET_MAKE@
+SHELL=/bin/sh
+
+# header missing
+
+HAVE_SSTREAM=@HAVE_SSTREAM@
+
+
+LIBS=@LIBS@
+LDFLAGS=@LDFLAGS@ -L$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome -Xlinker -rpath-link -Xlinker $(top_builddir)/lib@LIB_LOCATION_SUFFIX@/salome
+# add libstdc++ to link c++ library with libtool !
+LDFLAGS+= -lstdc++
+
+CP=@CP@
+
+# CPP
+
+CPP=@CPP@
+CXXCPP=@CXXCPP@
+CPPFLAGS=@CPPFLAGS@ -I$(inc_builddir) -I$(srcdir) -I.
+
+# C
+
+CC = @CC@
+CFLAGS = @CFLAGS@
+C_DEPEND_FLAG = @C_DEPEND_FLAG@
+
+# C++
+
+CXX = @CXX@
+CXXFLAGS = @CXXFLAGS@
+CXX_DEPEND_FLAG = @CXX_DEPEND_FLAG@
+
+# BOOST Library
+
+BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+
+# JAVA
+
+JAVA_INCLUDES = @JAVA_INCLUDES@
+JAVA_LIBS = @JAVA_LIBS@
+JAVA_LDPATH = @JAVA_LDPATH@
+
+# PYTHON
+
+PYTHON = @PYTHON@
+PYTHONHOME = @PYTHONHOME@
+PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_VERSION = @PYTHON_VERSION@
+PYTHON_SITE = @PYTHON_SITE@
+PYTHON_SITE_INSTALL = @PYTHON_SITE_INSTALL@
+
+# QT
+
+QT_ROOT = @QT_ROOT@
+QT_INCLUDES = @QT_INCLUDES@
+QT_MT_INCLUDES = @QT_INCLUDES@ -DQT_THREAD_SUPPORT
+QT_LIBS = @QT_LIBS@
+QT_MT_LIBS = @QT_MT_LIBS@
+
+MOC = @MOC@
+UIC = @UIC@
+MSG2QM = @MSG2QM@
+
+#QWT
+
+QWT_INCLUDES=@QWT_INCLUDES@
+QWT_LIBS=@QWT_LIBS@
+
+# SIP
+SIP = @SIP@
+SIP_INCLUDES = @SIP_INCLUDES@
+SIP_LIBS = @SIP_LIBS@
+
+# PYQT
+PYQT_SIPS = @PYQT_SIPS@
+PYQT_LIBS = @PYQT_LIBS@
+
+# openGL
+OGL_INCLUDES=@OGL_INCLUDES@
+OGL_LIBS=@OGL_LIBS@
+
+# VTK
+VTK_INCLUDES=@VTK_INCLUDES@
+VTK_LIBS=@VTK_LIBS@
+
+# HDF5
+
+HDF5_INCLUDES=@HDF5_INCLUDES@
+HDF5_LIBS=@HDF5_LIBS@
+HDF5_MT_LIBS=@HDF5_MT_LIBS@
+
+# MED2
+
+MED2_INCLUDES=@MED2_INCLUDES@
+MED2_LIBS=@MED2_LIBS@
+MED2_MT_LIBS=@MED2_MT_LIBS@
+
+# OpenCasCade
+
+OCC_INCLUDES=@CAS_CPPFLAGS@
+OCC_CXXFLAGS=@CAS_CXXFLAGS@
+
+OCC_KERNEL_LIBS=@CAS_KERNEL@
+OCC_OCAF_LIBS=@CAS_OCAF@
+OCC_VIEWER_LIBS=@CAS_VIEWER@
+OCC_MODELER_LIBS=@CAS_MODELER@
+OCC_DATAEXCHANGE_LIBS=@CAS_DATAEXCHANGE@
+OCC_LIBS=@CAS_LDFLAGS@
+OCC_LDPATH=@CAS_LDPATH@
+
+# MPICH
+
+MPICH_INCLUDES=@MPICH_INCLUDES@
+MPICH_LIBS=@MPICH_LIBS@
+
+# Swig C++ Python
+
+SWIG = @SWIG@
+SWIG_FLAGS = @SWIG_FLAGS@ -I$(inc_builddir) -I$(srcdir) -I.
+
+# OMNIORB
+
+OMNIORB_ROOT = @OMNIORB_ROOT@
+OMNIORB_INCLUDES = @OMNIORB_INCLUDES@
+OMNIORB_LIBS = @OMNIORB_LIBS@
+OMNIORB_CXXFLAGS = @OMNIORB_CXXFLAGS@
+
+OMNIORB_IDL = @OMNIORB_IDL@
+OMNIORB_IDLCXXFLAGS = @OMNIORB_IDLCXXFLAGS@
+OMNIORB_IDLPYFLAGS = @OMNIORB_IDLPYFLAGS@ -I$(srcdir) -I$(KERNEL_ROOT_DIR)/idl/salome \
+ -I$(GEOM_ROOT_DIR)/idl/salome -I$(MED_ROOT_DIR)/idl/salome\
+ -I$(SMESH_ROOT_DIR)/idl/salome
+
+OMNIORB_IDL_CLN_H = @OMNIORB_IDL_CLN_H@
+OMNIORB_IDL_CLN_CXX = @OMNIORB_IDL_CLN_CXX@
+OMNIORB_IDL_CLN_OBJ = @OMNIORB_IDL_CLN_OBJ@
+
+OMNIORB_IDL_SRV_H = @OMNIORB_IDL_SRV_H@
+OMNIORB_IDL_SRV_CXX = @OMNIORB_IDL_SRV_CXX@
+OMNIORB_IDL_SRV_OBJ = @OMNIORB_IDL_SRV_OBJ@
+
+# Default ORB
+
+CORBA_ROOT = @CORBA_ROOT@
+CORBA_INCLUDES = @CORBA_INCLUDES@
+CORBA_LIBS = @CORBA_LIBS@
+CORBA_CXXFLAGS = @CORBA_CXXFLAGS@
+
+IDLCXXFLAGS = -bcxx @IDLCXXFLAGS@ -I$(srcdir) -I$(KERNEL_ROOT_DIR)/idl/salome \
+ -I$(GEOM_ROOT_DIR)/idl/salome -I$(MED_ROOT_DIR)/idl/salome\
+ -I$(SMESH_ROOT_DIR)/idl/salome
+IDLPYFLAGS = @IDLPYFLAGS@
+
+IDL = @IDL@
+
+IDL_CLN_H = @IDL_CLN_H@
+IDL_CLN_CXX = @IDL_CLN_CXX@
+IDL_CLN_OBJ = @IDL_CLN_OBJ@
+
+IDL_SRV_H = @IDL_SRV_H@
+IDL_SRV_CXX = @IDL_SRV_CXX@
+IDL_SRV_OBJ = @IDL_SRV_OBJ@
+
+CPPFLAGS+= $(CORBA_INCLUDES)
+CXXFLAGS+= $(CORBA_CXXFLAGS)
+
+# SALOME
+
+SALOME_INCLUDES = \
+ -I$(KERNEL_ROOT_DIR)/include/salome \
+ -I$(GEOM_ROOT_DIR)/include/salome \
+ -I$(SMESH_ROOT_DIR)/include/salome
+
+CPPFLAGS += -DSOLIDGEOM -DLINUX $(OCC_INCLUDES) $(SALOME_INCLUDES) $(BOOST_CPPFLAGS)
+CXXFLAGS += -DSOLIDGEOM -DLINUX $(OCC_CXXFLAGS) $(SALOME_INCLUDES)
+
+LDFLAGS += -L${KERNEL_ROOT_DIR}/lib@LIB_LOCATION_SUFFIX@/salome -L${SMESH_ROOT_DIR}/lib@LIB_LOCATION_SUFFIX@/salome -L${GEOM_ROOT_DIR}/lib@LIB_LOCATION_SUFFIX@/salome -lSMESHimpl -lSMESHEngine -lStdMeshers -lStdMeshersEngine -lSalomeGenericObj
+
+# add corba libs when link salome application !
+#LDFLAGS+= $(CORBA_LIBS)
+LIBS+=$(CORBA_LIBS)
+
+## Shared libraries
+LT_STATIC_EXEC=@LT_STATIC_EXEC@
+DYNAMIC_DIRS=@DYNAMIC_DIRS@
+LT_LIB=libtool
+LT=$(top_builddir)/libtool
+LT_COMPILE=$(LT) --mode=compile $(CC)
+LT_LINK_LIB=$(LT_LIB) --mode=link $(CC) -rpath $(libdir)
+LT_LINK_EXE=$(LT) --mode=link $(CC) $(LT_STATIC_EXEC) -dlopen self -rpath $(bindir) $(DYNAMIC_DIRS)
+LT_RUN=$(LT) --mode=execute
+LT_INSTALL_PROG=$(LT) --mode=install $(INSTALL_PROGRAM)
+LT_INSTALL_LIB=$(LT) --mode=install $(INSTALL_DATA)
+LT_UNINSTALL=$(LT) --mode=uninstall $(RM)
+
+INSTALL=@INSTALL@
+INSTALL_PROGRAM=@INSTALL_PROGRAM@
+INSTALL_DATA=@INSTALL_DATA@
+
+# create a symbolic link (or a copie ?)
+LN_S=@LN_S@
+
+## Installation points
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+bindir=@bindir@/salome
+libdir=@exec_prefix@/lib@LIB_LOCATION_SUFFIX@/salome
+# warning : if user give this path in configure we could have salome/salome :-(
+includedir=@includedir@/salome
+datadir=@datadir@/salome
+idldir=$(prefix)/idl/salome
+sharedpydir=@exec_prefix@/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules
+
+docdir=${prefix}/doc/salome
+
+#
+# begin of package rules
+#
+
+.PHONY: all lib bin inc resources docs tests install uninstall dep depend depend_idl cleandep mostlyclean clean distclean
+
+.SUFFIXES: .cxx .cc .c .f .o .lo .idl .py .i .ui .po .qm
+
+all:
+ $(MAKE) inc
+ $(MAKE) depend_idl
+ $(MAKE) depend
+ $(MAKE) lib
+ $(MAKE) bin
+ $(MAKE) resources
+
+#
+# add target to build administrative files
+#
+
+Makefile: $(top_builddir)/config.status $(srcdir)/Makefile.in
+ cd $(top_builddir) ; ./config.status
+
+LOCAL_MAKE = make_commence make_omniorb
+
+KERNEL_MAKE = make_module make_conclude depend SALOMEconfig.h F77config.h sstream envScript
+
+$(top_builddir)/config.status: $(top_srcdir)/configure \
+ $(LOCAL_MAKE:%=$(top_srcdir)/adm_local/unix/%.in) \
+ $(KERNEL_MAKE:%=$(KERNEL_ROOT_DIR)/salome_adm/unix/%.in)
+ cd $(top_builddir) ; ./config.status --recheck
+
+# VPATH contain $(srcdir), so make configure is good in top_srcdir and we must add target configure otherwise :-)
+ifneq ($(top_srcdir),$(srcdir))
+configure: $(top_srcdir)/configure
+endif
+
+$(top_srcdir)/configure: $(top_srcdir)/configure.in $(top_srcdir)/aclocal.m4
+ cd $(top_srcdir) ; autoconf
+
+$(top_srcdir)/configure.in: $(top_srcdir)/configure.in.base
+ cd $(top_srcdir) && ./build_configure
+
+
+ACLOCAL_KERNEL = \
+ac_cxx_bool.m4 check_corba.m4 \
+ac_cxx_depend_flag.m4 check_hdf5.m4 enable_pthreads.m4 \
+ac_cxx_mutable.m4 check_mico.m4 libtool.m4 \
+ac_cxx_namespaces.m4 check_omniorb.m4 pyembed.m4 \
+ac_cxx_partial_specialization.m4 python.m4 \
+ac_cxx_typename.m4 check_pthreads.m4 check_cas.m4 \
+ac_cc_warnings.m4 check_swig.m4 check_boost.m4
+
+ACLOCAL_GUI = \
+check_vtk.m4 check_opengl.m4 check_qt.m4 \
+check_GUI.m4 check_corba_in_GUI.m4
+
+ACLOCAL_GEOM = check_GEOM.m4
+
+ACLOCAL_SMESH = check_SMESH.m4
+
+$(top_srcdir)/aclocal.m4: $(ACLOCAL_KERNEL%=@KERNEL_ROOT_DIR@/salome_adm/unix/config_files/%) \
+ $(ACLOCAL_GUI:%=@GUI_ROOT_DIR@/adm_local/unix/config_files/%) \
+ $(ACLOCAL_GEOM:%=@GEOM_ROOT_DIR@/adm_local/unix/config_files/%) \
+ $(ACLOCAL_SMESH:%=@SMESH_ROOT_DIR@/adm_local/unix/config_files/%)
+ cd $(top_srcdir) ; aclocal -I adm_local/unix/config_files -I @KERNEL_ROOT_DIR@/salome_adm/unix/config_files \
+ -I @GUI_ROOT_DIR@/adm_local/unix/config_files \
+ -I @GEOM_ROOT_DIR@/adm_local/unix/config_files \
+ -I @SMESH_ROOT_DIR@/adm_local/unix/config_files
+
--- /dev/null
+#=======================================================================
+# Begin specific part to omniorb
+# (include from file adm/unix/make_omniorb generated by
+# adm/unix/make_omniorb.in)
+#=======================================================================
+# -* Makefile *-
+#
+# Author : Patrick GOLDBRONN (CEA)
+# Date : 29/06/2001
+#
+
+# Client and server object are the same with omniorb
+# There are one header file and one source file generate
+
+#IDLOBJ=$(IDLSRC:%.idl=%$(IDL_CLN_OBJ))
+
+# dependancies between idl and it's generated files
+%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${KERNEL_ROOT_DIR}/idl/salome/%.idl
+ $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
+
+%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${GEOM_ROOT_DIR}/idl/salome/%.idl
+ $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
+
+#%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${MED_ROOT_DIR}/idl/salome/%.idl
+# $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
+
+%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${SMESH_ROOT_DIR}/idl/salome/%.idl
+ $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
+
+%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${top_builddir}/idl/salome/%.idl
+ $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
+
+# dependncies between idl files
+depend_idl: .depidl
+
+# we use cpp to generate dependencies between idl files.
+# we change cpp output to keep only idl file and transform it to get a suitable rule
+.depidl: $(IDL_FILES)
+ @touch $@
+ @for dep in $? dummy; do \
+ if [ $$dep != "dummy" ]; then \
+ echo Building dependencies for $$dep; \
+ basedep=`basename $$dep .idl`; \
+ header="$$basedep"$(IDL_CLN_H); \
+ sed '\%^'"$$header"':%,\%[^\\]$$%d' <$@ >$@- && mv $@- $@; \
+ $(CPP) $(C_DEPEND_FLAG) -I$(srcdir) $$dep 2>/dev/null | \
+ sed `echo "s%$$basedep\\.idl%$$header:%g"` | \
+ sed 's% $(srcdir)/% %g' | \
+ sed 's% $(top_srcdir)/% %g' | \
+ sed 's% $(top_builddir)/% %g' | \
+ sed 's%^.*:\.o: *%%' | sed 's%^ *\\ *%%'| sed 's%^ *\(.*\):%\1:%' | \
+ sed 's/\.idl/$(IDL_CLN_H)/' >>$@; \
+ echo '' >>$@; \
+ fi; \
+ done ;
+
+-include .depidl
+
+#=======================================================================
+# End specific part to omniorb
+#=======================================================================
--- /dev/null
+THIS IS SALOME - GHS3DPRLPLUGIN VERSION: @VERSION@
--- /dev/null
+#!/bin/bash
+
+#
+# Tool for updating list of .in file for the SALOME project
+# and regenerating configure script
+#
+# Author : Marc Tajchman - CEA
+# Date : 10/10/2002
+#
+
+ORIG_DIR=`pwd`
+CONF_DIR=`echo $0 | sed -e "s,[^/]*$,,;s,/$,,;s,^$,.,"`
+
+########################################################################
+# Test if the KERNEL_ROOT_DIR is set correctly
+
+if test ! -d "${KERNEL_ROOT_DIR}"; then
+ echo "failed : KERNEL_ROOT_DIR variable is not correct !"
+ exit
+fi
+
+# Test if the KERNEL_SRC is set correctly
+
+#if test ! -d "${KERNEL_SRC}"; then
+# echo "failed : KERNEL_SRC variable is not correct !"
+# exit
+#fi
+########################################################################
+# Test if the GUI_ROOT_DIR is set correctly
+
+if test ! -d "${GUI_ROOT_DIR}"; then
+ echo "failed : GUI_ROOT_DIR variable is not correct !"
+ exit
+fi
+
+########################################################################
+# Test if the MED_ROOT_DIR is set correctly
+
+if test ! -d "${MED_ROOT_DIR}"; then
+ echo "failed : MED_ROOT_DIR variable is not correct !"
+ exit
+fi
+
+########################################################################
+# Test if the GEOM_ROOT_DIR is set correctly
+
+if test ! -d "${GEOM_ROOT_DIR}"; then
+ echo "failed : GEOM_ROOT_DIR variable is not correct !"
+ exit
+fi
+
+########################################################################
+# Test if the SMESH_ROOT_DIR is set correctly
+
+if test ! -d "${SMESH_ROOT_DIR}"; then
+ echo "failed : SMESH_ROOT_DIR variable is not correct !"
+ exit
+fi
+
+########################################################################
+# find_in - utility function
+#
+# usage :
+# find_in directory filename
+#
+# Finds files following the *.in pattern, recursively in the
+# directory (first argument).
+# Results are appended into the file (second argument)
+#
+# Difference from the standard unix find is that files are tested
+# before directories
+#
+
+find_in()
+{
+ local i
+ local f=$2
+
+# if the first argument is not a directory, returns
+
+ if [ ! -d "$1" ] ; then
+ return
+ fi
+
+# dont look in the CVS directories
+
+ case $1 in
+ */CVS) return ;;
+ */adm_local/*) return ;;
+ *) ;;
+ esac
+
+# for each regular file contained in the directory
+# test if it's a .in file
+
+ for i in "$1"/*
+ do
+ if [ -f "$i" ] ; then
+ case $i in
+ *.in) echo " "$i" \\" >> $f;;
+ *) ;;
+ esac
+ fi
+ done
+
+# for each subdirectory of the first argument, proceeds recursively
+
+ for i in "$1"/*
+ do
+ if [ -d "$i" ] ; then
+ find_in "$i" "$f"
+ fi
+ done
+}
+
+
+#######################################################################
+# Generate list of .in files (Makefile.in, config.h.in, etc)
+# appending it in file configure.in
+
+cd ${CONF_DIR}
+ABS_CONF_DIR=`pwd`
+
+echo
+echo "CONF_DIR : $CONF_DIR"
+echo "ABS_CONF_DIR : $ABS_CONF_DIR"
+echo "KERNEL_ROOT_DIR : $KERNEL_ROOT_DIR"
+echo "ROOT_SRCDIR : $ROOT_SRCDIR"
+echo
+
+#
+# Common part of the configure.in file
+#
+chmod u+w configure.in.base
+if ! \cp -f configure.in.base configure.in_tmp1
+then
+ echo
+ echo "error : can't create files in" ${CONF_DIR}
+ echo "aborting ..."
+ chmod u-w configure.in.base
+ exit
+fi
+chmod u-w configure.in.base
+
+if [ -e "${CONF_DIR}/salome_adm" ] ; then
+ echo "salome_adm file exists in the current directory"
+ \rm -f ${CONF_DIR}/salome_adm
+fi
+
+# make a link allowing AC_OUTPUT to find the salome_adm/.../*.in files
+echo "" >> configure.in_tmp1
+echo 'ln -fs ${KERNEL_ROOT_DIR}/salome_adm ${ROOT_SRCDIR}/.' >> configure.in_tmp1
+
+echo "" >> configure.in_tmp1
+echo "AC_OUTPUT([ \\" >> configure.in_tmp1
+
+#
+# List of .in files in the adm/unix directory
+# These files MUST be on top of AC_OUTPUT list so we
+# put them "manually"
+#
+
+echo " ./salome_adm/unix/SALOMEconfig.h \\" >> configure.in_tmp1
+echo " ./salome_adm/unix/F77config.h \\" >> configure.in_tmp1
+echo " ./salome_adm/unix/sstream \\" >> configure.in_tmp1
+echo " ./salome_adm/unix/depend \\" >> configure.in_tmp1
+echo " ./adm_local/unix/make_omniorb:${ABS_CONF_DIR}/adm_local/unix/make_omniorb.in \\" >> configure.in_tmp1
+echo " ./salome_adm/unix/envScript \\" >> configure.in_tmp1
+echo " ./adm_local/unix/make_commence:${ABS_CONF_DIR}/adm_local/unix/make_commence.in \\" >> configure.in_tmp1
+echo " ./salome_adm/unix/make_conclude \\" >> configure.in_tmp1
+echo " ./salome_adm/unix/make_module \\" >> configure.in_tmp1
+
+\rm -f configure.in_tmp2 configure.in_tmp3
+touch configure.in_tmp2
+find_in . configure.in_tmp2
+
+sed -e '/^...salome_adm/d' configure.in_tmp2 > configure.in_tmp3
+sed -e '/^...adm_local.unix.make_omniorb/d' configure.in_tmp3 configure.in_tmp2
+sed -e '/^...adm_local.unix.make_commence/d' configure.in_tmp2 > configure.in_tmp3
+sed -e '/configure.in/d' configure.in_tmp3 > configure.in_tmp2
+sed -e 's/.in / /' configure.in_tmp2 >> configure.in_tmp1
+#sed '/^.salome_adm/d' configure.in_tmp2 > configure.in_tmp3
+#sed '/configure.in/d' configure.in_tmp3 > configure.in_tmp2
+#sed 's/.in / /' configure.in_tmp2 >> configure.in_tmp1
+
+echo "])" >> configure.in_tmp1
+
+# delete the link created for AC_OUTPUT
+echo "" >> configure.in_tmp1
+#echo 'rm -f ${ROOT_SRCDIR}/salome_adm' >> configure.in_tmp1
+
+\mv configure.in_tmp1 configure.in_new
+\rm -f configure.in_tmp2 configure.in_tmp3
+
+########################################################################
+# Create new (or replace old) configure.in file
+# Print a message if the file is write protected
+#
+
+echo
+if test ! -f configure.in
+then
+ echo -n "Creating new file 'configure.in' ... "
+ if \mv configure.in_new configure.in >& /dev/null
+ then
+ echo "done"
+ else
+ echo "error, check your file permissions"
+ fi
+else
+ echo -n "Updating 'configure.in' file ... "
+ if ! \cp configure.in configure.in_old >& /dev/null
+ then
+ echo
+ echo
+ echo "Can't backup previous configure.in"
+ echo -n "Continue (you will not be able to revert) - (Y/N) ? "
+ read R
+ case "x$R" in
+ xn*) exit;;
+ xN*) exit;;
+ esac
+ echo
+ echo -n " "
+ fi
+ if \cp configure.in_new configure.in >& /dev/null
+ then
+ echo "done"
+ else
+ echo
+ echo "error, can't update previous configure.in"
+ fi
+fi
+
+########################################################################
+# Use autoconf to rebuild the configure script
+#
+
+if test -f configure
+then
+ echo -n "Updating 'configure' script ... "
+else
+ echo -n "Creating 'configure' script ... "
+fi
+
+aclocal -I adm_local/unix/config_files -I ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files \
+ -I ${GUI_ROOT_DIR}/adm_local/unix/config_files \
+ -I ${MED_ROOT_DIR}/adm_local/unix/config_files \
+ -I ${GEOM_ROOT_DIR}/adm_local/unix/config_files \
+ -I ${SMESH_ROOT_DIR}/adm_local/unix/config_files
+
+if autoconf
+then
+ echo "done"
+else
+ echo "failed (check file permissions and/or user quotas ...)"
+fi
+
+cd ${ORIG_DIR}
+
+echo
--- /dev/null
+#
+# PLEASE DO NOT MODIFY configure.in FILE
+#
+# ALL CHANGES WILL BE DISCARDED BY THE NEXT
+# build_configure COMMAND
+#
+# CHANGES MUST BE MADE IN configure.in.base FILE
+#
+#
+# Author : Christian VAN WAMBEKE (CEA)
+# Date : 2007/02/01
+# Modified by : Patrick GOLDBRONN (CEA)
+# Modified by : Marc Tajchman (CEA)
+#
+# Created from configure.in.base
+#
+
+AC_INIT(src)
+AC_CONFIG_AUX_DIR(${KERNEL_ROOT_DIR}/salome_adm/unix/config_files)
+AC_CANONICAL_HOST
+
+PACKAGE=salome
+AC_SUBST(PACKAGE)
+
+VERSION=0.0.1
+AC_SUBST(VERSION)
+
+dnl
+dnl Initialize source and build root directories
+dnl
+
+ROOT_BUILDDIR=`pwd`
+ROOT_SRCDIR=`echo $0 | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
+cd $ROOT_SRCDIR
+ROOT_SRCDIR=`pwd`
+cd $ROOT_BUILDDIR
+
+AC_SUBST(ROOT_SRCDIR)
+AC_SUBST(ROOT_BUILDDIR)
+
+echo
+echo Source root directory : $ROOT_SRCDIR
+echo Build root directory : $ROOT_BUILDDIR
+echo
+echo
+
+if test -z "$AR"; then
+ AC_CHECK_PROGS(AR,ar xar,:,$PATH)
+fi
+AC_SUBST(AR)
+
+dnl Export the AR macro so that it will be placed in the libtool file
+dnl correctly.
+export AR
+
+echo
+echo ---------------------------------------------
+echo testing make
+echo ---------------------------------------------
+echo
+
+AC_PROG_MAKE_SET
+AC_PROG_INSTALL
+dnl
+dnl libtool macro check for CC, LD, NM, LN_S, RANLIB, STRIP + pour les librairies dynamiques !
+
+AC_ENABLE_DEBUG(yes)
+AC_DISABLE_PRODUCTION
+
+echo ---------------------------------------------
+echo testing libtool
+echo ---------------------------------------------
+
+dnl first, we set static to no!
+dnl if we want it, use --enable-static
+AC_ENABLE_STATIC(no)
+
+AC_LIBTOOL_DLOPEN
+AC_PROG_LIBTOOL
+
+dnl Fix up the INSTALL macro if it s a relative path. We want the
+dnl full-path to the binary instead.
+case "$INSTALL" in
+ *install-sh*)
+ INSTALL='\${KERNEL_ROOT_DIR}'/salome_adm/unix/config_files/install-sh
+ ;;
+esac
+
+echo
+echo ---------------------------------------------
+echo testing C/C++
+echo ---------------------------------------------
+echo
+
+cc_ok=no
+dnl inutil car libtool
+dnl AC_PROG_CC
+AC_PROG_CXX
+AC_DEPEND_FLAG
+# AC_CC_WARNINGS([ansi])
+cc_ok=yes
+
+dnl Library libdl :
+AC_CHECK_LIB(dl,dlopen)
+
+dnl add library libm :
+AC_CHECK_LIB(m,ceil)
+
+dnl
+dnl Well we use sstream which is not in gcc pre-2.95.3
+dnl We must test if it exists. If not, add it in include !
+dnl
+
+AC_CXX_HAVE_SSTREAM
+
+dnl
+dnl ---------------------------------------------
+dnl testing MPICH
+dnl ---------------------------------------------
+dnl
+
+CHECK_MPICH
+
+echo
+echo ---------------------------------------------
+echo testing LEX \& YACC
+echo ---------------------------------------------
+echo
+
+lex_yacc_ok=no
+AC_PROG_YACC
+AC_PROG_LEX
+lex_yacc_ok=yes
+
+echo
+echo ---------------------------------------------
+echo testing python
+echo ---------------------------------------------
+echo
+
+CHECK_PYTHON
+
+echo
+echo ---------------------------------------------
+echo BOOST Library
+echo ---------------------------------------------
+echo
+
+CHECK_BOOST
+
+dnl echo
+dnl echo ---------------------------------------------
+dnl echo testing java
+dnl echo ---------------------------------------------
+dnl echo
+
+dnl CHECK_JAVA
+
+echo
+echo ---------------------------------------------
+echo testing swig
+echo ---------------------------------------------
+echo
+
+CHECK_SWIG
+
+echo
+echo ---------------------------------------------
+echo testing threads
+echo ---------------------------------------------
+echo
+
+ENABLE_PTHREADS
+
+echo
+echo ---------------------------------------------
+echo testing omniORB
+echo ---------------------------------------------
+echo
+
+CHECK_OMNIORB
+
+dnl echo
+dnl echo ---------------------------------------------
+dnl echo testing mico
+dnl echo ---------------------------------------------
+dnl echo
+
+dnl CHECK_MICO
+
+echo
+echo ---------------------------------------------
+echo default ORB : omniORB
+echo ---------------------------------------------
+echo
+
+DEFAULT_ORB=omniORB
+CHECK_CORBA
+
+AC_SUBST_FILE(CORBA)
+corba=make_$ORB
+CORBA=adm_local/unix/$corba
+
+echo
+echo ---------------------------------------------
+echo testing openGL
+echo ---------------------------------------------
+echo
+
+CHECK_OPENGL
+
+echo
+echo ---------------------------------------------
+echo testing QT
+echo ---------------------------------------------
+echo
+
+CHECK_QT
+
+echo
+echo ---------------------------------------------
+echo testing MSG2QM
+echo ---------------------------------------------
+echo
+
+CHECK_MSG2QM
+
+echo
+echo ---------------------------------------------
+echo testing VTK
+echo ---------------------------------------------
+echo
+
+CHECK_VTK
+
+echo
+echo ---------------------------------------------
+echo testing HDF5
+echo ---------------------------------------------
+echo
+
+CHECK_HDF5
+
+echo
+echo ---------------------------------------------
+echo testing MED2
+echo ---------------------------------------------
+echo
+
+CHECK_MED2
+
+echo
+echo ---------------------------------------------
+echo Testing OpenCascade
+echo ---------------------------------------------
+echo
+
+CHECK_CAS
+
+echo
+echo ---------------------------------------------
+echo Testing html generators
+echo ---------------------------------------------
+echo
+
+CHECK_HTML_GENERATORS
+
+echo
+echo ---------------------------------------------
+echo Testing GUI
+echo ---------------------------------------------
+echo
+
+CHECK_SALOME_GUI
+
+echo
+echo ---------------------------------------------
+echo Testing full GUI
+echo ---------------------------------------------
+echo
+
+CHECK_CORBA_IN_GUI
+if test "x${CORBA_IN_GUI}" != "xyes"; then
+ echo "failed : For configure GHS3DPRLPLUGIN module necessary full GUI !"
+ exit
+fi
+
+echo
+echo ---------------------------------------------
+echo Testing Kernel
+echo ---------------------------------------------
+echo
+
+CHECK_KERNEL
+
+echo
+echo ---------------------------------------------
+echo Testing Geom
+echo ---------------------------------------------
+echo
+
+CHECK_GEOM
+
+# echo
+# echo ---------------------------------------------
+# echo Testing Med
+# echo ---------------------------------------------
+# echo
+#
+# CHECK_MED
+
+echo
+echo ---------------------------------------------
+echo Testing GHS3DPRL
+echo ---------------------------------------------
+echo
+
+CHECK_GHS3DPRL
+
+echo
+echo ---------------------------------------------
+echo Testing SMesh
+echo ---------------------------------------------
+echo
+
+CHECK_SMESH
+
+echo
+echo ---------------------------------------------
+echo Summary
+echo ---------------------------------------------
+echo
+
+echo Configure
+variables="cc_ok boost_ok lex_yacc_ok python_ok swig_ok threads_ok OpenGL_ok qt_ok vtk_ok hdf5_ok med2_ok omniORB_ok occ_ok doxygen_ok graphviz_ok Kernel_ok Geom_ok SMesh_ok GHS3DPRL_ok"
+
+for var in $variables
+do
+ printf " %10s : " `echo \$var | sed -e "s,_ok,,"`
+ eval echo \$$var
+done
+
+echo
+echo "Default ORB : $DEFAULT_ORB"
+echo
+
+dnl generals files which could be included in every makefile
+
+AC_SUBST_FILE(COMMENCE) COMMENCE=adm_local/unix/make_commence
+AC_SUBST_FILE(CONCLUDE) CONCLUDE=salome_adm/unix/make_conclude
+AC_SUBST_FILE(MODULE) MODULE=salome_adm/unix/make_module
+
+dnl les dependences
+AC_SUBST_FILE(DEPEND) DEPEND=salome_adm/unix/depend
+
+dnl We don t need to say when we re entering directories if we re using
+dnl GNU make becuase make does it for us.
+if test "X$GMAKE" = "Xyes"; then
+ AC_SUBST(SETX) SETX=":"
+else
+ AC_SUBST(SETX) SETX="set -x"
+fi
+
+# make other build directories
+for rep in salome_adm adm_local doc bin/salome include/salome lib${LIB_LOCATION_SUFFIX}/salome share/salome/resources idl
+do
+# if test ! -d $rep ; then
+# eval mkdir $rep
+# fi
+ $INSTALL -d $rep
+done
+
+echo
+echo ---------------------------------------------
+echo copying resource files, shell scripts, and
+echo xml files
+echo ---------------------------------------------
+echo
+
+
+dnl copy resources directories
+
+#for i in `find $ROOT_SRCDIR -name 'resources' -print`
+#do
+# local_res=`echo $i | sed -e "s,$ROOT_SRCDIR,.,"`
+# local_res_dir=`echo $local_res | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
+# mkdir -p $local_res_dir
+# cd $local_res_dir
+# ln -fs $i
+# echo $local_res
+# cd $ROOT_BUILDDIR
+#done
+
+dnl copy shells and utilities contained in the bin directory
+dnl excluding .in files (treated in AC-OUTPUT below) and CVS
+dnl directory
+
+#mkdir -p bin/salome
+#cd bin/salome
+#for i in $ROOT_SRCDIR/bin/*
+#do
+# local_bin=`echo $i | sed -e "s,$ROOT_SRCDIR,.,"`
+# case "$local_bin" in
+# *.in | *~) ;;
+# ./bin/CVS | ./bin/salome) ;;
+# *) /usr/bin/install -C $i .; echo $local_bin ;;
+# esac
+#done
+#cd $ROOT_BUILDDIR
+
+AC_SUBST_FILE(ENVSCRIPT) ENVSCRIPT=salome_adm/unix/envScript
+
+dnl copy xml files to the build tree (lib directory)
+dnl pourquoi ????
+
+#cd lib
+#for i in `find $ROOT_SRCDIR -name "*.xml" -print`
+#do
+# ln -fs $i
+# echo `echo $i | sed -e "s,$ROOT_SRCDIR,.,"`
+#done
+#cd $ROOT_BUILDDIR
+
+
+echo
+echo ---------------------------------------------
+echo generating Makefiles and configure files
+echo ---------------------------------------------
+echo
+
+#AC_OUTPUT_COMMANDS([ \
+# chmod +x ./bin/* \
+#])
+
+## do not delete this line
--- /dev/null
+#------ GHS3DPRLplugin-Src ------
+export GHS3DPRLPLUGIN_SRC_DIR=${INSTALL_ROOT}/GHS3DPRLPLUGIN_SRC_NEW
+##
--- /dev/null
+// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+//
+//
+//
+// File : GHS3DPRLPlugin_Algorithm.idl
+// Author : Christian VAN WAMBEKE (CEA)
+
+#ifndef _SMESH_GHS3DPRLALGORITHM_IDL_
+#define _SMESH_GHS3DPRLALGORITHM_IDL_
+
+#include "SMESH_Hypothesis.idl"
+
+/*!
+ * GHS3DPRLPlugin: interfaces to GHS3DPRL related hypotheses and algorithms
+ */
+module GHS3DPRLPlugin
+{
+ /*!
+ * GHS3DPRLPlugin_GHS3DPRL: interface of GHS3DPRL algorithm
+ */
+ interface GHS3DPRLPlugin_GHS3DPRL : SMESH::SMESH_3D_Algo
+ {
+ };
+
+ /*!
+ * GHS3DPRLPlugin_Hypothesis: interface of "GHS3DPRL parameters" hypothesis
+ */
+ interface GHS3DPRLPlugin_Hypothesis : SMESH::SMESH_Hypothesis
+ {
+ void SetMEDName(in string value);
+ string GetMEDName();
+
+ void SetNbPart(in long value);
+ long GetNbPart();
+
+ void SetKeepFiles(in boolean value);
+ boolean GetKeepFiles();
+ };
+
+};
+
+#endif
--- /dev/null
+# Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS, L3S, LJLL, MENSI
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
+#
+# generate dependencies for idl file :
+#
+
+# source path
+top_srcdir=@top_srcdir@
+top_builddir=..
+srcdir=@srcdir@
+VPATH=.:${KERNEL_ROOT_DIR}/idl/salome:${GEOM_ROOT_DIR}/idl/salome :${SMESH_ROOT_DIR}/idl/salome
+#:${MED_ROOT_DIR}/idl/salome
+
+@COMMENCE@
+
+IDL_FILES = GHS3DPRLPlugin_Algorithm.idl
+
+
+# copy all idl file in $(top_builddir)/idl
+inc: $(top_builddir)/idl/salome $(IDL_FILES:%=$(top_builddir)/idl/salome/%)
+
+$(top_builddir)/idl/salome:
+ $(INSTALL) -d $@
+
+$(IDL_FILES:%=$(top_builddir)/idl/salome/%):$(IDL_FILES:%=$(top_srcdir)/idl/%)
+ cp -f $^ $(top_builddir)/idl/salome
+
+
+# python wrap
+lib: pyidl
+
+PYTHON_BUILD_SITE=$(top_builddir)/lib@LIB_LOCATION_SUFFIX@/python$(PYTHON_VERSION)/site-packages/@PACKAGE@
+
+pyidl: $(PYTHON_BUILD_SITE) $(IDL_FILES:%.idl=$(PYTHON_BUILD_SITE)/%_idl.py)
+
+$(PYTHON_BUILD_SITE):
+ $(INSTALL) -d $@
+
+$(PYTHON_BUILD_SITE)/%_idl.py: $(top_builddir)/idl/salome/%.idl
+ $(OMNIORB_IDL) $(OMNIORB_IDLPYFLAGS) -C$(PYTHON_BUILD_SITE) $<
+
+
+# install python client (generated from idl file)
+install: $(IDL_FILES:%=$(top_builddir)/idl/salome/%)
+ $(INSTALL) -d $(idldir) $(PYTHON_SITE_INSTALL)
+ $(INSTALL_DATA) $^ $(idldir)
+ @for file in $^ dummy; do \
+ if [ $$file != "dummy" ]; then \
+ $(OMNIORB_IDL) $(OMNIORB_IDLPYFLAGS) -C$(PYTHON_SITE_INSTALL) $$file ; \
+ fi ; \
+ done ;
+
+uninstall:
+ -$(RM) $(IDL_FILES:%=$(idldir)/%)
+ -$(RM) $(IDL_FILES:%.idl=$(PYTHON_SITE_INSTALL)/%_idl.py)
+
+# clean
+cleandep:
+ -$(RM) .dep*
+
+clean: cleandep
+ -$(RM) $(top_builddir)/idl/salome/*.idl
+ -$(RM) $(PYTHON_BUILD_SITE)/*.py
+
+distclean: clean
+ -$(RM) Makefile
+
--- /dev/null
+This is the version 3.2.0 of GHS3DPRLPLUGIN
+Compatible with :
+ - KERNEL 3.2.0
+ - GUI 3.2.0
+ - SMESH 3.2.0
--- /dev/null
+<?xml version='1.0' encoding='us-ascii'?>
+<!DOCTYPE meshers PUBLIC "" "desktop.dtd">
+
+<!-- GUI customization for GHS3DPRL Plugin -->
+
+<meshers>
+
+<meshers-group name="GHS3DPRL"
+ resources="GHS3DPRLPlugin"
+ server-lib="libGHS3DPRLEngine.so"
+ gui-lib="libGHS3DPRLPluginGUI.so">
+ <hypotheses>
+ <hypothesis type="GHS3DPRL_Parameters"
+ label-id="GHS3DPRL Parameters"
+ icon-id="mesh_hypo_GHS3DPRL.png"
+ dim="3"/>
+ </hypotheses>
+ <algorithms>
+ <algorithm type="GHS3DPRL_3D"
+ label-id="GHS3DPRL"
+ icon-id="mesh_algo_GHS3DPRL.png"
+ hypos="GHS3DPRL_Parameters"
+ input="TRIA,QUAD"
+ dim="3"/>
+ </algorithms>
+</meshers-group>
+
+</meshers>
--- /dev/null
+// GHS3DPRLPlugin : C++ implementation
+//
+// Copyright (C) 2006 OPEN CASCADE, CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+//
+//
+// File : GHS3DPRLPlugin_GHS3DPRL.cxx
+// Author : Christian VAN WAMBEKE (CEA) (from Hexotic plugin Lioka RAZAFINDRAZAKA)
+// Date : 2007/02/01
+// Project : SALOME
+//=============================================================================
+using namespace std;
+
+#include "GHS3DPRLPlugin_GHS3DPRL.hxx"
+#include "GHS3DPRLPlugin_Hypothesis.hxx"
+// #include "GHS3DPRLPlugin_Mesher.hxx"
+
+#include "SMDS_MeshElement.hxx"
+#include "SMDS_MeshNode.hxx"
+
+#include <TopExp_Explorer.hxx>
+#include <OSD_File.hxx>
+
+#include "utilities.h"
+
+#ifndef WIN32
+#include <sys/sysinfo.h>
+#endif
+
+#ifdef _DEBUG_
+#define DUMP(txt) \
+// cout << txt
+#else
+#define DUMP(txt)
+#endif
+
+#include <SMESH_Gen.hxx>
+#include <SMESHDS_Mesh.hxx>
+#include <SMESH_ControlsDef.hxx>
+
+#include <list>
+#include <TCollection_AsciiString.hxx>
+
+//=============================================================================
+
+GHS3DPRLPlugin_GHS3DPRL::GHS3DPRLPlugin_GHS3DPRL(int hypId, int studyId, SMESH_Gen* gen)
+ : SMESH_3D_Algo(hypId, studyId, gen)
+{
+ MESSAGE("GHS3DPRLPlugin_GHS3DPRL::GHS3DPRLPlugin_GHS3DPRL");
+ _name = "GHS3DPRL_3D";
+ _shapeType = (1 << TopAbs_SHELL) | (1 << TopAbs_SOLID);// 1 bit /shape type
+ _countSubMesh=0;
+ _nodeRefNumber=0;
+ _compatibleHypothesis.push_back("GHS3DPRL_Parameters");
+}
+
+//=============================================================================
+
+GHS3DPRLPlugin_GHS3DPRL::~GHS3DPRLPlugin_GHS3DPRL()
+{
+ MESSAGE("GHS3DPRLPlugin_GHS3DPRL::~GHS3DPRLPlugin_GHS3DPRL");
+}
+
+//=============================================================================
+
+bool GHS3DPRLPlugin_GHS3DPRL::CheckHypothesis
+ (SMESH_Mesh& aMesh,
+ const TopoDS_Shape& aShape,
+ SMESH_Hypothesis::Hypothesis_Status& aStatus)
+{
+ MESSAGE("GHS3DPRLPlugin_GHS3DPRL::CheckHypothesis");
+
+ _hypothesis = NULL;
+
+ list<const SMESHDS_Hypothesis*>::const_iterator itl;
+ const SMESHDS_Hypothesis* theHyp;
+
+ const list<const SMESHDS_Hypothesis*>& hyps = GetUsedHypothesis(aMesh, aShape);
+ int nbHyp = hyps.size();
+ if (!nbHyp)
+ {
+ aStatus = SMESH_Hypothesis::HYP_OK;
+ return true; // can work with no hypothesis
+ }
+
+ itl = hyps.begin();
+ theHyp = (*itl); // use only the first hypothesis
+
+ string hypName = theHyp->GetName();
+ if (hypName == "GHS3DPRL_Parameters")
+ {
+ _hypothesis = static_cast<const GHS3DPRLPlugin_Hypothesis*> (theHyp);
+ ASSERT(_hypothesis);
+ aStatus = SMESH_Hypothesis::HYP_OK;
+ }
+ else
+ aStatus = SMESH_Hypothesis::HYP_INCOMPATIBLE;
+
+ return aStatus == SMESH_Hypothesis::HYP_OK;
+}
+
+//=======================================================================
+
+static bool writeGHS3DPRLFiles (const TCollection_AsciiString & GHS3DPRL_In,
+ SMESHDS_Mesh * theMesh,
+ map <int,int> & theSmdsToGHS3DPRLIdMap,
+ map <int,const SMDS_MeshNode*> & theGHS3DPRLIdToNodeMap)
+{
+ bool Ok;
+ TCollection_AsciiString namefile(GHS3DPRL_In);
+ namefile+=".points";
+ OSD_File(namefile).Remove();
+ ofstream theFile;
+ theFile.open(namefile.ToCString(),ios::out);
+#ifdef WIN32
+ Ok=theFile->is_open();
+#else
+ Ok=theFile.rdbuf()->is_open();
+#endif
+ if (!Ok)
+ {
+ INFOS("Can't write into "<<namefile.ToCString());
+ return false;
+ }
+ cout<<endl<<"Creating GHS3DPRL processed mesh file : "<<namefile<<endl;
+
+ int nbVertices=theMesh->NbNodes();
+ int nbFaces=theMesh->NbFaces(); //triangles or quadrangles
+ const char* space=" ";
+ const int dummyint=1; //nrs,nsd,refnum=1 (for wrap)
+
+ // Writing SMESH points into GHS3DPRL File.points
+ theFile<<nbVertices<<endl;
+
+ int aSmdsNodeID = 1;
+ const SMDS_MeshNode* node_2;
+ SMDS_NodeIteratorPtr itOnNode = theMesh->nodesIterator();
+ while (itOnNode->more())
+ {
+ node_2 = itOnNode->next();
+ theSmdsToGHS3DPRLIdMap.insert(map <int,int>::value_type(node_2->GetID(),aSmdsNodeID));
+ theGHS3DPRLIdToNodeMap.insert(map <int,const SMDS_MeshNode*>::value_type(aSmdsNodeID,node_2));
+ aSmdsNodeID++;
+ theFile<<node_2->X()<<space<<node_2->Y()<<space<<node_2->Z()<<space<<dummyint<<endl;
+ }
+ //no specified points;
+ theFile.close();
+
+ namefile=GHS3DPRL_In+".faces";
+ OSD_File(namefile).Remove();
+ theFile.open(namefile.ToCString(),ios::out);
+#ifdef WIN32
+ Ok=theFile->is_open();
+#else
+ Ok=theFile.rdbuf()->is_open();
+#endif
+ if (!Ok)
+ {
+ INFOS("Can't write into "<<namefile.ToCString());
+ return false;
+ }
+ cout<<endl<<"Creating GHS3DPRL processed mesh file : "<<namefile<<endl;
+
+ // Writing SMESH faces into GHS3DPRL File.faces
+ theFile<<nbFaces<<" 0"<<endl; //NB_ELEMS DUMMY_INT
+ //" 0" is a reserved parameter
+
+ const SMDS_MeshElement* aFace;
+ map<int,int>::const_iterator itOnSmdsNode;
+ SMDS_ElemIteratorPtr itOnFaceNode;
+ SMDS_FaceIteratorPtr itOnSmdsFace = theMesh->facesIterator();
+ long nbNoTriangles=0;
+ while (itOnSmdsFace->more())
+ {
+ aFace=itOnSmdsFace->next();
+ itOnFaceNode=aFace->nodesIterator();
+ const int nbNodes=aFace->NbNodes();
+ if (nbNodes!=3) nbNoTriangles++;
+ theFile<<nbNodes<<space; // NB_NODES
+ while (itOnFaceNode->more())
+ {
+ aSmdsNodeID=itOnFaceNode->next()->GetID();
+ itOnSmdsNode=theSmdsToGHS3DPRLIdMap.find(aSmdsNodeID);
+ ASSERT(itOnSmdsNode!=theSmdsToGHS3DPRLIdMap.end());
+ theFile<<space<<(*itOnSmdsNode).second; //NODE_1 NODE_2 ...
+ }
+ //(NB_NODES+1) times: DUMMY_INT
+ for ( int i=0; i<=nbNodes; i++) theFile<<space<<dummyint;
+ theFile<<endl;
+ }
+ theFile.close();
+
+ cout<<"Processed mesh files created, they contains :\n";
+ cout<<" "<<nbVertices<<" vertices\n";
+ if (nbNoTriangles==0)
+ cout<<" "<<nbFaces<<" faces\n\n";
+ else
+ cout<<" "<<nbFaces<<" faces with "<<nbNoTriangles<<"faces no triangles\n\n";
+ return true;
+}
+
+//=======================================================================
+
+static bool getInt( int & theValue, char * & theLine )
+{
+ char *ptr;
+ theValue = strtol( theLine, &ptr, 10 );
+ if ( ptr == theLine ||
+ // there must not be neither '.' nor ',' nor 'E' ...
+ (*ptr != ' ' && *ptr != '\n' && *ptr != '\0'))
+ return false;
+
+ DUMP( " " << theValue );
+ theLine = ptr;
+ return true;
+}
+
+//=======================================================================
+
+static bool getDouble( double & theValue, char * & theLine )
+{
+ char *ptr;
+ theValue = strtod( theLine, &ptr );
+ if ( ptr == theLine )
+ return false;
+
+ DUMP( " " << theValue );
+ theLine = ptr;
+ return true;
+}
+
+//=======================================================================
+
+#define GHS3DPRLPlugin_BUFLENGTH 256
+#define GHS3DPRLPlugin_ReadLine(aPtr,aBuf,aFile,aLineNb) \
+{ aPtr = fgets( aBuf, GHS3DPRLPlugin_BUFLENGTH - 2, aFile ); aLineNb++; DUMP(endl); }
+
+//=======================================================================
+
+static bool readResult(FILE * theFile,
+ SMESHDS_Mesh * theMesh,
+ const TopoDS_Shape & theShape,
+ map <int,const SMDS_MeshNode*> & theGHS3DPRLIdToNodeMap,
+ const TCollection_AsciiString & GHS3DPRL_Out,
+ int & nodeRefNumber)
+{
+ // ---------------------------------
+ // Read generated elements and nodes
+ // ---------------------------------
+
+ cout << "Reading GHS3DPRL output file : " << GHS3DPRL_Out << endl;
+ cout << endl;
+
+ char aBuffer[ GHS3DPRLPlugin_BUFLENGTH ];
+ char * aPtr;
+ int aLineNb = 0;
+ int shapeID = theMesh->ShapeToIndex( theShape );
+
+ int line = 1, EndOfFile = 0, nbElem = 0, nField = 10, nbRef = 0, aGHS3DPRLNodeID = 0;
+ char * theField;
+
+ char * tabField [nField];
+ int tabRef [nField];
+
+ tabField[0] = "MeshVersionFormatted"; tabRef[0] = 0;
+ tabField[1] = "Dimension"; tabRef[1] = 0;
+ tabField[2] = "Vertices"; tabRef[2] = 3;
+ tabField[3] = "Edges"; tabRef[3] = 2;
+ tabField[4] = "Triangles"; tabRef[4] = 3;
+ tabField[5] = "Quadrilaterals"; tabRef[5] = 4;
+ tabField[6] = "Hexahedra"; tabRef[6] = 8;
+ tabField[7] = "Corners"; tabRef[7] = 1;
+ tabField[8] = "Ridges"; tabRef[0] = 1;
+ tabField[9] = "End"; tabRef[0] = 0;
+
+ nodeRefNumber += theMesh->NbNodes();
+
+ SMDS_NodeIteratorPtr itOnGHS3DPRLInputNode = theMesh->nodesIterator();
+ while ( itOnGHS3DPRLInputNode->more() )
+ theMesh->RemoveNode( itOnGHS3DPRLInputNode->next() );
+
+ while ( EndOfFile == 0 ) {
+ GHS3DPRLPlugin_ReadLine( aPtr, aBuffer, theFile, aLineNb );
+ for ( int iField = 0; iField < nField; iField++ ) {
+ stringstream theMessage;
+ theField = tabField[iField];
+ if ( strncmp(aPtr, theField, strlen(theField)) == 0 ) {
+ if ( strcmp(theField, "End") == 0 ) {
+ EndOfFile = 1;
+ theMessage << "End of GHS3DPRL output file has been reached";
+ }
+ else {
+ GHS3DPRLPlugin_ReadLine( aPtr, aBuffer, theFile, aLineNb );
+ line++;
+ getInt( nbElem, aPtr );
+
+ if ( strcmp(theField, "MeshVersionFormatted") == 0 )
+ theMessage << "GHS3DPRL mesh descriptor : " << theField << " " << nbElem;
+ else if ( strcmp(theField, "Dimension") == 0 )
+ theMessage << "GHS3DPRL mesh of " << nbElem << "D dimension";
+ else if ( strcmp(theField, "Vertices") == 0 ||
+ strcmp(theField, "Edges") == 0 ||
+ strcmp(theField, "Quadrilaterals") == 0 ||
+ strcmp(theField, "Hexahedra") == 0 ) {
+ nbRef = tabRef[iField];
+ GHS3DPRLPlugin_ReadLine( aPtr, aBuffer, theFile, aLineNb ); // read blank line
+
+ if ( strcmp(theField, "Vertices") == 0 ) {
+ int aGHS3DPRLID;
+ double coord[nbRef];
+ SMDS_MeshNode * aGHS3DPRLNode;
+
+ for ( int iElem = 0; iElem < nbElem; iElem++ ) {
+ aGHS3DPRLID = iElem + 1 + nodeRefNumber;
+ GHS3DPRLPlugin_ReadLine( aPtr, aBuffer, theFile, aLineNb ); // read file lines
+ for ( int iCoord = 0; iCoord < 3; iCoord++ )
+ getDouble ( coord[ iCoord ], aPtr );
+ aGHS3DPRLNode = theMesh->AddNode(coord[0], coord[1], coord[2]);
+ theMesh->SetNodeInVolume( aGHS3DPRLNode, shapeID );
+ theGHS3DPRLIdToNodeMap[ aGHS3DPRLID ] = aGHS3DPRLNode;
+ }
+ }
+ else {
+ const SMDS_MeshNode * node[nbRef];
+ SMDS_MeshElement* aGHS3DPRLElement;
+ map <int,const SMDS_MeshNode*>::iterator itOnGHS3DPRLNode;
+
+ for ( int iElem = 0; iElem < nbElem; iElem++ ) {
+ GHS3DPRLPlugin_ReadLine( aPtr, aBuffer, theFile, aLineNb ); // read file lines
+ for ( int iRef = 0; iRef < nbRef; iRef++ ) {
+ getInt ( aGHS3DPRLNodeID, aPtr ); // read nbRef aGHS3DPRLNodeID
+ aGHS3DPRLNodeID += nodeRefNumber;
+ itOnGHS3DPRLNode = theGHS3DPRLIdToNodeMap.find( aGHS3DPRLNodeID );
+ node[ iRef ] = itOnGHS3DPRLNode->second;
+ }
+
+ if ( strcmp(theField, "Edges") == 0 ) // create an element
+ aGHS3DPRLElement = theMesh->AddEdge( node[0], node[1] );
+ else if ( strcmp(theField, "Quadrilaterals") == 0 )
+ aGHS3DPRLElement = theMesh->AddFace( node[0], node[1], node[2], node[3] );
+ else if ( strcmp(theField, "Hexahedra") == 0 )
+ aGHS3DPRLElement = theMesh->AddVolume( node[0], node[1], node[2], node[3], node[4], node[5], node[6], node[7] );
+
+ theMesh->SetMeshElementOnShape( aGHS3DPRLElement, shapeID );
+ }
+ }
+ theMessage << nbElem << " " << theField << " created";
+ }
+ }
+ if ( theMessage.str().size() != 0 ) {
+ cout << theMessage.str() << endl;
+ break;
+ }
+ }
+ }
+ }
+ cout << endl;
+ return true;
+}
+
+//=============================================================================
+// Pass parameters to GHS3DPRL
+
+void GHS3DPRLPlugin_GHS3DPRL::SetParameters(const GHS3DPRLPlugin_Hypothesis* hyp) {
+ if (hyp) {
+ MESSAGE("GHS3DPRLPlugin_GHS3DPRL::SetParameters");
+ _MEDName = hyp->GetMEDName(); //"DOMAIN\0"
+ _NbPart = hyp->GetNbPart();
+ _KeepFiles = hyp->GetKeepFiles();
+ }
+}
+
+//=======================================================================
+
+static TCollection_AsciiString getTmpDir()
+{
+ TCollection_AsciiString aTmpDir;
+
+ char *Tmp_dir = getenv("SALOME_TMP_DIR");
+ if (Tmp_dir == NULL) Tmp_dir = getenv("TMPDIR");
+ if(Tmp_dir != NULL)
+ {
+ aTmpDir = Tmp_dir;
+#ifdef WIN32
+ if(aTmpDir.Value(aTmpDir.Length()) != '\\') aTmpDir+='\\';
+#else
+ if(aTmpDir.Value(aTmpDir.Length()) != '/') aTmpDir+='/';
+#endif
+ }
+ else
+ {
+#ifdef WIN32
+ aTmpDir = TCollection_AsciiString("C:\\");
+#else
+ aTmpDir = TCollection_AsciiString("/export/home/");
+#endif
+ }
+ //cout<<"getTmpDir()="<<aTmpDir<<endl;
+ return aTmpDir;
+}
+
+//=============================================================================
+// Here we are going to use the GHS3DPRL mesher
+
+bool GHS3DPRLPlugin_GHS3DPRL::Compute(SMESH_Mesh& theMesh,
+ const TopoDS_Shape& theShape) {
+
+
+ bool Ok;
+ MESSAGE("GHS3DPRLPlugin_GHS3DPRL::Compute");
+
+ if (_hypothesis==NULL)
+ {
+ Ok = false;
+ cout <<"\nNo existing parameters/hypothesis for GHS3DPRL!\n\n";
+ return Ok;
+ }
+ SetParameters(_hypothesis);
+
+ cout << endl;
+ cout << _name << " parameters :" << endl;
+ cout << " generic path/name of MED Files = " << _MEDName << endl;
+ cout << " number of partitions = " << _NbPart << endl;
+ cout << " keep intermediates files (from tepal) = " << _KeepFiles << endl;
+ cout << endl;
+
+ SMESHDS_Mesh* meshDS = theMesh.GetMeshDS();
+
+ if (_countSubMesh==0)
+ {
+ _countTotal=0;
+ TopExp_Explorer expf(meshDS->ShapeToMesh(), TopAbs_SOLID);
+ for ( ; expf.More(); expf.Next() )
+ _countTotal++;
+ }
+
+ _countSubMesh++;
+
+ if (_countSubMesh == _countTotal )
+ {
+ TCollection_AsciiString
+ tmpDir=getTmpDir(),
+ GHS3DPRL_In,
+ GHS3DPRL_Out,
+ NbPart,
+ run_GHS3DPRL("tepal2med "),
+ run_keep_files("rm ");
+
+ //example: tepal2med GHS3DPRL 4 12500000 4 Test noMemu LaunchTepal
+
+ TCollection_AsciiString path;
+ TCollection_AsciiString casenamemed;//_MEDName.c_str());
+ casenamemed += (char *)_MEDName.c_str();
+ int n=casenamemed.SearchFromEnd('/');
+ if (n>0)
+ {
+ path=casenamemed.SubString(1,n);
+ casenamemed=casenamemed.SubString(n+1,casenamemed.Length());
+ }
+ else
+ path=tmpDir;
+
+ if (casenamemed.Length()>20)
+ {
+ casenamemed=casenamemed.SubString(1,20);
+ cerr<<"MEDName truncated (no more 20 characters) = "<<casenamemed<<endl;
+ }
+ cout<<"path="<<path<<endl;
+ cout<<"casenamemed="<<casenamemed<<endl;
+
+ map <int,int> aSmdsToGHS3DPRLIdMap;
+ map <int,const SMDS_MeshNode*> aGHS3DPRLIdToNodeMap;
+ GHS3DPRL_In=path + "GHS3DPRL";
+ GHS3DPRL_Out=path + casenamemed;
+ NbPart=_NbPart;
+ run_GHS3DPRL += GHS3DPRL_In + " " + NbPart + " 12500000 1 Test noMemu LaunchTepal " + GHS3DPRL_Out;
+ run_keep_files += GHS3DPRL_In + ".*.*.* " + path + "tepal.out";
+ cout<<"GHS3DPRL command : "<<run_GHS3DPRL<<endl;
+
+ OSD_File( GHS3DPRL_Out ).Remove(); //only the master med file
+ Ok=writeGHS3DPRLFiles(GHS3DPRL_In, meshDS, aSmdsToGHS3DPRLIdMap, aGHS3DPRLIdToNodeMap);
+
+ if (Ok) system( run_GHS3DPRL.ToCString() );
+
+ // read a result, GHS3DPRL_Out is the name of master file (previous xml format)
+ FILE * aResultFile = fopen( GHS3DPRL_Out.ToCString(), "r" );
+ if (aResultFile)
+ {
+ //Ok = readResult( aResultFile, meshDS, theShape, aGHS3DPRLIdToNodeMap, GHS3DPRL_Out, _nodeRefNumber );
+ Ok = true;
+ fclose(aResultFile);
+ cout << "GHS3DPRL OK output file "<<GHS3DPRL_Out<<" exist !\n\n";
+ if (!_KeepFiles)
+ {
+ system( run_keep_files.ToCString() );
+ }
+ }
+ else
+ {
+ Ok = false;
+ cout << "GHS3DPRL KO output files "<<GHS3DPRL_Out<<" do not exist ! see intermediates files keeped:\n";
+ TCollection_AsciiString run_keep_files("ls -alt ");
+ run_keep_files += GHS3DPRL_Out + "* " + GHS3DPRL_In + "* " + path + "tepal.out";
+ system( run_keep_files.ToCString() );
+ cout<<endl;
+ }
+ _countSubMesh=0;
+
+ }
+ return Ok;
+}
+
+//=============================================================================
+
+ostream & GHS3DPRLPlugin_GHS3DPRL::SaveTo(ostream & save)
+{
+ return save;
+}
+
+//=============================================================================
+
+istream & GHS3DPRLPlugin_GHS3DPRL::LoadFrom(istream & load)
+{
+ return load;
+}
+
+//=============================================================================
+
+ostream & operator << (ostream & save, GHS3DPRLPlugin_GHS3DPRL & hyp)
+{
+ return hyp.SaveTo( save );
+}
+
+//=============================================================================
+
+istream & operator >> (istream & load, GHS3DPRLPlugin_GHS3DPRL & hyp)
+{
+ return hyp.LoadFrom( load );
+}
--- /dev/null
+// GHS3DPRLPlugin : C++ implementation
+//
+// Copyright (C) 2006 OPEN CASCADE, CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+//
+//
+// File : GHS3DPRLPlugin_GHS3DPRL.hxx
+// Author : Christian VAN WAMBEKE (CEA) (from Hexotic plugin Lioka RAZAFINDRAZAKA)
+// Date : 2007/02/01
+// Project : SALOME
+//=============================================================================
+
+#ifndef _GHS3DPRLPlugin_GHS3DPRL_HXX_
+#define _GHS3DPRLPlugin_GHS3DPRL_HXX_
+
+#include "SMESH_3D_Algo.hxx"
+#include "SMESH_Mesh.hxx"
+#include "Utils_SALOME_Exception.hxx"
+
+class SMESH_Mesh;
+class GHS3DPRLPlugin_Hypothesis;
+
+class GHS3DPRLPlugin_GHS3DPRL: public SMESH_3D_Algo
+{
+public:
+ GHS3DPRLPlugin_GHS3DPRL(int hypId, int studyId, SMESH_Gen* gen);
+ virtual ~GHS3DPRLPlugin_GHS3DPRL();
+
+ virtual bool CheckHypothesis(SMESH_Mesh& aMesh,
+ const TopoDS_Shape& aShape,
+ SMESH_Hypothesis::Hypothesis_Status& aStatus);
+
+ void SetParameters(const GHS3DPRLPlugin_Hypothesis* hyp);
+
+ virtual bool Compute(SMESH_Mesh& aMesh,
+ const TopoDS_Shape& aShape);
+
+ ostream & SaveTo(ostream & save);
+ istream & LoadFrom(istream & load);
+ friend ostream & operator << (ostream & save, GHS3DPRLPlugin_GHS3DPRL & hyp);
+ friend istream & operator >> (istream & load, GHS3DPRLPlugin_GHS3DPRL & hyp);
+
+protected:
+ const GHS3DPRLPlugin_Hypothesis* _hypothesis;
+private:
+ int _countSubMesh;
+ int _countTotal;
+ int _nodeRefNumber;
+
+ string _MEDName; //number of partitions
+ int _NbPart; //number of partitions
+ bool _KeepFiles; //tepal file .noboite binary or not
+};
+
+#endif
--- /dev/null
+// GHS3DPRLPlugin : idl implementation
+//
+// Copyright (C) 2006 OPEN CASCADE, CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+//
+//
+// File : GHS3DPRLPlugin_GHS3DPRL_i.cxx
+// Author : Christian VAN WAMBEKE (CEA) (from Hexotic plugin Lioka RAZAFINDRAZAKA)
+// Module : GHS3DPRLPlugin
+// $Header :
+
+using namespace std;
+#include "GHS3DPRLPlugin_GHS3DPRL_i.hxx"
+#include "SMESH_Gen.hxx"
+#include "GHS3DPRLPlugin_GHS3DPRL.hxx"
+
+#include "Utils_CorbaException.hxx"
+#include "utilities.h"
+
+//=============================================================================
+/*!
+ * GHS3DPRLPlugin_GHS3DPRL_i::GHS3DPRLPlugin_GHS3DPRL_i
+ *
+ * Constructor
+ */
+//=============================================================================
+
+GHS3DPRLPlugin_GHS3DPRL_i::GHS3DPRLPlugin_GHS3DPRL_i( PortableServer::POA_ptr thePOA,
+ int theStudyId,
+ ::SMESH_Gen* theGenImpl )
+ : SALOME::GenericObj_i( thePOA ),
+ SMESH_Hypothesis_i( thePOA ),
+ SMESH_Algo_i( thePOA ),
+ SMESH_3D_Algo_i( thePOA )
+{
+ MESSAGE( "GHS3DPRLPlugin_GHS3DPRL_i::GHS3DPRLPlugin_GHS3DPRL_i" );
+ myBaseImpl = new ::GHS3DPRLPlugin_GHS3DPRL( theGenImpl->GetANewId(),
+ theStudyId,
+ theGenImpl );
+}
+
+//=============================================================================
+/*!
+ * GHS3DPRLPlugin_GHS3DPRL_i::~GHS3DPRLPlugin_GHS3DPRL_i
+ *
+ * Destructor
+ */
+//=============================================================================
+
+GHS3DPRLPlugin_GHS3DPRL_i::~GHS3DPRLPlugin_GHS3DPRL_i()
+{
+ MESSAGE( "GHS3DPRLPlugin_GHS3DPRL_i::~GHS3DPRLPlugin_GHS3DPRL_i" );
+}
+
+//=============================================================================
+/*!
+ * GHS3DPRLPlugin_GHS3DPRL_i::GetImpl
+ *
+ * Get implementation
+ */
+//=============================================================================
+
+::GHS3DPRLPlugin_GHS3DPRL* GHS3DPRLPlugin_GHS3DPRL_i::GetImpl()
+{
+ MESSAGE( "GHS3DPRLPlugin_GHS3DPRL_i::GetImpl" );
+ return ( ::GHS3DPRLPlugin_GHS3DPRL* )myBaseImpl;
+}
--- /dev/null
+// GHS3DPRLPlugin : idl implementation
+//
+// Copyright (C) 2006 OPEN CASCADE, CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+//
+//
+// File : GHS3DPRLPlugin_GHS3DPRL_i.hxx
+// Author : Christian VAN WAMBEKE (CEA) (from Hexotic plugin Lioka RAZAFINDRAZAKA)
+// Module : GHS3DPRLPlugin
+// $Header:
+
+#ifndef _GHS3DPRLPlugin_GHS3DPRL_I_HXX_
+#define _GHS3DPRLPlugin_GHS3DPRL_I_HXX_
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(GHS3DPRLPlugin_Algorithm)
+#include CORBA_SERVER_HEADER(SALOME_Exception)
+
+#include "SMESH_3D_Algo_i.hxx"
+#include "GHS3DPRLPlugin_GHS3DPRL.hxx"
+
+// ======================================================
+// GHS3DPRL 3d algorithm
+// ======================================================
+class GHS3DPRLPlugin_GHS3DPRL_i:
+ public virtual POA_GHS3DPRLPlugin::GHS3DPRLPlugin_GHS3DPRL,
+ public virtual SMESH_3D_Algo_i
+{
+public:
+ // Constructor
+ GHS3DPRLPlugin_GHS3DPRL_i (PortableServer::POA_ptr thePOA,
+ int theStudyId,
+ ::SMESH_Gen* theGenImpl );
+ // Destructor
+ virtual ~GHS3DPRLPlugin_GHS3DPRL_i();
+
+ // Get implementation
+ ::GHS3DPRLPlugin_GHS3DPRL* GetImpl();
+};
+
+#endif
--- /dev/null
+// GHS3DPRLPlugin : C++ implementation
+//
+// Copyright (C) 2006 OPEN CASCADE, CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+//
+//
+// File : GHS3DPRLPlugin_Hypothesis.cxx
+// Author : Christian VAN WAMBEKE (CEA) (from Hexotic plugin Lioka RAZAFINDRAZAKA)
+// Date : 2007/02/01
+// Project : SALOME
+//=============================================================================
+
+using namespace std;
+#include <GHS3DPRLPlugin_Hypothesis.hxx>
+#include <utilities.h>
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+GHS3DPRLPlugin_Hypothesis::GHS3DPRLPlugin_Hypothesis (int hypId, int studyId,
+ SMESH_Gen * gen)
+ : SMESH_Hypothesis(hypId, studyId, gen),
+ _MEDName( GetDefaultMEDName() ),
+ _NbPart( GetDefaultNbPart() ),
+ _KeepFiles( GetDefaultKeepFiles() )
+{
+ MESSAGE("GHS3DPRLPlugin_Hypothesis::GHS3DPRLPlugin_Hypothesis");
+ _name = "GHS3DPRL_Parameters";
+ _param_algo_dim = 3;
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+
+void GHS3DPRLPlugin_Hypothesis::SetMEDName(string theVal) {
+ if (theVal != _MEDName) {
+ _MEDName = theVal;
+ NotifySubMeshesHypothesisModification();
+ }
+}
+
+void GHS3DPRLPlugin_Hypothesis::SetNbPart(int theVal) {
+ if (theVal != _NbPart) {
+ _NbPart = theVal;
+ NotifySubMeshesHypothesisModification();
+ }
+}
+
+void GHS3DPRLPlugin_Hypothesis::SetKeepFiles(bool theVal) {
+ if (theVal != _KeepFiles) {
+ _KeepFiles = theVal;
+ NotifySubMeshesHypothesisModification();
+ }
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+ostream & GHS3DPRLPlugin_Hypothesis::SaveTo(ostream & save)
+{
+ save << "MEDName=" << _MEDName;
+ save << "NbPart=" << _NbPart;
+ save << "KeepFiles=" << (int)_KeepFiles;
+ cout << endl;
+ cout << "save : " << save << endl;
+ cout << endl;
+ return save;
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+istream & GHS3DPRLPlugin_Hypothesis::LoadFrom(istream & load)
+{
+// bool isOK = true;
+// int is;
+// double val;
+
+// isOK = (load >> val);
+// if (isOK)
+// _maxSize = val;
+// else
+// load.clear(ios::badbit | load.rdstate());
+
+// isOK = (load >> is);
+// if (isOK)
+// SetFineness((Fineness) is);
+// else
+// load.clear(ios::badbit | load.rdstate());
+
+// if (_fineness == UserDefined)
+// {
+// isOK = (load >> val);
+// if (isOK)
+// _growthRate = val;
+// else
+// load.clear(ios::badbit | load.rdstate());
+
+// isOK = (load >> val);
+// if (isOK)
+// _nbSegPerEdge = val;
+// else
+// load.clear(ios::badbit | load.rdstate());
+
+// isOK = (load >> val);
+// if (isOK)
+// _nbSegPerRadius = val;
+// else
+// load.clear(ios::badbit | load.rdstate());
+// }
+
+// isOK = (load >> is);
+// if (isOK)
+// _secondOrder = (bool) is;
+// else
+// load.clear(ios::badbit | load.rdstate());
+
+// isOK = (load >> is);
+// if (isOK)
+// _optimize = (bool) is;
+// else
+// load.clear(ios::badbit | load.rdstate());
+ return load;
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+ostream & operator <<(ostream & save, GHS3DPRLPlugin_Hypothesis & hyp)
+{
+ return hyp.SaveTo( save );
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+istream & operator >>(istream & load, GHS3DPRLPlugin_Hypothesis & hyp)
+{
+ return hyp.LoadFrom( load );
+}
+
+
+//================================================================================
+/*!
+ * \brief Does nothing
+ * \param theMesh - the built mesh
+ * \param theShape - the geometry of interest
+ * \retval bool - always false
+ */
+//================================================================================
+bool GHS3DPRLPlugin_Hypothesis::SetParametersByMesh(const SMESH_Mesh* theMesh,
+ const TopoDS_Shape& theShape)
+{
+ return false;
+}
+
+//=============================================================================
+string GHS3DPRLPlugin_Hypothesis::GetDefaultMEDName()
+{
+ return "DOMAIN\0";
+}
+
+//=============================================================================
+int GHS3DPRLPlugin_Hypothesis::GetDefaultNbPart()
+{
+ return 16;
+}
+
+bool GHS3DPRLPlugin_Hypothesis::GetDefaultKeepFiles()
+{
+ return false;
+}
+
--- /dev/null
+// GHS3DPRLPlugin : C++ implementation
+//
+// Copyright (C) 2006 OPEN CASCADE, CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+//
+//
+// File : GHS3DPRLPlugin_Hypothesis.hxx
+// Author : Christian VAN WAMBEKE (CEA) (from Hexotic plugin Lioka RAZAFINDRAZAKA)
+// Date : 2007/02/01
+// Project : SALOME
+// $Header :
+//=============================================================================
+
+#ifndef _GHS3DPRLPlugin_Hypothesis_HXX_
+#define _GHS3DPRLPlugin_Hypothesis_HXX_
+
+#include "SMESH_Hypothesis.hxx"
+#include "Utils_SALOME_Exception.hxx"
+
+// Parameters for work of GHS3DPRL
+//
+
+class GHS3DPRLPlugin_Hypothesis: public SMESH_Hypothesis
+{
+public:
+
+ GHS3DPRLPlugin_Hypothesis(int hypId, int studyId, SMESH_Gen * gen);
+
+ void SetMEDName(string theVal);
+ string GetMEDName() const { return _MEDName; }
+
+ void SetNbPart(int theVal);
+ int GetNbPart() const { return _NbPart; }
+
+ void SetKeepFiles(bool theVal);
+ bool GetKeepFiles() const { return _KeepFiles; }
+
+ // the parameters default values
+
+ static string GetDefaultMEDName();
+ static int GetDefaultNbPart();
+ static bool GetDefaultKeepFiles();
+
+ // Persistence
+ virtual ostream & SaveTo(ostream & save);
+ virtual istream & LoadFrom(istream & load);
+ friend ostream & operator <<(ostream & save, GHS3DPRLPlugin_Hypothesis & hyp);
+ friend istream & operator >>(istream & load, GHS3DPRLPlugin_Hypothesis & hyp);
+
+ /*!
+ * \brief Does nothing
+ * \param theMesh - the built mesh
+ * \param theShape - the geometry of interest
+ * \retval bool - always false
+ */
+ virtual bool SetParametersByMesh(const SMESH_Mesh* theMesh, const TopoDS_Shape& theShape);
+
+private:
+ int _countSubMesh;
+ int _countTotal;
+ int _nodeRefNumber;
+
+ string _MEDName; //generic path/name of med files
+ int _NbPart; //number of partitions
+ bool _KeepFiles; //keep intermediates tepal files or not
+};
+
+#endif
--- /dev/null
+// GHS3DPRLPlugin : C++ implementation
+//
+// Copyright (C) 2006 OPEN CASCADE, CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+//
+//
+// File : GHS3DPRLPlugin_Hypothesis_i.cxx
+// Author : Christian VAN WAMBEKE (CEA) (from Hexotic plugin Lioka RAZAFINDRAZAKA)
+// Date : 2007/02/01
+// Project : SALOME
+//=============================================================================
+using namespace std;
+
+#include "GHS3DPRLPlugin_Hypothesis_i.hxx"
+#include "SMESH_Gen.hxx"
+#include "SMESH_PythonDump.hxx"
+
+#include "Utils_CorbaException.hxx"
+#include "utilities.h"
+
+//=============================================================================
+/*!
+ * GHS3DPRLPlugin_Hypothesis_i::GHS3DPRLPlugin_Hypothesis_i
+ *
+ * Constructor
+ */
+//=============================================================================
+GHS3DPRLPlugin_Hypothesis_i::
+GHS3DPRLPlugin_Hypothesis_i (PortableServer::POA_ptr thePOA,
+ int theStudyId,
+ ::SMESH_Gen* theGenImpl)
+ : SALOME::GenericObj_i( thePOA ),
+ SMESH_Hypothesis_i( thePOA )
+{
+ MESSAGE( "GHS3DPRLPlugin_Hypothesis_i::GHS3DPRLPlugin_Hypothesis_i" );
+ myBaseImpl = new ::GHS3DPRLPlugin_Hypothesis (theGenImpl->GetANewId(),
+ theStudyId,
+ theGenImpl);
+}
+
+//=============================================================================
+/*!
+ * GHS3DPRLPlugin_Hypothesis_i::~GHS3DPRLPlugin_Hypothesis_i
+ *
+ * Destructor
+ */
+//=============================================================================
+GHS3DPRLPlugin_Hypothesis_i::~GHS3DPRLPlugin_Hypothesis_i()
+{
+ MESSAGE( "GHS3DPRLPlugin_Hypothesis_i::~GHS3DPRLPlugin_Hypothesis_i" );
+}
+
+//=============================================================================
+/*!
+ * GHS3DPRLPlugin_Hypothesis_i::SetMEDName
+ * GHS3DPRLPlugin_Hypothesis_i::SetNbPart
+ * GHS3DPRLPlugin_Hypothesis_i::SetKeepFiles
+ */
+//=============================================================================
+
+void GHS3DPRLPlugin_Hypothesis_i::SetMEDName (const char *theValue)
+{
+ MESSAGE("GHS3DPRLPlugin_Hypothesis_i::SetMEDName");
+ ASSERT(myBaseImpl);
+ this->GetImpl()->SetMEDName(theValue);
+ SMESH::TPythonDump() << _this() << ".SetMEDName( " << theValue << " )";
+}
+
+void GHS3DPRLPlugin_Hypothesis_i::SetNbPart (CORBA::Long theValue)
+{
+ MESSAGE("GHS3DPRLPlugin_Hypothesis_i::SetNbPart");
+ ASSERT(myBaseImpl);
+ this->GetImpl()->SetNbPart(theValue);
+ SMESH::TPythonDump() << _this() << ".SetNbPart( " << theValue << " )";
+}
+
+void GHS3DPRLPlugin_Hypothesis_i::SetKeepFiles (CORBA::Boolean theValue)
+{
+ MESSAGE("GHS3DPRLPlugin_Hypothesis_i::SetKeepFiles");
+ ASSERT(myBaseImpl);
+ this->GetImpl()->SetKeepFiles(theValue);
+ SMESH::TPythonDump() << _this() << ".SetKeepFiles( " << theValue << " )";
+}
+
+//=============================================================================
+/*!
+ * GHS3DPRLPlugin_Hypothesis_i::GetMEDName
+ * GHS3DPRLPlugin_Hypothesis_i::GetNbPart
+ * GHS3DPRLPlugin_Hypothesis_i::GetKeepFiles
+ */
+//=============================================================================
+
+char * GHS3DPRLPlugin_Hypothesis_i::GetMEDName()
+{
+ MESSAGE("GHS3DPRLPlugin_Hypothesis_i::GetMEDName");
+ ASSERT(myBaseImpl);
+ CORBA::String_var c_s =
+ CORBA::string_dup(this->GetImpl()->GetMEDName().c_str());
+ return c_s._retn();
+}
+
+CORBA::Long GHS3DPRLPlugin_Hypothesis_i::GetNbPart()
+{
+ MESSAGE("GHS3DPRLPlugin_Hypothesis_i::GetNbPart");
+ ASSERT(myBaseImpl);
+ return this->GetImpl()->GetNbPart();
+}
+
+CORBA::Boolean GHS3DPRLPlugin_Hypothesis_i::GetKeepFiles()
+{
+ MESSAGE("GHS3DPRLPlugin_Hypothesis_i::GetKeepFiles");
+ ASSERT(myBaseImpl);
+ return this->GetImpl()->GetKeepFiles();
+}
+
+//=============================================================================
+/*!
+ * GHS3DPRLPlugin_Hypothesis_i::GetImpl
+ *
+ * Get implementation
+ */
+//=============================================================================
+::GHS3DPRLPlugin_Hypothesis* GHS3DPRLPlugin_Hypothesis_i::GetImpl()
+{
+ MESSAGE("GHS3DPRLPlugin_Hypothesis_i::GetImpl");
+ return (::GHS3DPRLPlugin_Hypothesis*)myBaseImpl;
+}
+
+//================================================================================
+/*!
+ * \brief Verify whether hypothesis supports given entity type
+ * \param type - dimension (see SMESH::Dimension enumeration)
+ * \retval CORBA::Boolean - TRUE if dimension is supported, FALSE otherwise
+ *
+ * Verify whether hypothesis supports given entity type (see SMESH::Dimension enumeration)
+ */
+//================================================================================
+CORBA::Boolean GHS3DPRLPlugin_Hypothesis_i::IsDimSupported( SMESH::Dimension type )
+{
+ return type == SMESH::DIM_3D;
+}
--- /dev/null
+// GHS3DPRLPlugin : C++ implementation
+//
+// Copyright (C) 2006 OPEN CASCADE, CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+//
+//
+// File : GHS3DPRLPlugin_Hypothesis_i.hxx
+// Author : Christian VAN WAMBEKE (CEA) (from Hexotic plugin Lioka RAZAFINDRAZAKA)
+// Date : 2006/06/30
+// Project : SALOME
+//=============================================================================
+
+#ifndef _GHS3DPRLPlugin_Hypothesis_i_HXX_
+#define _GHS3DPRLPlugin_Hypothesis_i_HXX_
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(GHS3DPRLPlugin_Algorithm)
+
+#include "SMESH_Hypothesis_i.hxx"
+#include "GHS3DPRLPlugin_Hypothesis.hxx"
+
+class SMESH_Gen;
+
+// GHS3DPRLPlugin parameters hypothesis
+
+class GHS3DPRLPlugin_Hypothesis_i:
+ public virtual POA_GHS3DPRLPlugin::GHS3DPRLPlugin_Hypothesis,
+ public virtual SMESH_Hypothesis_i
+{
+ public:
+ // Constructor
+ GHS3DPRLPlugin_Hypothesis_i (PortableServer::POA_ptr thePOA,
+ int theStudyId,
+ ::SMESH_Gen* theGenImpl);
+ // Destructor
+ virtual ~GHS3DPRLPlugin_Hypothesis_i();
+
+ // Methods for setting and getting parameters values
+ void SetMEDName(const char* theVal);
+ char * GetMEDName();
+
+ void SetNbPart(CORBA::Long theVal);
+ CORBA::Long GetNbPart();
+
+ void SetKeepFiles(CORBA::Boolean theVal);
+ CORBA::Boolean GetKeepFiles();
+
+ // Get implementation
+ ::GHS3DPRLPlugin_Hypothesis* GetImpl();
+
+ // Verify whether hypothesis supports given entity type
+ CORBA::Boolean IsDimSupported( SMESH::Dimension type );
+};
+
+#endif
--- /dev/null
+// SMESH GHS3DPRLPlugin : implementaion of SMESH idl descriptions
+//
+// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+//
+//
+//
+// File : GHS3DPRLPlugin_i.cxx
+// Author : Christian VAN WAMBEKE (CEA) (from Hexotic plugin Lioka RAZAFINDRAZAKA)
+// Module : SMESH
+// $Header :
+
+using namespace std;
+#include "SMESH_Hypothesis_i.hxx"
+
+#include "utilities.h"
+
+#include "GHS3DPRLPlugin_GHS3DPRL_i.hxx"
+#include "GHS3DPRLPlugin_Hypothesis_i.hxx"
+
+template <class T> class GHS3DPRLPlugin_Creator_i:public HypothesisCreator_i<T>
+{
+ // as we have 'module GHS3DPRLPlugin' in GHS3DPRLPlugin_Algorithm.idl
+ virtual std::string GetModuleName() { return "GHS3DPRLPlugin"; }
+};
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+
+extern "C"
+{
+ GenericHypothesisCreator_i* GetHypothesisCreator (const char* aHypName)
+ {
+ MESSAGE("GetHypothesisCreator " << aHypName);
+
+ GenericHypothesisCreator_i* aCreator = 0;
+
+ // Algorithms
+ if (strcmp(aHypName, "GHS3DPRL_3D") == 0)
+ aCreator = new GHS3DPRLPlugin_Creator_i<GHS3DPRLPlugin_GHS3DPRL_i>;
+ // Hypotheses
+ else if (strcmp(aHypName, "GHS3DPRL_Parameters") == 0)
+ aCreator = new GHS3DPRLPlugin_Creator_i<GHS3DPRLPlugin_Hypothesis_i>;
+ else ;
+
+ return aCreator;
+ }
+}
--- /dev/null
+# Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS, L3S, LJLL, MENSI
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
+# -* Makefile *-
+#
+# Author : Christian VAN WAMBEKE (CEA)
+# Module : GHS3DPRLPLUGIN
+# Date : 2006/06/30
+#
+#
+
+# source path
+top_srcdir=@top_srcdir@
+top_builddir=../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_builddir)/idl:${KERNEL_ROOT_DIR}/idl/salome:${GUI_ROOT_DIR}/idl/salome:${GEOM_ROOT_DIR}/idl/salome:${SMESH_ROOT_DIR}/idl/salome:${MED_ROOT_DIR}/idl/salome
+
+@COMMENCE@
+
+LIB_SRC = \
+ GHS3DPRLPlugin_GHS3DPRL.cxx \
+ GHS3DPRLPlugin_GHS3DPRL_i.cxx \
+ GHS3DPRLPlugin_Hypothesis.cxx \
+ GHS3DPRLPlugin_Hypothesis_i.cxx \
+ GHS3DPRLPlugin_i.cxx
+
+LIB_SERVER_IDL = GHS3DPRLPlugin_Algorithm.idl
+
+LIB_CLIENT_IDL = \
+ SALOME_Component.idl \
+ SALOME_Comm.idl \
+ GEOM_Gen.idl \
+ MED.idl
+
+# Libraries targets
+LIB = libGHS3DPRLEngine.la
+
+@CONCLUDE@
--- /dev/null
+# Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+#
+#
+#
+# File : Makefile.in
+# Author : Christian VAN WAMBEKE (CEA)
+# Module : SMESH
+
+top_srcdir=@top_srcdir@
+top_builddir=..
+srcdir=@srcdir@
+VPATH=.:@srcdir@
+
+@COMMENCE@
+
+SUBDIRS = GHS3DPRLPlugin gui tepal2med
+
+@MODULE@
--- /dev/null
+// GHS3DPRLPlugin GUI: GUI for plugged-in mesher GHS3DPRLPlugin
+//
+// Copyright (C) 2003 CEA
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
+//
+//
+//
+// File : GHS3DPRLPluginGUI.cxx
+// Author : Christian VAN WAMBEKE (CEA) (from Hexotic plugin Lioka RAZAFINDRAZAKA)
+// Module : GHS3DPRLPlugin
+
+#include "GHS3DPRLPluginGUI_HypothesisCreator.h"
+
+//=============================================================================
+/*! GetHypothesisCreator
+ *
+ */
+//=============================================================================
+extern "C"
+{
+ SMESHGUI_GenericHypothesisCreator* GetHypothesisCreator( const QString& aHypType )
+ {
+ SMESHGUI_GenericHypothesisCreator* aCreator = NULL;
+ if( aHypType=="GHS3DPRL_Parameters" )
+ aCreator = new GHS3DPRLPluginGUI_HypothesisCreator( aHypType );
+ return aCreator;
+ }
+}
--- /dev/null
+// GHS3DPRLPlugin GUI: GUI for plugged-in mesher GHS3DPRLPlugin
+//
+// Copyright (C) 2003 CEA
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
+//
+//
+//
+// File : GHS3DPRLPluginGUI_HypothesisCreator.cxx
+// Author : Christian VAN WAMBEKE (CEA) (from Hexotic plugin Lioka RAZAFINDRAZAKA)
+// Module : GHS3DPRLPlugin
+// $Header:
+
+#include "GHS3DPRLPluginGUI_HypothesisCreator.h"
+
+#include <SMESHGUI_Utils.h>
+#include <SMESHGUI_HypothesesUtils.h>
+
+#include CORBA_SERVER_HEADER(GHS3DPRLPlugin_Algorithm)
+
+#include <SUIT_Session.h>
+
+#include <SalomeApp_Tools.h>
+
+#include <QtxIntSpinBox.h>
+#include <QtxComboBox.h>
+
+#include <qlabel.h>
+#include <qgroupbox.h>
+#include <qframe.h>
+#include <qlayout.h>
+#include <qlineedit.h>
+#include <qcheckbox.h>
+#include <qwhatsthis.h>
+#include <qpixmap.h>
+
+
+GHS3DPRLPluginGUI_HypothesisCreator::GHS3DPRLPluginGUI_HypothesisCreator( const QString& theHypType )
+: SMESHGUI_GenericHypothesisCreator( theHypType ),
+ myIs3D(true)
+{
+}
+
+GHS3DPRLPluginGUI_HypothesisCreator::~GHS3DPRLPluginGUI_HypothesisCreator()
+{
+}
+
+bool GHS3DPRLPluginGUI_HypothesisCreator::checkParams() const
+{
+ GHS3DPRLHypothesisData data_old, data_new;
+ readParamsFromHypo( data_old );
+ readParamsFromWidgets( data_new );
+ bool res = storeParamsToHypo( data_new );
+ return res;
+}
+
+QFrame* GHS3DPRLPluginGUI_HypothesisCreator::buildFrame()
+{
+ QString toto="myframe";
+ QFrame* fr = new QFrame( 0, "myframe" );
+ fr->setMinimumSize( QSize( 300, 140 ) );
+ QVBoxLayout* lay = new QVBoxLayout( fr, 5, 0 );
+
+ QGroupBox* GroupC1 = new QGroupBox( 2, Qt::Horizontal, fr, "GroupC1" );
+ lay->addWidget( GroupC1 );
+
+ GroupC1->setTitle( tr( "SMESH_ARGUMENTS" ) );
+ GroupC1->layout()->setSpacing( 6 );
+ GroupC1->layout()->setMargin( 11 );
+
+ myName = 0;
+ if( isCreation() ) {
+ myNameText = new QLabel( tr( "SMESH_NAME" ), GroupC1 );
+ QWhatsThis::add( myNameText, tr( "GHS3DPRL_WhatsThis_Name" ) );
+ myName = new QLineEdit( GroupC1 );
+ }
+
+ GHS3DPRLPlugin::GHS3DPRLPlugin_Hypothesis_var h =
+ GHS3DPRLPlugin::GHS3DPRLPlugin_Hypothesis::_narrow( initParamsHypothesis() );
+
+ myMEDNameText = new QLabel( tr( "GHS3DPRL_MEDName" ), GroupC1 );
+ QWhatsThis::add( myMEDNameText, tr( "GHS3DPRL_WhatsThis_MEDName" ) );
+ myMEDName = new QLineEdit( GroupC1 );
+ QLabel* myNbPartText = new QLabel( tr( "GHS3DPRL_NbPart" ), GroupC1 );
+ QWhatsThis::add( myNbPartText, tr( "GHS3DPRL_WhatsThis_NbPart" ) );
+ myNbPart = new QtxIntSpinBox( GroupC1 );
+ // myHexesMinLevel->setMinValue( 3 );
+ myNbPart->setMinValue( 1 );
+ myNbPart->setMaxValue( 256 );
+ myNbPart->setLineStep( 1 );
+
+ myKeepFiles = new QCheckBox( tr( "GHS3DPRL_KeepFiles" ), GroupC1 );
+ QWhatsThis::add( myKeepFiles, tr( "GHS3DPRL_WhatsThis_KeepFiles" ) );
+
+ GroupC1->addSpace(0);
+ myIs3D = true;
+
+ return fr;
+}
+
+void GHS3DPRLPluginGUI_HypothesisCreator::retrieveParams() const
+{
+ GHS3DPRLHypothesisData data;
+ readParamsFromHypo( data );
+
+ if( myName ) myName->setText( data.myName );
+ myMEDName->setText( data.myMEDName );
+ myNbPart->setValue( data.myNbPart );
+ myKeepFiles->setChecked( data.myKeepFiles );
+ myNbPart->setEnabled(true);
+}
+
+QString GHS3DPRLPluginGUI_HypothesisCreator::storeParams() const
+{
+ GHS3DPRLHypothesisData data;
+ readParamsFromWidgets( data );
+ storeParamsToHypo( data );
+
+ QString valStr;
+ valStr += tr("GHS3DPRL_MEDName") + " = " + data.myMEDName + "; ";
+ valStr += tr("GHS3DPRL_NbPart") + " = " + QString::number( data.myNbPart ) + "; ";
+ valStr += tr("GHS3DPRL_KeepFiles") + " = " + QString::number( data.myKeepFiles ) + "; ";
+
+ return valStr;
+}
+
+bool GHS3DPRLPluginGUI_HypothesisCreator::readParamsFromHypo( GHS3DPRLHypothesisData& h_data ) const
+{
+ GHS3DPRLPlugin::GHS3DPRLPlugin_Hypothesis_var h =
+ GHS3DPRLPlugin::GHS3DPRLPlugin_Hypothesis::_narrow( initParamsHypothesis() );
+
+ HypothesisData* data = SMESH::GetHypothesisData( hypType() );
+ h_data.myName = isCreation() && data ? data->Label : "";
+ h_data.myMEDName = h->GetMEDName(); //"DOMAIN\0";
+ h_data.myNbPart = h->GetNbPart();
+ h_data.myKeepFiles = h->GetKeepFiles();
+
+ return true;
+}
+
+bool GHS3DPRLPluginGUI_HypothesisCreator::storeParamsToHypo( const GHS3DPRLHypothesisData& h_data ) const
+{
+ GHS3DPRLPlugin::GHS3DPRLPlugin_Hypothesis_var h =
+ GHS3DPRLPlugin::GHS3DPRLPlugin_Hypothesis::_narrow( hypothesis() );
+
+ bool ok = true;
+ try
+ {
+ if( isCreation() )
+ SMESH::SetName( SMESH::FindSObject( h ), h_data.myName.latin1() );
+
+ h->SetMEDName( h_data.myMEDName );
+ h->SetNbPart( h_data.myNbPart );
+ h->SetKeepFiles( h_data.myKeepFiles );
+ }
+ catch(const SALOME::SALOME_Exception& ex)
+ {
+ SalomeApp_Tools::QtCatchCorbaException(ex);
+ ok = false;
+ }
+ return ok;
+}
+
+bool GHS3DPRLPluginGUI_HypothesisCreator::readParamsFromWidgets( GHS3DPRLHypothesisData& h_data ) const
+{
+ h_data.myName = myName ? myName->text() : "";
+ h_data.myMEDName = myMEDName->text();
+ h_data.myNbPart = myNbPart->value();
+ h_data.myKeepFiles = myKeepFiles->isChecked();
+
+ return true;
+}
+
+QString GHS3DPRLPluginGUI_HypothesisCreator::caption() const
+{
+ return tr( QString( "GHS3DPRL_%1_TITLE" ).arg(myIs3D?QString("3D"):QString("3D")) );
+}
+
+QPixmap GHS3DPRLPluginGUI_HypothesisCreator::icon() const
+{
+ QString hypIconName = tr( QString("ICON_DLG_GHS3DPRL_PARAMETERS%1").arg(myIs3D?QString(""):QString("")) );
+ return SUIT_Session::session()->resourceMgr()->loadPixmap( "GHS3DPRLPlugin", hypIconName );
+}
+
+QString GHS3DPRLPluginGUI_HypothesisCreator::type() const
+{
+ return tr( QString( "GHS3DPRL_%1_HYPOTHESIS" ).arg(myIs3D?QString("3D"):QString("3D")) );
+}
--- /dev/null
+// GHS3DPRLPlugin GUI: GUI for plugged-in mesher GHS3DPRLPlugin
+//
+// Copyright (C) 2003 CEA
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
+//
+//
+//
+// File : GHS3DPRLPluginGUI_HypothesisCreator.h
+// Author : Christian VAN WAMBEKE (CEA) (from Hexotic plugin Lioka RAZAFINDRAZAKA)
+// Module : GHS3DPRLPlugin
+// $Header:
+
+#ifndef GHS3DPRLPLUGINGUI_HypothesisCreator_HeaderFile
+#define GHS3DPRLPLUGINGUI_HypothesisCreator_HeaderFile
+
+#include <SMESHGUI_Hypotheses.h>
+
+class QtxIntSpinBox;
+class QtxDblSpinBox;
+class QCheckBox;
+class QLineEdit;
+
+typedef struct
+{
+ QString myName;
+ QString myMEDName;
+ int myNbPart;
+ bool myKeepFiles;
+} GHS3DPRLHypothesisData;
+
+/*!
+ * \brief Class for creation of GHS3DPRL hypotheses
+*/
+class GHS3DPRLPluginGUI_HypothesisCreator : public SMESHGUI_GenericHypothesisCreator
+{
+ Q_OBJECT
+
+public:
+ GHS3DPRLPluginGUI_HypothesisCreator( const QString& );
+ virtual ~GHS3DPRLPluginGUI_HypothesisCreator();
+
+ virtual bool checkParams() const;
+
+protected:
+ virtual QFrame* buildFrame ();
+ virtual void retrieveParams() const;
+ virtual QString storeParams () const;
+
+ virtual QString caption() const;
+ virtual QPixmap icon() const;
+ virtual QString type() const;
+
+private:
+ bool readParamsFromHypo( GHS3DPRLHypothesisData& ) const;
+ bool readParamsFromWidgets( GHS3DPRLHypothesisData& ) const;
+ bool storeParamsToHypo( const GHS3DPRLHypothesisData& ) const;
+
+private:
+ QLineEdit* myName;
+ QLabel* myNameText;
+ QLineEdit* myMEDName;
+ QLabel* myMEDNameText;
+ QtxIntSpinBox* myNbPart;
+ QLabel* myNbPartText;
+ QCheckBox* myKeepFiles;
+ bool myIs3D;
+};
+
+#endif
--- /dev/null
+# Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS, L3S, LJLL, MENSI
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
+# This is a Qt message file in .po format. Each msgid starts with
+# a scope. This scope should *NOT* be translated - eg. "Foo::Bar"
+# would be translated to "Pub", not "Foo::Pub".
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"POT-Creation-Date: 2002-05-28 10:57:43 AM CEST\n"
+"PO-Revision-Date: YYYY-MM-DD\n"
+"Last-Translator: FULLNAME <EMAIL@ADDRESS>\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+
+
+#-----------------------------------------------------------
+# Hypothesis
+#-----------------------------------------------------------
+
+msgid "ICON_DLG_GHS3DPRL_PARAMETERS"
+msgstr "mesh_hypo_GHS3DPRL.png"
+
+msgid "ICON_DLG_GHS3DPRL_PARAMETERS_3D"
+msgstr "mesh_hypo_GHS3DPRL.png"
+
+#-----------------------------------------------------------
+# ObjectBrowser
+#-----------------------------------------------------------
+
+msgid "ICON_SMESH_TREE_ALGO_GHS3DPRL_3D"
+msgstr "mesh_tree_algo_tetra.png"
+
+msgid "ICON_SMESH_TREE_ALGO_GHS3DPRL_3D"
+msgstr "mesh_tree_algo_GHS3DPRL.png"
+
+msgid "ICON_SMESH_TREE_ALGO_GHS3DPRL_2D3D"
+msgstr "mesh_tree_algo_GHS3DPRL.png"
+
+msgid "ICON_SMESH_TREE_HYPO_GHS3DPRL_Parameters"
+msgstr "mesh_tree_hypo_GHS3DPRL.png"
+
+msgid "ICON_SMESH_TREE_HYPO_GHS3DPRL_Parameters_3D"
+msgstr "mesh_tree_hypo_GHS3DPRL.png"
+
--- /dev/null
+# Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS, L3S, LJLL, MENSI
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
+# This is a Qt message file in .po format. Each msgid starts with
+# a scope. This scope should *NOT* be translated - eg. "Foo::Bar"
+# would be translated to "Pub", not "Foo::Pub".
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"POT-Creation-Date: 2002-05-28 10:46:48 AM CEST\n"
+"PO-Revision-Date: YYYY-MM-DD\n"
+"Last-Translator: FULLNAME <EMAIL@ADDRESS>\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+
+msgid "GHS3DPRL_WhatsThis_Name"
+msgstr "Name of applied hypothese"
+
+msgid "GHS3DPRL_MEDName"
+msgstr "MED_Name"
+
+msgid "GHS3DPRL_WhatsThis_MEDName"
+msgstr "Generic path/name of finals outputs files (.med)"
+
+msgid "GHS3DPRL_NbPart"
+msgstr "Nb_Part"
+
+msgid "GHS3DPRL_WhatsThis_NbPart"
+msgstr "Number of partitions of initial wrap"
+
+msgid "GHS3DPRL_KeepFiles"
+msgstr "Keep_Files"
+
+msgid "GHS3DPRL_WhatsThis_KeepFiles"
+msgstr "Keep intemediates tepal Files (.faces,.points,.msg,.noboite...)"
+
+msgid "GHS3DPRL_3D_HYPOTHESIS"
+msgstr "GHS3DPRL 3D"
+
+msgid "GHS3DPRL_3D_TITLE"
+msgstr "Hypothesis Construction"
--- /dev/null
+# Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS, L3S, LJLL, MENSI
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
+# File : Makefile.in
+// Author : Christian VAN WAMBEKE (CEA)
+# Module : GHS3DPRLPLUGIN
+
+top_srcdir=@top_srcdir@
+top_builddir=../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_builddir)/idl:${KERNEL_ROOT_DIR}/idl/salome:${GUI_ROOT_DIR}/idl/salome:${GEOM_ROOT_DIR}/idl/salome:${SMESH_ROOT_DIR}/idl/salome:${MED_ROOT_DIR}/idl/salome
+
+@COMMENCE@
+
+# .po files to transform in .qm
+PO_FILES = \
+ GHS3DPRLPlugin_images.po \
+ GHS3DPRLPlugin_msg_en.po
+
+# Libraries targets
+LIB = libGHS3DPRLPluginGUI.la
+
+LIB_SRC = \
+ GHS3DPRLPluginGUI.cxx \
+ GHS3DPRLPluginGUI_HypothesisCreator.cxx
+
+LIB_MOC = \
+ GHS3DPRLPluginGUI_HypothesisCreator.h
+
+LIB_CLIENT_IDL = \
+ SALOME_Exception.idl \
+ SALOME_GenericObj.idl \
+ SALOME_Component.idl \
+ SALOME_Comm.idl \
+ GEOM_Gen.idl \
+ MED.idl \
+ SMESH_Gen.idl \
+ SMESH_Mesh.idl \
+ SMESH_Group.idl \
+ GHS3DPRLPlugin_Algorithm.idl
+
+LIB_SERVER_IDL =
+
+# additionnal information to compil and link file
+
+CPPFLAGS += $(QT_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) \
+ -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome \
+ -I${GEOM_ROOT_DIR}/include/salome -I${SMESH_ROOT_DIR}/include/salome \
+ $(BOOST_CPPFLAGS)
+CXXFLAGS += -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome \
+ -I${GEOM_ROOT_DIR}/include/salome -I${SMESH_ROOT_DIR}/include/salome
+
+LDFLAGS += -lSMESH $(OCC_KERNEL_LIBS) -L${KERNEL_ROOT_DIR}/lib/salome \
+ -L${GUI_ROOT_DIR}/lib/salome -L${GEOM_ROOT_DIR}/lib/salome \
+ -L${SMESH_ROOT_DIR}/lib/salome
+
+@CONCLUDE@
--- /dev/null
+# DO NOT DELETE
+
+ghs3dprl_read_ouputs.o: /usr/include/stdio.h /usr/include/features.h
+ghs3dprl_read_ouputs.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
+ghs3dprl_read_ouputs.o: /usr/lib/gcc/i586-mandriva-linux-gnu/4.0.1/include/stddef.h
+ghs3dprl_read_ouputs.o: /usr/include/bits/types.h
+ghs3dprl_read_ouputs.o: /usr/include/bits/wordsize.h
+ghs3dprl_read_ouputs.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+ghs3dprl_read_ouputs.o: /usr/include/_G_config.h /usr/include/wchar.h
+ghs3dprl_read_ouputs.o: /usr/include/bits/wchar.h /usr/include/gconv.h
+ghs3dprl_read_ouputs.o: /usr/lib/gcc/i586-mandriva-linux-gnu/4.0.1/include/stdarg.h
+ghs3dprl_read_ouputs.o: /usr/include/bits/stdio_lim.h
+ghs3dprl_read_ouputs.o: /usr/include/bits/sys_errlist.h ghs3dprl_msg_parser.h
+ghs3dprl_read_ouputs.o: ghs3dprl_mesh_wrap.h /usr/lib/qt3/include/qdict.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qgdict.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qptrcollection.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qglobal.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qstring.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qcstring.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qmemarray.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qgarray.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qshared.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qwinexport.h
+ghs3dprl_read_ouputs.o: /usr/include/string.h /usr/include/limits.h
+ghs3dprl_read_ouputs.o: /usr/lib/gcc/i586-mandriva-linux-gnu/4.0.1/include/limits.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qregexp.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qstringlist.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qvaluelist.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qtl.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qtextstream.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qiodevice.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qdatastream.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qstrlist.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qptrlist.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qglist.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qxml.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qfile.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qvaluevector.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qwindowdefs.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qobjectdefs.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qnamespace.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qapplication.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qdesktopwidget.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qwidget.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qobject.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qevent.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qregion.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qrect.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qsize.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qpoint.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qmime.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qmap.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qpair.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qpaintdevice.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qpalette.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qcolor.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qbrush.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qfont.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qfontmetrics.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qfontinfo.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qsizepolicy.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qasciidict.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qtranslator.h dlg_ghs3dmain.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qvariant.h
+ghs3dprl_read_ouputs.o: /usr/lib/qt3/include/qdialog.h
+ghs3dprl_mesh_wrap.o: /usr/lib/qt3/include/qstring.h
+ghs3dprl_mesh_wrap.o: /usr/lib/qt3/include/qcstring.h
+ghs3dprl_mesh_wrap.o: /usr/lib/qt3/include/qmemarray.h
+ghs3dprl_mesh_wrap.o: /usr/lib/qt3/include/qgarray.h
+ghs3dprl_mesh_wrap.o: /usr/lib/qt3/include/qshared.h
+ghs3dprl_mesh_wrap.o: /usr/lib/qt3/include/qglobal.h
+ghs3dprl_mesh_wrap.o: /usr/lib/qt3/include/qwinexport.h /usr/include/string.h
+ghs3dprl_mesh_wrap.o: /usr/include/features.h /usr/include/sys/cdefs.h
+ghs3dprl_mesh_wrap.o: /usr/include/gnu/stubs.h
+ghs3dprl_mesh_wrap.o: /usr/lib/gcc/i586-mandriva-linux-gnu/4.0.1/include/stddef.h
+ghs3dprl_mesh_wrap.o: /usr/include/limits.h
+ghs3dprl_mesh_wrap.o: /usr/lib/gcc/i586-mandriva-linux-gnu/4.0.1/include/limits.h
+ghs3dprl_mesh_wrap.o: /usr/lib/qt3/include/qfile.h
+ghs3dprl_mesh_wrap.o: /usr/lib/qt3/include/qiodevice.h /usr/include/stdio.h
+ghs3dprl_mesh_wrap.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
+ghs3dprl_mesh_wrap.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+ghs3dprl_mesh_wrap.o: /usr/include/_G_config.h /usr/include/wchar.h
+ghs3dprl_mesh_wrap.o: /usr/include/bits/wchar.h /usr/include/gconv.h
+ghs3dprl_mesh_wrap.o: /usr/lib/gcc/i586-mandriva-linux-gnu/4.0.1/include/stdarg.h
+ghs3dprl_mesh_wrap.o: /usr/include/bits/stdio_lim.h
+ghs3dprl_mesh_wrap.o: /usr/include/bits/sys_errlist.h ghs3dprl_mesh_wrap.h
+ghs3dprl_mesh_wrap.o: /usr/lib/qt3/include/qdict.h
+ghs3dprl_mesh_wrap.o: /usr/lib/qt3/include/qgdict.h
+ghs3dprl_mesh_wrap.o: /usr/lib/qt3/include/qptrcollection.h
+ghs3dprl_mesh_wrap.o: /usr/lib/qt3/include/qregexp.h
+ghs3dprl_mesh_wrap.o: /usr/lib/qt3/include/qstringlist.h
+ghs3dprl_mesh_wrap.o: /usr/lib/qt3/include/qvaluelist.h
+ghs3dprl_mesh_wrap.o: /usr/lib/qt3/include/qtl.h
+ghs3dprl_mesh_wrap.o: /usr/lib/qt3/include/qtextstream.h
+ghs3dprl_mesh_wrap.o: /usr/lib/qt3/include/qdatastream.h
+ghs3dprl_mesh_wrap.o: /usr/lib/qt3/include/qstrlist.h
+ghs3dprl_mesh_wrap.o: /usr/lib/qt3/include/qptrlist.h
+ghs3dprl_mesh_wrap.o: /usr/lib/qt3/include/qglist.h
+ghs3dprl_msg_parser.o: ghs3dprl_msg_parser.h ghs3dprl_mesh_wrap.h
+ghs3dprl_msg_parser.o: /usr/lib/qt3/include/qdict.h
+ghs3dprl_msg_parser.o: /usr/lib/qt3/include/qgdict.h
+ghs3dprl_msg_parser.o: /usr/lib/qt3/include/qptrcollection.h
+ghs3dprl_msg_parser.o: /usr/lib/qt3/include/qglobal.h
+ghs3dprl_msg_parser.o: /usr/lib/qt3/include/qstring.h
+ghs3dprl_msg_parser.o: /usr/lib/qt3/include/qcstring.h
+ghs3dprl_msg_parser.o: /usr/lib/qt3/include/qmemarray.h
+ghs3dprl_msg_parser.o: /usr/lib/qt3/include/qgarray.h
+ghs3dprl_msg_parser.o: /usr/lib/qt3/include/qshared.h
+ghs3dprl_msg_parser.o: /usr/lib/qt3/include/qwinexport.h
+ghs3dprl_msg_parser.o: /usr/include/string.h /usr/include/features.h
+ghs3dprl_msg_parser.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
+ghs3dprl_msg_parser.o: /usr/lib/gcc/i586-mandriva-linux-gnu/4.0.1/include/stddef.h
+ghs3dprl_msg_parser.o: /usr/include/limits.h
+ghs3dprl_msg_parser.o: /usr/lib/gcc/i586-mandriva-linux-gnu/4.0.1/include/limits.h
+ghs3dprl_msg_parser.o: /usr/lib/qt3/include/qregexp.h
+ghs3dprl_msg_parser.o: /usr/lib/qt3/include/qstringlist.h
+ghs3dprl_msg_parser.o: /usr/lib/qt3/include/qvaluelist.h
+ghs3dprl_msg_parser.o: /usr/lib/qt3/include/qtl.h
+ghs3dprl_msg_parser.o: /usr/lib/qt3/include/qtextstream.h
+ghs3dprl_msg_parser.o: /usr/lib/qt3/include/qiodevice.h /usr/include/stdio.h
+ghs3dprl_msg_parser.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
+ghs3dprl_msg_parser.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+ghs3dprl_msg_parser.o: /usr/include/_G_config.h /usr/include/wchar.h
+ghs3dprl_msg_parser.o: /usr/include/bits/wchar.h /usr/include/gconv.h
+ghs3dprl_msg_parser.o: /usr/lib/gcc/i586-mandriva-linux-gnu/4.0.1/include/stdarg.h
+ghs3dprl_msg_parser.o: /usr/include/bits/stdio_lim.h
+ghs3dprl_msg_parser.o: /usr/include/bits/sys_errlist.h
+ghs3dprl_msg_parser.o: /usr/lib/qt3/include/qdatastream.h
+ghs3dprl_msg_parser.o: /usr/lib/qt3/include/qstrlist.h
+ghs3dprl_msg_parser.o: /usr/lib/qt3/include/qptrlist.h
+ghs3dprl_msg_parser.o: /usr/lib/qt3/include/qglist.h
+ghs3dprl_msg_parser.o: /usr/lib/qt3/include/qxml.h
+ghs3dprl_msg_parser.o: /usr/lib/qt3/include/qfile.h
+ghs3dprl_msg_parser.o: /usr/lib/qt3/include/qvaluevector.h
+dlg_ghs3dmain.o: dlg_ghs3dmain.h /usr/lib/qt3/include/qvariant.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qstring.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qcstring.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qmemarray.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qgarray.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qshared.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qglobal.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qwinexport.h /usr/include/string.h
+dlg_ghs3dmain.o: /usr/include/features.h /usr/include/sys/cdefs.h
+dlg_ghs3dmain.o: /usr/include/gnu/stubs.h
+dlg_ghs3dmain.o: /usr/lib/gcc/i586-mandriva-linux-gnu/4.0.1/include/stddef.h
+dlg_ghs3dmain.o: /usr/include/limits.h
+dlg_ghs3dmain.o: /usr/lib/gcc/i586-mandriva-linux-gnu/4.0.1/include/limits.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qvaluelist.h /usr/lib/qt3/include/qtl.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qtextstream.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qiodevice.h /usr/include/stdio.h
+dlg_ghs3dmain.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
+dlg_ghs3dmain.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+dlg_ghs3dmain.o: /usr/include/_G_config.h /usr/include/wchar.h
+dlg_ghs3dmain.o: /usr/include/bits/wchar.h /usr/include/gconv.h
+dlg_ghs3dmain.o: /usr/lib/gcc/i586-mandriva-linux-gnu/4.0.1/include/stdarg.h
+dlg_ghs3dmain.o: /usr/include/bits/stdio_lim.h
+dlg_ghs3dmain.o: /usr/include/bits/sys_errlist.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qdatastream.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qstringlist.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qstrlist.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qptrlist.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qglist.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qptrcollection.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qmap.h /usr/lib/qt3/include/qpair.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qdialog.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qwidget.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qwindowdefs.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qobjectdefs.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qnamespace.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qobject.h /usr/lib/qt3/include/qevent.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qregion.h /usr/lib/qt3/include/qrect.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qsize.h /usr/lib/qt3/include/qpoint.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qmime.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qpaintdevice.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qpalette.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qcolor.h /usr/lib/qt3/include/qbrush.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qfont.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qfontmetrics.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qfontinfo.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qsizepolicy.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qgroupbox.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qframe.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qspinbox.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qrangecontrol.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qlabel.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qradiobutton.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qbutton.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qkeysequence.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qpushbutton.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qiconset.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qpixmap.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qlayout.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qtooltip.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qwhatsthis.h
+dlg_ghs3dmain.o: /usr/lib/qt3/include/qcursor.h /usr/lib/qt3/include/qimage.h
+dlg_ghs3dmain.o: dlg_ghs3dmain.ui.h
+moc_dlg_ghs3dmain.o: dlg_ghs3dmain.h /usr/lib/qt3/include/qvariant.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qstring.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qcstring.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qmemarray.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qgarray.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qshared.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qglobal.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qwinexport.h /usr/include/string.h
+moc_dlg_ghs3dmain.o: /usr/include/features.h /usr/include/sys/cdefs.h
+moc_dlg_ghs3dmain.o: /usr/include/gnu/stubs.h
+moc_dlg_ghs3dmain.o: /usr/lib/gcc/i586-mandriva-linux-gnu/4.0.1/include/stddef.h
+moc_dlg_ghs3dmain.o: /usr/include/limits.h
+moc_dlg_ghs3dmain.o: /usr/lib/gcc/i586-mandriva-linux-gnu/4.0.1/include/limits.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qvaluelist.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qtl.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qtextstream.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qiodevice.h /usr/include/stdio.h
+moc_dlg_ghs3dmain.o: /usr/include/bits/types.h /usr/include/bits/wordsize.h
+moc_dlg_ghs3dmain.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+moc_dlg_ghs3dmain.o: /usr/include/_G_config.h /usr/include/wchar.h
+moc_dlg_ghs3dmain.o: /usr/include/bits/wchar.h /usr/include/gconv.h
+moc_dlg_ghs3dmain.o: /usr/lib/gcc/i586-mandriva-linux-gnu/4.0.1/include/stdarg.h
+moc_dlg_ghs3dmain.o: /usr/include/bits/stdio_lim.h
+moc_dlg_ghs3dmain.o: /usr/include/bits/sys_errlist.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qdatastream.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qstringlist.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qstrlist.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qptrlist.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qglist.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qptrcollection.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qmap.h /usr/lib/qt3/include/qpair.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qdialog.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qwidget.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qwindowdefs.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qobjectdefs.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qnamespace.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qobject.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qevent.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qregion.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qrect.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qsize.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qpoint.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qmime.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qpaintdevice.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qpalette.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qcolor.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qbrush.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qfont.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qfontmetrics.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qfontinfo.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qsizepolicy.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qmetaobject.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qconnection.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qapplication.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qdesktopwidget.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qasciidict.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qgdict.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/qtranslator.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/private/qucomextra_p.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/private/qucom_p.h
+moc_dlg_ghs3dmain.o: /usr/lib/qt3/include/quuid.h
--- /dev/null
+.SUFFIXES: .o .f90 .f .swp .c .cxx
+
+# Makefile pour linux avec g95
+#
+SHELL = /bin/sh
+MED = /export/home/secher/med-2.3.1-install/
+HDF = /home/salome/pal/installations/salome_3.2.5_MD06/hdf5-1.6.4/
+#BOOST = /home/wambeke/boost_1_33_1
+
+
+# Options de compilation et Edition de liens
+# ------------------------------------------
+LDFLAGS= -L $(QTDIR)lib -lqt-mt -L $(MED)lib -lmed -L $(HDF)lib -lhdf5
+
+# Options d'optimisation
+# ----------------------
+OPTLEVEL =
+#-O3
+
+# OPTIONS D'INCLUDE
+# ------------------
+DIRINCLUDE = -I $(QTDIR)include -I $(MED)include -I $(HDF)include
+
+# Option de debogage
+# ------------------
+DEBUG= -g -Wall -pedantic -ansi -Wno-long-long
+
+# Librairies
+# -----------
+
+FLIBS=
+
+# Compilateurs
+# ------------------------
+
+F77 = mpif77
+F77FLAGS = $(OPTLEVEL)
+F77LINKER=mpif77
+
+F90 = mpif90
+F90LINKER= mpif90
+F90FLAGS = $(OPTLEVEL)
+
+CCC = g++
+CC = gcc
+CCCFLAGS =
+CXXLINKER=g++
+
+# SOURCES
+# --------
+SRC=\
+ ghs3dprl_read_ouputs.cxx ghs3dprl_mesh_wrap.cxx ghs3dprl_msg_parser.cxx dlg_ghs3dmain.cxx moc_dlg_ghs3dmain.cxx
+
+
+# Modules objets
+# --------------
+OBJ=$(SRC:.cxx=.o)
+
+
+# Executables
+# -----------
+EXECS=tepal2med
+
+
+all: print $(EXECS)
+
+print:
+ @echo '=============== COMPILATION ================'
+
+
+# Analyse des dependances
+# ------------------------
+depend .depend:
+ makedepend -- $(DIRINCLUDE) -I. -- $(SRC) -f- >.depend
+
+include .depend
+
+#####################
+# #
+# Edition de liens #
+# #
+#####################
+
+$(EXECS):$(OBJ)
+ $(CXXLINKER) $(LDFLAGS) -o $(EXECS) $(CXXFLAGS) $(OBJ) $(FLIBS) $(DEBUG)
+
+
+#####################
+# #
+# Compilation #
+# #
+#####################
+
+
+%.o:%.f77
+ $(F77) $(F77FLAGS) $(DIRINCLUDE) $(DEBUG) -c $*.f
+
+%.o:%.F90
+ $(F90) $(F90FLAGS) $(DIRINCLUDE) $(DEBUG) -c $*.F90
+
+%.o:%.cxx
+ $(CCC) $(CXXFLAGS) $(DIRINCLUDE) $(DEBUG) -c $*.cxx
+
+%.o:%.cpp
+ $(CCC) $(CXXFLAGS) $(DIRINCLUDE) $(DEBUG) -c $*.cpp
+
+%.o:%.c
+ $(CC) $(CFLAGS) $(DIRINCLUDE) $(DEBUG) -c $*.c
+
+clean:
+ rm -f *.o *~ *.mod *.kmo *.l
+
+cleanall:
+ rm -f *.o *~ *.mod *.kmo *.l ${EXECS}
+
+###################
+# #
+# Deboguage #
+# #
+###################
+
+debug:
+ make DEBUG="-g" OPTLEVEL=" "
+
+
--- /dev/null
+# Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS, L3S, LJLL, MENSI
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/
+#
+# -* Makefile *-
+#
+# Author : Christian VAN WAMBEKE (CEA)
+# Module : GHS3DPRLPLUGIN
+# Date : 2006/06/30
+#
+#
+
+# source path
+top_srcdir=@top_srcdir@
+top_builddir=../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_builddir)/idl:${KERNEL_ROOT_DIR}/idl/salome:${GUI_ROOT_DIR}/idl/salome:${GEOM_ROOT_DIR}/idl/salome:${SMESH_ROOT_DIR}/idl/salome:${MED_ROOT_DIR}/idl/salome
+
+@COMMENCE@
+
+SRC= ghs3dprl_mesh_wrap.cxx ghs3dprl_msg_parser.cxx dlg_ghs3dmain.cxx moc_dlg_ghs3dmain.cxx
+OBJ=$(SRC:.cxx=.o)
+
+BIN = tepal2med
+BIN_SRC =
+
+BIN_SERVER_IDL =
+
+BIN_CLIENT_IDL =
+
+CPPFLAGS+=$(QT_INCLUDES) $(MED2_INCLUDES) $(HDF5_INCLUDES)
+LDFLAGSFORBIN+=-lm $(QT_LIBS) $(MED2_LIBS) $(HDF5_LIBS)
+
+$(BIN):$(OBJ)
+ $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $(QT_LIBS) $(MED2_LIBS) $(HDF5_LIBS) $<
+
+@CONCLUDE@
--- /dev/null
+/****************************************************************************
+** Form implementation generated from reading ui file 'dlg_ghs3dmain.ui'
+**
+** Created: mer fév 14 13:34:54 2007
+** by: The User Interface Compiler ($Id$)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "dlg_ghs3dmain.h"
+
+#include <qvariant.h>
+#include <qgroupbox.h>
+#include <qspinbox.h>
+#include <qlabel.h>
+#include <qradiobutton.h>
+#include <qpushbutton.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include <qimage.h>
+#include <qpixmap.h>
+
+#include "dlg_ghs3dmain.ui.h"
+/*
+ * Constructs a dlg_ghs3dmain as a child of 'parent', with the
+ * name 'name' and widget flags set to 'f'.
+ *
+ * The dialog will by default be modeless, unless you set 'modal' to
+ * TRUE to construct a modal dialog.
+ */
+dlg_ghs3dmain::dlg_ghs3dmain( QWidget* parent, const char* name, bool modal, WFlags fl )
+ : QDialog( parent, name, modal, fl )
+{
+ if ( !name ) setName( "tepal2med" );
+ setMinimumSize( QSize( 270, 150 ) );
+ setMaximumSize( QSize( 270, 150 ) );
+ setSizeGripEnabled( FALSE );
+
+ Parameters = new QGroupBox( this, "Parameters" );
+ Parameters->setGeometry( QRect( 10, 10, 250, 91 ) );
+
+ NbPart = new QSpinBox( Parameters, "NbPart" );
+ NbPart->setGeometry( QRect( 10, 20, 80, 31 ) );
+ NbPart->setMaxValue( 256 );
+ NbPart->setMinValue( 1 );
+
+ textNbPart = new QLabel( Parameters, "textNbPart" );
+ textNbPart->setGeometry( QRect( 100, 20, 141, 31 ) );
+
+ KeepFiles = new QRadioButton( Parameters, "KeepFiles" );
+ KeepFiles->setEnabled( TRUE );
+ KeepFiles->setGeometry( QRect( 40, 50, 190, 31 ) );
+ KeepFiles->setChecked( FALSE );
+
+ Ok = new QPushButton( this, "Ok" );
+ Ok->setGeometry( QRect( 180, 112, 80, 30 ) );
+ Ok->setAutoDefault( FALSE );
+ languageChange();
+ resize( QSize(270, 150).expandedTo(minimumSizeHint()) );
+ clearWState( WState_Polished );
+
+ // signals and slots connections
+ connect( Ok, SIGNAL( clicked() ), this, SLOT( slotok() ) );
+ //connect( Ok, SIGNAL( released() ), this, SLOT( close() ) );
+ init();
+}
+
+/*
+ * Destroys the object and frees any allocated resources
+ */
+dlg_ghs3dmain::~dlg_ghs3dmain()
+{
+ destroy();
+ // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ * Sets the strings of the subwidgets using the current
+ * language.
+ */
+void dlg_ghs3dmain::languageChange()
+{
+ //setCaption( tr( "GHS3DPRL" ) );
+ Parameters->setTitle( tr( "Parameters" ) );
+ textNbPart->setText( tr( "Nb of partitions" ) );
+ KeepFiles->setText( tr( " Keep files" ) );
+ KeepFiles->setAccel( QKeySequence( QString::null ) );
+ QToolTip::add( KeepFiles, QString::null );
+ QWhatsThis::add( KeepFiles, tr( "Keep outputs files of tepal" ) );
+ Ok->setText( tr( "Ok" ) );
+ Ok->setAccel( QKeySequence( QString::null ) );
+}
+
--- /dev/null
+/****************************************************************************
+** Form interface generated from reading ui file 'dlg_ghs3dmain.ui'
+**
+** Created: mer fév 14 13:34:52 2007
+** by: The User Interface Compiler ($Id$)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef DLG_GHS3DMAIN_H
+#define DLG_GHS3DMAIN_H
+
+#include <qvariant.h>
+#include <qdialog.h>
+#include <qstring.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QGroupBox;
+class QSpinBox;
+class QLabel;
+class QRadioButton;
+class QPushButton;
+
+class dlg_ghs3dmain : public QDialog
+{
+ Q_OBJECT
+
+public:
+ dlg_ghs3dmain( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+ ~dlg_ghs3dmain();
+
+ QGroupBox* Parameters;
+ QSpinBox* NbPart;
+ QLabel* textNbPart;
+ QRadioButton* KeepFiles;
+ QPushButton* Ok;
+
+ bool value_KeepFiles,value_Ok;
+ int value_NbPart;
+
+protected:
+
+protected slots:
+ virtual void languageChange();
+
+ virtual void init();
+ virtual void destroy();
+ virtual void slotok();
+
+
+};
+
+#endif // DLG_GHS3DMAIN_H
--- /dev/null
+/****************************************************************************
+** ui.h extension file, included from the uic-generated form implementation.
+**
+** If you want to add, delete, or rename functions or slots, use
+** Qt Designer to update this file, preserving your code.
+**
+** You should not define a constructor or destructor in this file.
+** Instead, write your code in functions called init() and destroy().
+** These will automatically be called by the form's constructor and
+** destructor.
+*****************************************************************************/
+
+#include <iostream>
+
+using namespace std;
+
+void dlg_ghs3dmain::init()
+{
+ //cout<<"init"<<endl;
+ this->value_KeepFiles=FALSE;
+ this->value_Ok=FALSE;
+ this->value_NbPart=1;
+}
+
+
+void dlg_ghs3dmain::destroy()
+{
+ //cout<<"destroy"<<endl;
+}
+
+
+void dlg_ghs3dmain::slotok()
+{
+ this->value_KeepFiles=KeepFiles->isChecked();
+ this->value_Ok=TRUE;
+ this->value_NbPart=NbPart->value();
+ //cout<<"ok "<<value_KeepFiles<<" "<<value_NbPart<<endl;
+ this->close();
+}
--- /dev/null
+
+#include <string>
+#include <iostream>
+#include <sstream>
+#include <fstream>
+#include <qstring.h>
+#include <qfile.h>
+#include "ghs3dprl_mesh_wrap.h"
+
+using namespace std;
+using namespace med_2_2;
+
+//************************************
+CVWtab::CVWtab(long nb, med_int *pmint)
+//constructor with pmint allocated yet with new
+{
+ //cout"***constructor med_int CVWtab***\n";
+ size=nb;
+ type=1; //only tmint valide
+ tmint=pmint;
+ tmflo=NULL;
+}
+
+//************************************
+CVWtab::CVWtab(long nb, med_float *pmflo)
+//constructor with pmflo allocated yet with new
+{
+ //cout<<"***constructor med_float CVWtab***\n";
+ size=nb;
+ type=2; //only tmflo valide
+ tmint=NULL;
+ tmflo=pmflo;
+}
+
+//************************************
+CVWtab::~CVWtab()
+{
+ bool ok;
+ //cout<<" destructor CVWtab *** "<<this->filename<<endl;
+ ok=this->CVWtab_deallocate();
+ //remove temporary file
+ if (this->filename!="_NO_FILE")
+ {
+ remove(this->filename); //#include <stdio.h>
+ //cout<<this->filename<<" successfully deleted\n";
+ }
+
+}
+
+//************************************
+bool CVWtab::CVWtab_deallocate()
+{
+ //cout<<" deallocate CVWtab*** "<<size<<endl;
+ if (size <= 0) return FALSE;
+ if (tmint)
+ {
+ delete[] tmint;
+ size=-size; //precaution
+ }
+ if (tmflo)
+ {
+ delete[] tmflo;
+ size=-size; //precaution
+ }
+ return TRUE;
+}
+
+//************************************
+bool CVWtab::is_equal(CVWtab *tab2)
+{
+ //cout<<"is_equal tab1 tab2 type="<<this->type<<" size="<<this->size<<" "<<tab2->size<<endl;
+ //if (this->type==1) cout<<"med_int tab1[0]="<<this->tmint[0]<<endl;
+ //if (this->type==2) cout<<"med_float tab1[0]="<<this->tmflo[0]<<endl;
+ if (this->size!=tab2->size) return FALSE;
+ if (this->type!=tab2->type) return FALSE;
+ if (this->type==1)
+ {
+ if (!this->tmint)
+ { cout<<"***is_equal*** pb pointer NULL with tmint size="<<this->size<<endl;
+ return FALSE;
+ }
+ for (long i=0; i < this->size; i++)
+ if (this->tmint[i]!=tab2->tmint[i]) return FALSE;
+ }
+ if (this->type==2)
+ {
+ if (!this->tmflo)
+ { cout<<"***is_equal*** pb pointer NULL with tmflo size="<<this->size<<endl;
+ return FALSE;
+ }
+ for (long i=0; i < this->size; i++)
+ if (this->tmflo[i]!=tab2->tmflo[i]) return FALSE;
+ }
+ return TRUE;
+}
+
+//************************************
+bool CVW_is_equal_vertices(CVWtab *tab1, long i1,
+ CVWtab *tab2, long i2, int verbose)
+//verbose 0 for no prints
+//verbose 1 for print vertices not equals
+//verbose 2 for print also vertices equals (debug)
+{
+ //cout<<"is_equal_vertice size="<<tab1->size<<" "<<tab2->size<<endl;
+ bool ok=FALSE;
+ med_float *p1,*p2;
+ //vertices indices from 1 not 0!
+ long di1=(i1-1)*3, di2=(i2-1)*3;
+ if (di1<0 || di1>=tab1->size)
+ {
+ cerr<<"BadIndice tab1 in is_equal_vertices "<<
+ di1<<" not in "<<tab1->size<<endl;
+ return FALSE;
+ }
+ if (di2<0 || di2>=tab2->size)
+ {
+ cerr<<"BadIndice tab2 in is_equal_vertices "<<
+ di2<<" not in "<<tab2->size<<endl;
+ return FALSE;
+ }
+ p1=(tab1->tmflo+di1);
+ p2=(tab2->tmflo+di2);
+ if (p1[0]==p2[0] && p1[1]==p2[1] && p1[2]==p2[2]) ok=TRUE ;
+ if (!ok && verbose>0) printf(
+ "Vertices differents (%.16g %.16g %.16g) (%.16g %.16g %.16g)\n",
+ p1[0],p1[1],p1[2],p2[0],p2[1],p2[2]);
+ else
+ if (verbose>1) printf(
+ "Vertices equals (%.16g %.16g %.16g)\n",
+ p1[0],p1[1],p1[2]);
+ return ok;
+}
+
+//************************************
+bool CVW_FindString(const string &str,fstream &Ff, long &count)
+//find in file first line with string str in first position of line
+//converts count value expected after "='" in line found
+{
+ string line;
+ do
+ {
+ if (getline(Ff,line))
+ {
+ if (line[0]==str[0]) //faster
+ {
+ if (line.find(str)==0)
+ {
+ QString tmp=line;
+ bool ok;
+ count=tmp.section('\'',1,1).toLong(&ok);
+ return ok;
+ }
+ }
+ }
+ else
+ {
+ cerr<<"Problem line '"<<str<<"' not found in file\n"<<endl;
+ return FALSE;
+ }
+ } while (1);
+ return TRUE;
+}
+
+//************************************
+bool ghs3dprl_mesh_wrap::ReadFileGLO(const QString FileName)
+//read file .glo with no parser xml because big file (volume)
+{
+ QString tmp;
+ fstream Ff((const char *)FileName,ios_base::in);
+ string line;
+ long count;
+ bool ok;
+
+ if (!Ff.is_open())
+ {
+ cerr<<"Problem File '"<<FileName<<"' not open\n"<<endl;
+ return FALSE;
+ }
+
+ //Lit les données :
+ if (!CVW_FindString("<vertices count=",Ff,count)) return FALSE;
+ if (this->verbose>2) cout<<"VerticesCount="<<count<<endl;
+ if (count>0)
+ {
+ med_int *tmint=new med_int[count];
+ for (int i=0; i<count; i++) Ff>>tmint[i];
+ if (this->verbose>4) cout<<"Elements "<<tmint[0]<<" "<<tmint[1]<<"... "<<tmint[count-1]<<endl;
+
+ CVWtab *montab=new CVWtab(count,tmint);
+ tmp=tmp.sprintf("GL%ld VE",this->nofile);
+ ok=this->insert_key(tmp,montab);
+ }
+
+ if (!CVW_FindString("<edges count=",Ff,count)) return FALSE;
+ if (this->verbose>2) cout<<"EdgesCount="<<count<<endl;
+ if (count>0)
+ {
+ med_int *tmint=new med_int[count];
+ for (int i=0; i<count; i++) Ff>>tmint[i];
+ if (this->verbose>4) cout<<"Elements "<<tmint[0]<<" "<<tmint[1]<<"... "<<tmint[count-1]<<endl;
+
+ CVWtab *montab=new CVWtab(count,tmint);
+ tmp=tmp.sprintf("GL%ld ED",this->nofile);
+ ok=this->insert_key(tmp,montab);
+ }
+
+ if (!CVW_FindString("<faces count=",Ff,count)) return FALSE;
+ if (this->verbose>2) cout<<"FacesCount="<<count<<endl;
+ if (count>0)
+ {
+ med_int *tmint=new med_int[count];
+ for (int i=0; i<count; i++) Ff>>tmint[i];
+ if (this->verbose>4) cout<<"Elements "<<tmint[0]<<" "<<tmint[1]<<"... "<<tmint[count-1]<<endl;
+
+ CVWtab *montab=new CVWtab(count,tmint);
+ tmp=tmp.sprintf("GL%ld FA",this->nofile);
+ ok=this->insert_key(tmp,montab);
+ }
+
+ if (!CVW_FindString("<elements count=",Ff,count)) return FALSE;
+ if (this->verbose>2) cout<<"ElementsCount="<<count<<endl;
+ if (count>0)
+ {
+ med_int *tmint=new med_int[count];
+ for (int i=0; i<count; i++) Ff>>tmint[i];
+ if (this->verbose>4) cout<<"Elements "<<tmint[0]<<" "<<tmint[1]<<"... "<<tmint[count-1]<<endl;
+
+ CVWtab *montab=new CVWtab(count,tmint);
+ tmp=tmp.sprintf("GL%ld EL",this->nofile);
+ ok=this->insert_key(tmp,montab);
+ }
+ //Ferme le fichier :
+ Ff.close();
+ this->nbfiles++;
+ return TRUE;
+}
+
+//************************************
+bool ghs3dprl_mesh_wrap::ReadFileFACES(const QString FileName)
+//read file .faces (wrap)
+{
+ QString tmp;
+ fstream Ff((const char *)FileName,ios_base::in);
+ string line;
+ long nbelem,ntype;
+ bool ok;
+
+ if (!Ff.is_open())
+ {
+ cerr<<"Problem File '"<<FileName<<"' not open\n"<<endl;
+ return FALSE;
+ }
+
+ //Lit les données :
+ //Replace le pointeur de fichier au début :f.seekg(0);
+ if (getline(Ff,line))
+ {
+ tmp=line;
+ nbelem=tmp.section(' ',0,0).toLong(&ok);
+ }
+ else
+ {
+ cerr<<"Problem on first line of file"<<endl;
+ return FALSE;
+ }
+ if (this->verbose>2) cout<<"NumberOfElements="<<nbelem<<endl;
+ med_int *tmint=new med_int[nbelem*7];
+ for (int i=0; i<nbelem*7; i=i+7)
+ {
+ Ff>>ntype;
+ if (ntype!=3) //only triangles
+ {
+ cerr<<"Problem on ntype != 3"<<endl;
+ return FALSE;
+ }
+ for (int j=0; j<7; j++) Ff>>tmint[i+j];
+ //for (int j=0; j<7; j++) cout<<tmint[i+j]<<' '; cout<<endl;
+ }
+ if (this->verbose>4) cout<<"Elements "<<tmint[0]<<" "<<tmint[1]<<"... "<<tmint[nbelem*7-1]<<endl;
+
+ CVWtab *montab=new CVWtab(nbelem*7,tmint);
+ tmp=tmp.sprintf("FC%ld",this->nofile);
+ ok=this->insert_key(tmp,montab);
+
+ Ff.close();
+ this->nbfiles++;
+ return TRUE;
+}
+
+//************************************
+bool ghs3dprl_mesh_wrap::ReadFileNOBOITE(const QString FileName)
+//read file .noboite (volume)
+//for huge files it could be better use ReadFileNOBOITEB (B=binary format)
+//(parameter option of ghs3d but NOT tepal)
+{
+ QString tmp;
+ fstream Ff((const char *)FileName,ios_base::in);
+ long ne,np,npfixe,subnumber,reste;
+ bool ok;
+
+ if (!Ff.is_open())
+ {
+ cerr<<"Problem File '"<<FileName<<"' not open\n"<<endl;
+ return FALSE;
+ }
+
+ //lit les données :
+ Ff>>ne>>np>>npfixe;
+ if (this->verbose>2)
+ {
+ cout<<"NumberOfElements="<<ne<<endl;
+ cout<<"NumberOfVertices="<<np<<endl;
+ cout<<"NumberOfSpecifiedPoints="<<npfixe<<endl;
+ }
+ for (int i=1; i<=17-3; i++) Ff>>reste;
+ //printf("reste %ld\n",reste);
+ med_int *tmint=new med_int[ne*4];
+ for (int i=0; i<ne*4; i++) Ff>>tmint[i];
+ if (this->verbose>4) cout<<"Elements "<<tmint[0]<<" "<<tmint[1]<<"... "<<tmint[ne*4-1]<<endl;
+
+ CVWtab *montab=new CVWtab(ne*4,tmint);
+ tmp=tmp.sprintf("NB%ld EV",this->nofile);
+ ok=this->insert_key(tmp,montab);
+
+ med_float *tmflo=new med_float[np*3];
+ for (int i=0; i<np*3; i++) Ff>>tmflo[i];
+ if (this->verbose>4) cout<<"Vertices "<<tmflo[0]<<" "<<tmflo[1]<<"... "<<tmflo[np*3-1]<<endl;
+
+ montab=new CVWtab(np*3,tmflo);
+ tmp=tmp.sprintf("NB%ld VC",this->nofile);
+ ok=this->insert_key(tmp,montab);
+
+ Ff>>subnumber;
+ if (this->verbose>2) cout<<"NumberOfSubdomains="<<subnumber<<endl;
+ tmint=new med_int[subnumber*3];
+ for (int i=0; i<subnumber*3; i++) Ff>>tmint[i];
+ if (this->verbose>4) cout<<"Subdomains "<<tmint[0]<<" "<<tmint[1]<<"... "<<tmint[subnumber*3-1]<<endl;
+
+ montab=new CVWtab(subnumber*3,tmint);
+ tmp=tmp.sprintf("NB%ld SN",this->nofile);
+ ok=this->insert_key(tmp,montab);
+
+ //beware record 6 lenght 1
+ //ferme le fichier :
+ Ff.close();
+ this->nbfiles++;
+ return TRUE;
+}
+
+//************************************
+bool ghs3dprl_mesh_wrap::ReadFileNOBOITEB(const QString FileName)
+//read file .noboiteb (volume)
+//for huge files it could be better use ReadFileNOBOITEB (B=binary format)
+//but NOT parameter option of tepal
+//idem ReadFileNOBOITE with read unformatted
+{
+ bool ok;
+
+ cerr<<"Problem function ReadFileNOBOITEB\n"
+ <<"(no FORTRAN binary format files in tepal)\n\n";
+
+ QString tmp;
+ //file binary
+ FILE *Ff=fopen((const char *)FileName,"rb");
+ long ne,np,npfixe,reste,subnumber; /*,cube,npbli,
+ nbele,loele,nbelef,loelef,
+ nbpoi,lopoi,nbpoif,lopoif,
+ nbsub,losub,nbsubf,losubf,reste;*/
+
+ //http://www.math.utah.edu/software/c-with-fortran.html
+ //record 1 from format FORTRAN begins and ends with lengh of record
+ //=> 2*long(68) (68=17*4octets)
+ long r1[17+2];
+
+ if (!Ff)
+ {
+ cerr<<"Problem File '"<<FileName<<"' not open\n"<<endl;
+ return FALSE;
+ }
+
+ //read datas :
+ fread(&r1,sizeof(long),17+2,Ff);
+ for (long i=1; i<18; i++) cout<<"R1("<<i<<")="<<r1[i]<<endl;
+
+ if (r1[0]!=68)
+ {
+ cerr<<"First FORTRAN record of File '"<<FileName<<"' not length 17*long"<<endl;
+ return FALSE;
+ }
+ ne=r1[1];
+ np=r1[2];
+ npfixe=r1[3];
+ if (this->verbose>2)
+ {
+ cout<<"NumberOfElements="<<ne<<endl;
+ cout<<"NumberOfVertices="<<np<<endl;
+ cout<<"NumberOfSpecifiedPoints="<<npfixe<<endl;
+ }
+ ///etc...could be done if necessary not debugged
+ fread(&reste,sizeof(long),1,Ff);
+ long *tlong=new long[ne*4];
+ med_int *tmint=new med_int[ne*4];
+ fread(tlong,sizeof(long),ne*4,Ff);
+ fread(&reste,sizeof(long),1,Ff);
+ for (long i=0; i<ne*4; i++) tmint[i]=tlong[i];
+ delete tlong;
+ if (this->verbose>4) cout<<"Elements "<<tmint[0]<<" "<<tmint[1]<<"... "<<tmint[ne*4-1]<<endl;
+
+ CVWtab *montab=new CVWtab(ne*4,tmint);
+ tmp=tmp.sprintf("NB%ld EV",this->nofile);
+ ok=this->insert_key(tmp,montab);
+
+ fread(&reste,sizeof(long),1,Ff);
+ //cout<<"info "<<reste<<" "<<np*3<<" "<<sizeof(med_float)<<endl;
+ float *tfloat=new float[np*3];
+ med_float *tmflo=new med_float[np*3];
+ fread(tfloat,sizeof(float),np*3,Ff);
+ fread(&reste,sizeof(long),1,Ff);
+ for (long i=0; i<np*3; i++) tmflo[i]=tfloat[i];
+ delete tfloat;
+ if (this->verbose>4) printf("Vertices %g %g ... %g \n",tmflo[0],tmflo[1],tmflo[np*3-1]);
+
+ montab=new CVWtab(np*3,tmflo);
+ tmp=tmp.sprintf("NB%ld VC",this->nofile);
+ ok=this->insert_key(tmp,montab);
+
+ fread(&reste,sizeof(long),1,Ff);
+ fread(&subnumber,sizeof(long),1,Ff);
+ fread(&reste,sizeof(long),1,Ff);
+ if (this->verbose>2) cout<<"NumberOfSubdomains="<<subnumber<<endl;
+ fread(&reste,sizeof(long),1,Ff);
+ tlong=new long[subnumber*3];
+ fread(tlong,sizeof(long),subnumber*3,Ff);
+ fread(&reste,sizeof(long),1,Ff);
+ if (this->verbose>4) printf("Subdomains %ld %ld ... %ld \n",tlong[0],tlong[1],tlong[subnumber*3-1]);
+
+ tmint=new med_int[subnumber*3];
+ for (long i=0; i<subnumber*3; i++) tmint[i]=tlong[i];
+ delete tlong;
+ montab=new CVWtab(subnumber*3,tmint);
+ tmp=tmp.sprintf("NB%ld SN",this->nofile);
+ ok=this->insert_key(tmp,montab);
+
+ //beware record 6 lenght 1
+ //ferme le fichier :
+ fclose(Ff);
+ this->nbfiles++;
+ return TRUE;
+
+}
+
+//************************************
+bool ghs3dprl_mesh_wrap::ReadFilePOINTS(const QString FileName)
+//read file .points (wrap)
+{
+ QString tmp;
+ long nb;
+ Q_ULONG maxlen=128;
+ Q_LONG lg;
+ bool ok=TRUE;
+
+ //Lit les données :
+ QFile Ff(FileName);
+ //NOT Raw because Raw=non-buffered file access
+ ok=Ff.open(IO_ReadOnly|IO_Translate);
+ if (!ok)
+ {
+ cerr<<"Problem File '"<<FileName<<"' not open\n"<<endl;
+ return FALSE;
+ }
+
+ lg=Ff.readLine(tmp,maxlen);
+ tmp=tmp.simplifyWhiteSpace();
+ nb=tmp.toLong(&ok);
+ if (!ok)
+ {
+ cerr<<"Problem conversion File '"<<FileName<<"\n"<<endl;
+ return FALSE;
+ }
+ if (this->verbose>2) cout<<"NumberOfVertices="<<nb<<endl;
+ med_float *tmflo=new med_float[3*nb]; //coordinates
+ med_int *tmint=new med_int[nb]; //nrs (attribute of point)
+ long il3=0;
+ for ( long il=0; il<nb; il++ )
+ {
+ lg=Ff.readLine(tmp,maxlen);
+ tmp=tmp.simplifyWhiteSpace();
+ //cout<<"lu '"<<tmp<<"'"<<lg<<endl;
+ for ( int j=0; j<3; j++ )
+ {
+ tmflo[il3]=tmp.section(' ',j,j).toDouble(&ok);
+ //cout<<"cv '"<<tmflo[il3]<<"' "<<il3<<endl;
+ il3++;
+ if (!ok)
+ {
+ cerr<<"Problem conversion File '"<<FileName<<"\n"<<endl;
+ return FALSE;
+ }
+ }
+ //nrs is vertex attribute
+ tmint[il]=tmp.section(' ',3,3).toLong(&ok);
+ if (!ok)
+ {
+ cerr<<"Problem conversion File '"<<FileName<<"\n"<<endl;
+ return FALSE;
+ }
+ }
+ //beware no examples with each specified points (if any) here
+
+ {CVWtab *montab=new CVWtab(nb,tmint); //init montab->tmint nrs
+ tmp=tmp.sprintf("PO%ld NRS",this->nofile);
+ ok=this->insert_key(tmp,montab);}
+
+ {CVWtab *montab=new CVWtab(nb,tmflo); //init montab->tmflo xyz
+ tmp=tmp.sprintf("PO%ld XYZ",this->nofile);
+ ok=this->insert_key(tmp,montab);}
+
+ //Ferme le fichier :
+ Ff.close();
+ this->nbfiles++;
+ return TRUE;
+}
+
+//************************************
+bool ghs3dprl_mesh_wrap::list_keys_mesh_wrap()
+{
+ QDictIterator<CVWtab> it( this->mestab);
+ for ( ; it.current(); ++it )
+ {
+ string nom=it.currentKey();
+ nom.resize(20,' ');
+ cout<<nom<<"-> size="<<it.current()->size<<endl;
+ }
+ return TRUE;
+}
+
+//************************************
+long ghs3dprl_mesh_wrap::remove_all_keys_mesh_wrap()
+{
+ long nb=this->remove_key_mesh_wrap(QRegExp(".",TRUE,FALSE));
+ return nb;
+}
+
+//************************************
+long ghs3dprl_mesh_wrap::remove_key_mesh_wrap(const QRegExp &rxp)
+{
+ long nbremove=0;
+ bool remove;
+ QDictIterator<CVWtab> it(this->mestab);
+ for ( ; it.current(); ++it )
+ {
+ do
+ {
+ long i=it.currentKey().contains(rxp);
+ remove=FALSE;
+ if (i>0)
+ {
+ nbremove++;
+ if (this->verbose>4) cout<<"remove key "<<it.currentKey()<<endl;
+ delete it.current();
+ this->mestab.remove(it.currentKey());
+ remove=TRUE;
+ }
+ //All dictionary iterators that refer to the removed item
+ //will be set to point to the next item
+ //in the dictionary's traversal order
+ } while (remove);
+ }
+ return nbremove;
+}
+
+//************************************
+bool SwapOnFile(const QString &key,const QString &path,CVWtab *tab,int verbose)
+//
+{
+ //return TRUE;
+ if (tab->filename=="_NO_FILE")
+ {
+ tab->filename=path+key+".tmp";
+ tab->filename.replace(" ","_"); //replace " " by "_"
+
+ //swap disque binaire
+ //montab->tmint=new long[10]; //for test
+ //for (int i=0; i<10; i++) montab->tmint[i]=i*2;
+ FILE *fichier=fopen(tab->filename,"wb");
+ long taille;
+ taille=tab->size;
+ fwrite(&taille,sizeof(taille),1,fichier);
+ if (tab->tmint)
+ {
+ if (verbose>3)
+ cout<<"SwapOnFile in binary file "<<tab->filename<<
+ " number of elements "<<taille<<
+ " size_element med_int "<<sizeof(med_int)<<
+ " total_size_binary " <<taille*sizeof(med_int)<<endl;
+ fwrite(tab->tmint,sizeof(med_int),taille,fichier);
+ //fread(&gagnants,sizeof(gagnants),1,fichier);
+ }
+ if (tab->tmflo)
+ {
+ if (verbose>3)
+ cout<<"SwapOnFile in binary file "<<tab->filename<<
+ " number of elements "<<taille<<
+ " size_element med_float "<<sizeof(med_float)<<
+ " total_size_binary " <<taille*sizeof(med_float)<<endl;
+ fwrite(tab->tmflo,sizeof(med_float),taille,fichier);
+ }
+ fclose(fichier);
+ }
+ else
+ {
+ if (verbose>3) cout<<"SwapOnFile in binary file done yet "<<tab->filename<<endl;
+ }
+ //deallocate because swap disk binary mode
+ tab->CVWtab_deallocate(); //free memory
+ return TRUE;
+}
+
+//************************************
+long ghs3dprl_mesh_wrap::SwapOutOfMemory_key_mesh_wrap(const QRegExp &rxp)
+//
+{
+ long nb=0;
+ bool ok;
+ QDictIterator<CVWtab> it(this->mestab);
+ for ( ; it.current(); ++it )
+ {
+ long i=it.currentKey().contains(rxp);
+ if (i>0)
+ {
+ nb++;
+ if (it.current()->size>0)
+ ok=SwapOnFile(it.currentKey(),this->path,it.current(),this->verbose); //free memory
+ //if (this->verbose) cout<<"SwapOutOfMemory key "<<it.currentKey()<<endl;
+ }
+ }
+ return nb;
+}
+//************************************
+bool ghs3dprl_mesh_wrap::list_onekey_mesh_wrap(const QString &key)
+{
+ CVWtab *montab=this->mestab[key];
+ if (montab)
+ {
+ //cout<<"key "<<key<<"trouvee -> size="<<montab->size<<endl;
+ if (montab->type==1)
+ for ( long i=0; i<montab->size; i++ )
+ cout<<montab->tmint[i]<<" ";
+ if (montab->type==2)
+ for ( long i=0; i<montab->size; i++ )
+ cout<<montab->tmflo[i]<<" ";
+ cout<<endl;
+ }
+ else
+ cout<<"key "<<key<<" not found"<<endl;
+ return TRUE;
+}
+
+//************************************
+bool ghs3dprl_mesh_wrap::insert_key(const QString &key,CVWtab *tab)
+//insertion conditionnée par limite this->nbelem_limit_swap
+//si tableaux contenus on dimension superieure
+//alors swap disque dans getenv(tmp) fichier temporaire binaire
+{
+ bool ok;
+ if (this->verbose>4)
+ cout<<"InsertKey "<<key<<" size="<<tab->size<<endl;
+ tab->filename="_NO_FILE";
+ if (this->nbelem_limit_swap < tab->size)
+ ok=SwapOnFile(key,this->path,tab,this->verbose);
+ this->mestab.insert(key,tab);
+ return TRUE;
+}
+//************************************
+CVWtab* ghs3dprl_mesh_wrap::restore_key(const QString &key)
+//retauration conditionnée par limite nbelem
+//si tableaux contenus on dimension superieure a nbelem
+//alors swap disque dans getenv(tmp) fichier temporaire
+//alors lecture du fichier (et reallocate memory)
+{
+ CVWtab *tab=NULL;
+ tab=this->mestab[key];
+ /*if (tab) cout<<" -> size in proc "<<tab->size<<endl;
+ else cout<<" -> tab NULL\n";*/
+ if (!tab) //it is NOT a problem
+ {
+ if (this->verbose>6) cout<<"restore_key key not found "<<key<<endl;
+ return NULL;
+ }
+ if (tab->size > 0)
+ {
+ if (this->verbose>5) cout<<"restore_key direct from memory "<<key<<" size="<<tab->size<<endl;
+ return tab;
+ }
+ //restore from binary file
+ if ((tab->type<1)||(tab->type>2))
+ {
+ cerr<<"Problem restore_key from binary file "<<tab->filename<<
+ " type unexpexted "<<tab->type<<endl;
+ return NULL;
+ }
+ //cout<<"restore_key from binary file "<<tab->filename<<endl;
+
+ //swap disque binaire
+ FILE *fichier=fopen(tab->filename,"rb");
+ long taille;
+ fread(&taille,sizeof(long),1,fichier);
+ if (taille!=-tab->size)
+ {
+ cerr<<"Problem restore_key from binary file "<<tab->filename<<
+ " size unexpexted "<<taille<<" expected "<<-tab->size<<endl;
+ fclose(fichier);
+ return NULL;
+ }
+ if (tab->type==1)
+ {
+ if (this->verbose>5)
+ cout<<"restore_key from binary file "<<tab->filename<<
+ " number of elements "<<taille<<
+ " size_element med_float "<<sizeof(med_float)<<
+ " total_size_binary " <<taille*sizeof(med_float)<<endl;
+
+ //allocate because swap disque binaire
+ tab->tmint=new med_int[taille]; //allocate memory
+ fread(tab->tmint,sizeof(med_int),taille,fichier);
+ }
+ if (tab->type==2)
+ {
+ if (this->verbose>5)
+ cout<<"restore_key from binary file "<<tab->filename<<
+ " number of elements "<<taille<<
+ " size_element med_float "<<sizeof(med_float)<<
+ " total_size_binary " <<taille*sizeof(med_float)<<endl;
+ //allocate because swap disque binaire
+ tab->tmflo=new med_float[taille]; //allocate memory
+ for (int i=0; i<taille ; i++) tab->tmflo[i]=-1e0;
+ fread(tab->tmflo,sizeof(med_float),taille,fichier);
+ /*for (int i=0; i<taille ; i++) cout<<tab->tmflo[i]<<"/";
+ cout<<endl;*/
+ }
+ fclose(fichier);
+ tab->size=-tab->size;
+ return tab;
+}
+
+//************************************
+bool ghs3dprl_mesh_wrap::test_msg_wrap()
+//tests sur resultats fichiers msg
+{
+ QString key1,key2,typ="FA VE ED EL"; //pour faces vertice edges elements
+ CVWtab *tab1,*tab2;
+ bool ok=TRUE;
+ //test send=receive
+ //numerotations locales sont identiques
+ long nb=typ.contains(' ',TRUE) + 1; //nb chiffres detectes
+ for (long i=0; i < nb; i++)
+ for (long ifile=1; ifile <= this->nbfiles; ifile++)
+ for (long ineig=1; ineig <= this->nbfiles; ineig++)
+ {
+ if (ifile==ineig) continue; //impossible
+ key1=key1.sprintf("MS%ld NE%ld ",ifile,ineig)+typ.section(' ',i,i)+" SE";
+ key2=key2.sprintf("MS%ld NE%ld ",ifile,ineig)+typ.section(' ',i,i)+" RE";
+ //cout<<"key "<<key1<<" et key "<<key2<<endl;
+ tab1=this->restore_key(key1);
+ //tab1=this->mestab[key1];
+ tab2=this->restore_key(key2);
+ //tab2=this->mestab[key2];
+ //cout<<"sortie key "<<key1<<" et key "<<key2<<endl;
+ if (!tab1 && !tab2) continue; //case not neighbours
+ if (!tab1)
+ { cout<<"key "<<key1<<" inexistante avec key "<<key2<<" existante"<<endl;
+ ok=FALSE;
+ }
+ else
+ {
+ if (!tab2)
+ { cout<<"key "<<key2<<" inexistante avec key "<<key1<<" existante"<<endl;
+ ok=FALSE;
+ }
+ else
+ if (!tab1->is_equal(tab2))
+ { cout<<"key "<<key1<<" et key "<<key2<<" de contenu differents"<<endl;
+ ok=FALSE;
+ }
+ }
+ /*else
+ printf("key '%s' et key '%s' identiques \n",
+ (const char *)key2,(const char *)key1);*/
+ }
+
+ //test size neighbourg=ifile
+ //numerotations locales sont differentes mais de tailles identiques
+ //pas besoin de verifier " RE " car deja fait au dessus
+ for (long i=0; i < nb; i++)
+ for (long ifile=1; ifile <= this->nbfiles; ifile++)
+ for (long ineig=ifile+1; ineig <= this->nbfiles; ineig++)
+ {
+ if (ifile==ineig) continue; //cas impossible
+ key1=key1.sprintf("MS%ld NE%ld ",ifile,ineig)+typ.section(' ',i,i)+" SE";
+ tab1=this->restore_key(key1); //tab1=this->mestab[key1];
+ key2=key2.sprintf("MS%ld NE%ld ",ineig,ifile)+typ.section(' ',i,i)+" SE";
+ tab2=this->restore_key(key2); //tab2=this->mestab[key2];
+ if (!tab1 && !tab2) continue; //case not neighbours
+ if (!tab1)
+ { cout<<"key "<<key1<<" inexistante avec key "<<key2<<" existante"<<endl;
+ ok=FALSE;
+ }
+ else
+ {
+ if (!tab2)
+ { cout<<"key "<<key2<<" inexistante avec key "<<key1<<" existante"<<endl;
+ ok=FALSE;
+ }
+ else
+ if ((tab1->type!=tab2->type)||(tab1->size!=tab2->size))
+ { cout<<"key "<<key1<<" et key "<<key2<<" de type ou tailles differents"<<endl;
+ ok=FALSE;
+ }
+ }
+ }
+ return ok;
+}
+
+//************************************
+bool ghs3dprl_mesh_wrap::test_vertices_wrap()
+//tests sur vertices
+{
+ QString key1,key2,key11,key22,key11old,key22old;
+ CVWtab *tab1,*tab2,*tab11,*tab22;
+ bool ok=TRUE;
+ key11old="_NO_KEY";key22old="_NO_KEY";
+ //test size neighbourg=ifile
+ //numerotations locales sont differentes mais de tailles identiques
+ //pas besoin de verifier " RE " car deja fait au dessus
+ //for (int ifile=1; ifile <= this->nbfiles; ifile++)
+ //for (int ineig=ifile+1; ineig <= this->nbfiles; ineig++)
+ for (int ifile=this->nbfiles; ifile >= 1; ifile--)
+ for (int ineig=this->nbfiles; ineig >= ifile+1; ineig--)
+ {
+ if (ifile==ineig) continue; //cas impossible
+ key1=key1.sprintf("MS%d NE%d VE SE",ifile,ineig);
+ key11=key11.sprintf("NB%d VC",ifile);
+ tab1=this->restore_key(key1); //tab1=this->mestab[key1];
+ key2=key2.sprintf("MS%d NE%d VE SE",ineig,ifile);
+ key22=key22.sprintf("NB%d VC",ineig);
+ tab2=this->restore_key(key2); //tab2=this->mestab[key2];
+ if (!tab1 && !tab2) continue; //cas non voisins
+ if (!tab1)
+ {
+ cerr<<"TestEqualityCoordinates key "<<key1<<" NOT existing but key "<<key2<<" existing"<<endl;
+ ok=FALSE; continue;
+ }
+ if (!tab2)
+ {
+ cerr<<"TestEqualityCoordinates key "<<key2<<" NOT existing but key "<<key1<<" existing"<<endl;
+ ok=FALSE; continue;
+ }
+ if (tab1->size!=tab2->size)
+ {
+ cerr<<"TestEqualityCoordinates key "<<key1<<" and key "<<key2<<" NOT same size"<<endl;
+ ok=FALSE; continue;
+ }
+ if (ok)
+ {
+ //Swap out of memory if no use
+ if ((key11old!=key11)&&(key11old!=key22))
+ this->SwapOutOfMemory_key_mesh_wrap(QRegExp(key11old,TRUE,FALSE));
+ if ((key22old!=key11)&&(key22old!=key22))
+ this->SwapOutOfMemory_key_mesh_wrap(QRegExp(key22old,TRUE,FALSE));
+
+ tab11=this->restore_key(key11); //tab11=this->mestab[key11];
+ tab22=this->restore_key(key22); //tab22=this->mestab[key22];
+ long i1,i2;
+ bool ok1=TRUE;
+ //test on equality of xyz_coordinates of commons vertices
+ for (long j=0; j < tab1->size-1; j++)
+ {
+ i1=tab1->tmint[j];
+ i2=tab2->tmint[j];
+ //1 for print vertices not equals
+ if (!CVW_is_equal_vertices(tab11,i1,tab22,i2,1))
+ {
+ cerr<<j<<" Vertice "<<i1<<" != Vertice "<<i2<<"\n"<<endl;
+ ok=FALSE; ok1=FALSE;
+ }
+ }
+ if ((this->verbose>2)&&(ok1))
+ cout<<"TestEqualityCoordinates "<<tab1->size<<
+ " Vertices "<<key1<<" and "<<key2<<" ok"<<endl;
+ if (!ok1)
+ cerr<<"TestEqualityCoordinates "<<tab1->size<<
+ " Vertices "<<key1<<" and "<<key2<<" NO_OK"<<endl;
+ key11old=key11; key22old=key22;
+ }
+ }
+ //Swap out of memory (supposed no use?)
+ //NO because NB1&NB2 VC supposed future use
+ //YES precaution
+ this->SwapOutOfMemory_key_mesh_wrap(QRegExp(key11old,TRUE,FALSE));
+ this->SwapOutOfMemory_key_mesh_wrap(QRegExp(key22old,TRUE,FALSE));
+ return ok;
+}
+
+//************************************
+bool ghs3dprl_mesh_wrap::Write_MEDfiles()
+{
+ bool ok=FALSE,oklocal;
+ QString key1,tmp,filename;
+ CVWtab *tab1,*tab2;
+ med_err err;
+ char namelocal[MED_TAILLE_NOM+1]; //no more 32
+ char distfilename[MED_TAILLE_DESC+1];
+ char description[MED_TAILLE_DESC+1];
+
+ //remove path
+ //precaution because casename->med_namelocal no more 32 character
+ //if path, in this->path.
+ //20 preserve for add postfixes "_idom" etc...
+ this->casename=this->casename.section('/',-1);
+ if (this->casename.length()>20)
+ {
+ cerr<<"CaseNameMed truncated (no more 20 characters)"<<endl;
+ this->casename.truncate(20);
+ }
+ filename=this->path+this->casename;
+ ofstream file(filename); //master file
+ file<<"#MED Fichier V 2.3"<<" "<<endl;
+ file<<"# NumbersOfSubDomains"<<" "<<endl;
+ int nbdomains=this->nbfiles;
+ file<<nbdomains<<" "<<endl;
+
+ //loop on the domains
+ for (int idom=1; idom<=nbdomains; idom++)
+ {
+ oklocal=TRUE;
+ ostringstream suffix;
+ suffix<<filename<<"_"<<idom<<".med";
+ strcpy(distfilename,suffix.str().c_str());
+ //tmp=filename+tmp.sprintf("_%d.med",idom);
+ //strcpy(distfilename,tmp);
+ if (this->verbose>0)
+ {
+ if (this->verbose>2) cout<<endl;
+ cout<<"CreateMEDFile "<<idom<<" "<<distfilename<<endl;
+ }
+
+ med_idt fid=MEDouvrir(distfilename,MED_CREATION);
+ if (fid<0) cerr<<"Problem MEDouvrir "<<distfilename<<endl;
+
+ //updating the ascii master description file
+ tmp=tmp.sprintf(this->casename+"_%d",idom);
+ file<<this->casename<<" "<<idom<<" "<<
+ tmp<<" "<<"localhost "<<distfilename<<" "<<endl;
+
+ //create mesh
+ strcpy(namelocal,tmp);
+ tmp=tmp.sprintf("domain %d among %d",idom,nbdomains);
+ strcpy(description,tmp);
+ if (this->verbose>4) cout<<"File "<<distfilename<<" : "<<description<<endl;
+ //cout<<namelocal<<":"<<description<<endl
+ err=MEDmaaCr(fid,namelocal,3,MED_NON_STRUCTURE,description);
+ if (err<0) cerr<<"Problem MEDmaaCr"<<endl;
+
+ //writing node(vertices) coordinates
+ //NBx VC=files.NoBoite Vertex Coordinates
+ // 123456789012345612345678901234561234567890123456
+ char nomcoo[3*MED_TAILLE_PNOM+1]="x y z ";
+ char unicoo[3*MED_TAILLE_PNOM+1]="? ? ? ";
+ key1=key1.sprintf("NB%d VC",idom); //files.NoBoite Vertex Coordinates
+ tab1=this->restore_key(key1); //tab1=this->mestab[key1];
+ med_int nbnodes=tab1->size/3;
+
+ /*(med_idt fid, char *maa, med_int mdim, med_float *coo,
+ med_mode_switch mode_switch, med_int n,
+ med_repere type_rep, char *nom, char *unit)*/
+ err=MEDcoordEcr(fid,namelocal,3,tab1->tmflo,MED_FULL_INTERLACE,
+ nbnodes,MED_CART,nomcoo,unicoo);
+ if (err<0) cerr<<"Problem MEDcoordEcr"<<endl;
+ if (this->verbose>4)cout<<"NumberOfNodes="<<nbnodes<<endl;
+ this->SwapOutOfMemory_key_mesh_wrap(QRegExp(key1,TRUE,FALSE));
+
+ //writing indices of nodes
+ med_int *arrayi=new med_int[nbnodes];
+ for (long i=0; i<nbnodes ; i++) arrayi[i]=i+1;
+ med_2_2::med_geometrie_element medgeoele0=(med_2_2::med_geometrie_element) 0;
+ err=MEDnumEcr(fid,namelocal,arrayi,nbnodes,MED_NOEUD,medgeoele0);
+ if (err<0) cerr<<"Problem MEDnumEcr of nodes"<<endl;
+ delete[] arrayi;
+
+ //writing connectivity of faces triangles of wrap by nodes
+ key1=key1.sprintf("FC%d",idom); //files.FaCes faces (wrap and triangles only)
+ tab1=this->restore_key(key1); //tab1=this->mestab[key1];
+ med_int nbfaces=tab1->size/7;
+ if (this->verbose>4) cout<<"NumberOfTrianglesOfWrap="<<nbfaces<<endl;
+ arrayi=new med_int[nbfaces*3];
+ long ii=0,i=0 ;
+ for (long j=0; j<nbfaces ; j++)
+ {
+ arrayi[ii]=tab1->tmint[i]; ii++;
+ arrayi[ii]=tab1->tmint[i+1]; ii++;
+ arrayi[ii]=tab1->tmint[i+2]; ii++;
+ i=i+7;
+ }
+ err=MEDconnEcr(fid,namelocal,3,arrayi,MED_FULL_INTERLACE,nbfaces,MED_FACE,MED_TRIA3,MED_NOD);
+ if (err<0) cerr<<"Problem MEDconnEcr for triangles connectivity"<<endl;
+ delete[] arrayi;
+
+ //writing indices of faces triangles of wrap
+ //caution!
+ //generate "overlapping of numbers of elements" in "import med file" in salome
+ //if not in "//writing indices of tetraedes" -> arrayi[i]=!NBFACES!+i+1
+ arrayi=new med_int[nbfaces];
+ for (long i=0; i<nbfaces ; i++) arrayi[i]=i+1;
+ err=MEDnumEcr(fid,namelocal,arrayi,nbfaces,MED_FACE,MED_TRIA3);
+ if (err<0) cerr<<"Problem MEDnumEcr of triangles"<<endl;
+ delete[] arrayi;
+
+ //create global family wrap default
+ char nomfam[MED_TAILLE_NOM+1]="PART_OF_GLOBAL_WRAP";
+ char attdes[MED_TAILLE_DESC+1]="part of wrap of global volume";
+ char gro[MED_TAILLE_LNOM+1]="PART_OF_GLOBAL_WRAP";
+ med_int numfam,attide,attval,natt,ngro,numfam_ini_wrap=200;
+ //caution numfam_ini_wrap!=numfam_ini_nodes
+ numfam=-numfam_ini_wrap; attide=1; attval=numfam; natt=1; ngro=1;
+ err=MEDfamCr(fid,namelocal,nomfam,numfam,&attide,&attval,attdes,natt,gro,ngro);
+ if (err<0) cerr<<"Problem MEDfamCr of "<<nomfam<<endl;
+
+ //for joints
+ //init default indices of families of faces triangles of wrap = -numfam_ini_wrap
+ //(for faces not in joints=PART_OF_GLOBAL_WRAP, why not!)
+ //others -> -numfam_ini_wrap-indice_of_neighbourg ([1;number_of_neighbourg])
+ //(for existing joints)
+ int sizefamilies=nbfaces;
+ med_int *familiesi=new med_int[sizefamilies];
+ for (int i=0; i<sizefamilies ; i++) familiesi[i]=-numfam_ini_wrap;
+
+ //families known in faces in wrap PART_OF_GLOBAL_WRAP
+ //writing indices of families of faces triangles of wrap = nsd why not?
+ //not implemented yet because subdomain(s) of family PART_OF_GLOBAL_WRAP
+ /*arrayi=new med_int[nbfaces];
+ for (int i=0; i<nbfaces ; i++) arrayi[i]=tab1->tmint[(i*7)+3];
+ err=MEDfamEcr(fid,namelocal,arrayi,nbfaces,MED_FACE,MED_TRIA3);
+ if (err<0) cerr<<"Problem MEDfamEcr faces of wrap"<<endl;
+ delete[] arrayi;*/
+
+ //writing connectivity of tetraedes by nodes
+ key1=key1.sprintf("NB%d EV",idom); //files.NoBoite Elements Vertices (tetra only)
+ tab1=this->restore_key(key1); //tab1=this->mestab[key1];
+ med_int nbtetras=tab1->size/4;
+ if (this->verbose>4) cout<<"NumberOfTetraedes="<<nbtetras<<endl;
+ //arrayi=new med_int[tab1->size];
+ //for (long i=0; i<tab1->size ; i++) arrayi[i]=tab1->tmint[i];
+ err=MEDconnEcr(fid,namelocal,3,tab1->tmint,MED_FULL_INTERLACE,nbtetras,MED_MAILLE,MED_TETRA4,MED_NOD);
+ if (err<0) cerr<<"Problem MEDconnEcr for tetra connectivity"<<endl;
+ //delete[] arrayi;
+ this->SwapOutOfMemory_key_mesh_wrap(QRegExp(key1,TRUE,FALSE));
+
+ //writing indices of tetraedes
+ arrayi=new med_int[nbtetras];
+ for (long i=0; i<nbtetras ; i++) arrayi[i]=nbfaces+i+1;
+ err=MEDnumEcr(fid,namelocal,arrayi,nbtetras,MED_MAILLE,MED_TETRA4);
+ if (err<0) cerr<<"Problem MEDnumEcr of tetraedes"<<endl;
+ delete[] arrayi;
+
+ //writing indices of families of nodes = nrs why not?
+ //before create families of nodes fonction of existing values of nrs of files .points
+ arrayi=new med_int[nbnodes];
+ key1=key1.sprintf("PO%d NRS",idom); //files.POints Vertex of wrap
+ tab1=this->restore_key(key1); //tab1=this->mestab[key1];
+ med_int nbwrap=tab1->size;
+ //families known in points in wrap
+ //more than 30 families is stupid? (too many)?
+ int itest,i2,ifam[30],imax=1,imess=0,numfam_ini_nodes=numfam_ini_wrap-100;
+ //caution numfam_ini_wrap!=numfam_ini_nodes
+ //ifam[:]<-existing values of nrs (in [0,97])
+ //ifam[0]<-first family default=99 for new nodes IN volume (out of wrap)
+ ifam[0]=99;
+ for (int i=0; i<nbwrap ; i++)
+ {
+ itest=tab1->tmint[i];
+ if ((itest<0)||(itest>97))
+ {
+ if (imess==0)
+ {
+ cerr<<"Problem for domain "<<idom<<" nrs="<<itest<<
+ " shoud be in [0;97] forced 98"<<endl;
+ imess=1; //message only once
+ }
+ itest=98; //0<=nrs<=97 precaution 98=family garbage
+ }
+ arrayi[i]=-numfam_ini_nodes-itest;
+ i2=0;
+ while (1)
+ {
+ if (i2==imax)
+ {
+ ifam[imax]=itest ; imax++ ; break;
+ }
+ if (itest==ifam[i2]) break;
+ i2++;
+ if (i2>=30) break;
+ }
+ if (imax>=30) {
+ cerr<<"Problem more than 30 families of nodes"<<endl;
+ break;
+ }
+ }
+ for (int i=0 ; i<imax ; i++)
+ {
+ //create families of nodes as nrs
+ if (i==0)
+ tmp=tmp.sprintf("IN_VOLUME");
+ else
+ tmp=tmp.sprintf("NRS_%d",ifam[i]);
+ strcpy(nomfam,tmp);
+ if (this->verbose>2) cout<<"CreateFamilyOfNodes_"<<nomfam<<endl;
+ strcpy(gro,tmp);
+ if(i==0)
+ tmp=tmp.sprintf("nodes in local volume");
+ else
+ tmp=tmp.sprintf("nodes of nrs_%d on local wrap",ifam[i]);
+ strcpy(attdes,tmp);
+ numfam=-numfam_ini_nodes-ifam[i];
+ //attide=1;
+ attval=numfam;
+ //natt=1;
+ ngro=1;
+ if (this->verbose>4) cout<<"MEDfamCr (nodes) of "<<nomfam<<" / "<<attdes<<" / FamilyNumber="<<numfam<<endl;
+ err=MEDfamCr(fid,namelocal,nomfam,numfam,&attide,&attval,attdes,natt,gro,ngro);
+ if (err<0) cerr<<"Problem MEDfamCr of "<<nomfam<<endl;
+ }
+ //defaults ifam[0] for new points in new volume
+ for (int i=nbwrap; i<nbnodes ; i++) arrayi[i]=-numfam_ini_nodes-ifam[0];
+
+ err=MEDfamEcr(fid,namelocal,arrayi,nbnodes,MED_NOEUD,medgeoele0);
+ if (err<0) cerr<<"Problem MEDfamEcr nodes"<<endl;
+ delete[] arrayi;
+
+/*Le nom du maillage local est une chaîne de MED_TAILLE_NOM (32) caractères.
+ Le tableau des numéros "num" est un tableau à 1 dimension de taille égale à "n".
+ Les numéros globaux sont obligatoirement supérieur à 1
+ Le type de l'entite "typent" est soit MED_NOEUD,MED_MAILLE, MED_FACE ou MED_ARETE.
+ Le type géométrique peut être :
+ Pour les noeuds : 0.
+ Pour les mailles : MED_POINT1, MED_SEG2, MED_SEG3, MED_TRIA3, MED_TRIA6, MED_QUAD4, MED_QUAD8, MED_POLYGONE.
+ Pour les faces : MED_TRIA3, MED_TRIA6, MED_QUAD4, MED_QUAD8, MED_POLYGONE.
+ Pour les arêtes : MED_SEG2 et MED_SEG3.*/
+
+ //writing nodes(vertices) global numbering
+ //GLx VE=files.GLo VErtices
+ key1=key1.sprintf("GL%d VE",idom);
+ tab1=this->restore_key(key1); //tab1=this->mestab[key1];
+ nbnodes=tab1->size;
+ if (this->verbose>2)
+ cout<<"CreateMEDglobalNumerotation_Nodes "<<key1<<" "<<tab1->size<<endl;
+ if (nbnodes<=0) cerr<<"Problem MEDglobalNumEcr not in memory"<<endl;
+ //arrayi=new med_int[nbnodes];
+ //for (int i=0; i<tab1->size ; i++) arrayi[i]=tab1->tmint[i];
+ //med_2_2::med_geometrie_element toto=MED_POINT1;
+ //cout<<"MED_POINT1="<<toto<<" medgeoele0="<<medgeoele0<<endl;
+ /*MEDglobalNumEcr(med_idt fid, char *maa, med_int *num, med_int n,
+ med_entite_maillage type_ent, med_geometrie_element type_geo)*/
+ err=MEDglobalNumEcr(fid,namelocal,tab1->tmint,nbnodes,MED_NOEUD,medgeoele0);
+ if (err<0) cerr<<"Problem MEDglobalNumEcr nodes"<<endl;
+ //cout<<"MEDglobalNumEcr vertices size="<<nbnodes<<endl;
+ //delete[] arrayi;
+ this->SwapOutOfMemory_key_mesh_wrap(QRegExp(key1,TRUE,FALSE));
+
+ //writing faces(triangles) global numbering
+ //GLx FA=files.GLo FAces
+ key1=key1.sprintf("GL%d FA",idom);
+ tab1=this->restore_key(key1); //tab1=this->mestab[key1];
+ nbfaces=tab1->size;
+ //arrayi=new med_int[nbfaces];
+ //for (int i=0; i<tab1->size ; i++) arrayi[i]=tab1->tmint[i];
+ if (this->verbose>2)
+ cout<<"CreateMEDglobalNumerotation_Faces "<<key1<<" "<<tab1->size<<endl;
+ err=MEDglobalNumEcr(fid,namelocal,tab1->tmint,nbfaces,MED_FACE,MED_TRIA3);
+ if (err<0) cerr<<"Problem MEDglobalNumEcr faces"<<endl;
+ //cout<<"MEDglobalNumEcr faces size="<<nbfaces<<endl;
+ //delete[] arrayi;
+ this->SwapOutOfMemory_key_mesh_wrap(QRegExp(key1,TRUE,FALSE));
+
+ //writing tetraedes global numbering
+ //GLx EL=files.GLo ELements
+ key1=key1.sprintf("GL%d EL",idom);
+ tab1=this->restore_key(key1); //tab1=this->mestab[key1];
+ med_int nbtetrasglo=tab1->size;
+ if (nbtetrasglo!=nbtetras)
+ cerr<<"Problem incorrect size of tetraedes global numbering"<<endl;
+ //arrayi=new med_int[nbtetrasglo];
+ //for (int i=0; i<tab1->size ; i++) arrayi[i]=tab1->tmint[i];
+ if (this->verbose>2)
+ cout<<"CreateMEDglobalNumerotation_Tetraedes "<<key1<<" "<<tab1->size<<endl;
+ err=MEDglobalNumEcr(fid,namelocal,tab1->tmint,nbtetrasglo,MED_MAILLE,MED_TETRA4);
+ if (err<0) cerr<<"Problem MEDglobalNumEcr tetraedes"<<endl;
+ //cout<<"MEDglobalNumEcr tetraedes size="<<nbtetrasglo<<endl;
+ //delete[] arrayi;
+ this->SwapOutOfMemory_key_mesh_wrap(QRegExp(key1,TRUE,FALSE));
+
+ //writing joints
+ for (int ineig=1; ineig <= this->nbfiles; ineig++)
+ {
+ char namejnt[MED_TAILLE_NOM+1]; //no more 32
+ char namedist[MED_TAILLE_NOM+1];
+ char descjnt[MED_TAILLE_DESC+1];
+
+ if (idom==ineig) continue; //impossible
+ key1=key1.sprintf("MS%d NE%d VE SE",idom,ineig); //SE or RE?
+ tab1=this->restore_key(key1);
+ if (!tab1) continue; //case (ifile,ineig) are not neighbours=>no joints
+ key1=key1.sprintf("MS%d NE%d VE RE",idom,ineig); //SE or RE
+ tab2=tab1; //tab2=this->restore_key(key1); //no need because <send> equals <receive>
+ if (!tab2) cerr<<"Problem nodes joint <send> with no <receive> in file .msg"<<endl;
+ nbnodes=tab1->size;
+
+ if (this->verbose>4)
+ cout<<"NumberOfNodesOfJoint_"<<ineig<<"="<<nbnodes<<endl;
+ strcpy(namejnt,tmp.sprintf("joint_%d",ineig));
+ tmp=tmp.sprintf("joint_%d among %d domains of ",ineig,nbdomains)+namelocal;
+ strcpy(descjnt,tmp);
+ //cout<<descjnt<<endl;
+ strcpy(namedist,tmp.sprintf("joint_%d",idom)); //or this->casename+"_%d",ineig));
+ err=MEDjointCr(fid,namelocal,namejnt,descjnt,ineig,namedist);
+ if (err<0) cerr<<"Problem MEDjointCr"<<endl;
+
+ //writing correspondence nodes-nodes
+ //two indices for one correspondence
+ arrayi=new med_int[nbnodes*2];
+ ii=0;
+ for (int i=0; i<nbnodes ; i++)
+ {
+ //no need because <send> equals <receive> tab1->tmint[i]==tab2->tmint[i]
+ arrayi[ii]=tab1->tmint[i]; ii++;
+ arrayi[ii]=tab2->tmint[i]; ii++;
+ }
+ err=MEDjointEcr(fid,namelocal,namejnt,arrayi,nbnodes,
+ MED_NOEUD,medgeoele0,MED_NOEUD,medgeoele0);
+ if (err<0) cerr<<"Problem MEDjointEcr nodes"<<endl;
+ delete[] arrayi;
+
+ //writing correspondence triangles-triangles
+ key1=key1.sprintf("MS%d NE%d FA SE",idom,ineig); //SE or RE?
+ tab1=this->restore_key(key1); //tab1=this->mestab[key1];
+ if (!tab1)
+ {
+ if (this->verbose>4)
+ cout<<"NumberOfTrianglesOfJoint_"<<ineig<<"="<<0<<endl;
+ continue; //case (ifile,ineig) are not neighbours=>no joints
+ }
+ key1=key1.sprintf("MS%d NE%d FA RE",idom,ineig); //SE or RE?
+ tab2=tab1; //tab2=this->restore_key(key1); //no need because <send> equals <receive>
+ if (!tab2) cerr<<"Problem triangles joint send with no receive"<<endl;
+ med_int nbtriangles=tab1->size;
+
+ if (this->verbose>4)
+ cout<<"NumberOfTrianglesOfJoint_"<<ineig<<"="<<nbtriangles<<endl;
+ arrayi=new med_int[nbtriangles*2];
+ ii=0;
+ for (int i=0; i<nbtriangles ; i++)
+ {
+ //no need because <send> equals <receive> tab1->tmint[i]==tab2->tmint[i]
+ arrayi[ii]=tab1->tmint[i]; ii++;
+ familiesi[tab1->tmint[i]-1]=-numfam_ini_wrap-ineig;
+ arrayi[ii]=tab2->tmint[i]; ii++;
+ //cout<<arrayi[ii-1]<<"="<<arrayi[ii-2]<<endl;
+ }
+ err=MEDjointEcr(fid,namelocal,namejnt,arrayi,nbtriangles,MED_FACE,MED_TRIA3,MED_FACE,MED_TRIA3);
+ if (err<0) cerr<<"Problem MEDjointEcr triangles"<<endl;
+ delete[] arrayi;
+
+ tmp=tmp.sprintf("JOINT_%d",ineig);
+ strcpy(nomfam,tmp);
+
+ //err=MEDnumEcr(fid,nomfam,arrayi,nbtriangles,MED_FACE,MED_TRIA3);
+ //if (err<0) cerr<<"Problem MEDnumEcr of triangles of "<<nomfam<<endl;
+
+ //char gro[MED_TAILLE_LNOM+1]="PART_OF_GLOBAL_WRAP_PLUS_JOINTS";
+ strcpy(gro,tmp);
+ /*char gro[MED_TAILLE_LNOM*2+1];
+ strcpy(gro,"PART_OF_GLOBAL_WRAP_PLUS_JOINTS ");
+ for (int i=32;i<MED_TAILLE_LNOM;i++) gro[i]=' ';
+ gro[MED_TAILLE_LNOM]='\0';
+ strcat(gro,tmp);
+ //for (i=7;i<MED_TAILLE_LNOM;i++) gro[MED_TAILLE_LNOM+i]=' ';
+ //gro[2*MED_TAILLE_LNOM]='\0';*/
+
+ tmp=tmp.sprintf("joint of neighbourg_%d on local wrap",ineig);
+ strcpy(attdes,tmp);
+ numfam=-numfam_ini_wrap-ineig;
+ //attide=1;
+ attval=numfam;
+ //natt=1;
+ ngro=1;
+ if (this->verbose>2)
+ cout<<"CreateFamilyOfFaces_"<<nomfam<<endl;
+ if (this->verbose>4) cout<<"MEDfamCr (faces) of "<<nomfam<<" / "<<attdes<<" / FamilyNumber="<<numfam<<endl;
+
+ err=MEDfamCr(fid,namelocal,nomfam,numfam,&attide,&attval,attdes,natt,gro,ngro);
+ if (err<0) cerr<<"Problem MEDfamCr of "<<nomfam<<endl;
+
+ }
+ //writing indices of families of faces triangles of wrap = joint<-100 or not=100?
+ //arrayi=new med_int[nbtriangles];
+ //families known in faces in wrap
+ //for (int i=0; i<nbtriangles ; i++) arrayi[i]=-100-ineig; //tab1->tlong[(i*7)+3];
+ err=MEDfamEcr(fid,namelocal,familiesi,sizefamilies,MED_FACE,MED_TRIA3);
+ if (err<0) cerr<<"Problem MEDfamEcr faces of all joints"<<endl;
+ delete[] familiesi;
+
+ MEDfermer(fid);
+
+ //examples of test of med files ( ... for me!)
+ //../Salome_321/med_231_install/bin/medconforme exemple11.med
+ //../Salome_321/hdf5-1.6.3/bin/h5dump exemple11.med
+ //../Salome_321/med_231_install/bin/mdump exemple11.med
+ }
+ return ok;
+}
+
--- /dev/null
+
+#ifndef GHS3DPRL_MESH_WRAP_H
+#define GHS3DPRL_MESH_WRAP_H
+
+#include <qdict.h>
+#include <qregexp.h>
+
+//Med File V 2.2 attributes
+#undef MED_H
+#undef MED_PROTO_H
+namespace med_2_2 {
+ extern "C" {
+#include <med.h>
+#include <med_proto.h>
+ }
+}
+
+using namespace med_2_2;
+
+class CVWtab
+//contains size=size of vector and the vector (med_int or med_float)
+{
+public:
+ long size,type;
+ med_int *tmint; //integer med
+ med_float *tmflo; //float med
+ QString filename;
+
+ CVWtab(long nb, med_int *pmint);
+ CVWtab(long nb, med_float *pmflo);
+ ~CVWtab();
+ bool CVWtab_deallocate();
+ bool is_equal(CVWtab *tab2);
+};
+
+class ghs3dprl_mesh_wrap
+{
+public:
+ QString casename,path;
+ long
+ nofile,nbfiles,
+ nbelem_limit_swap,
+ verbose;
+ QDict<CVWtab> mestab;
+
+ //low level
+ bool list_keys_mesh_wrap(); //list keys
+ bool list_onekey_mesh_wrap(const QString &key);
+ long remove_key_mesh_wrap(const QRegExp &rxp);
+ long remove_all_keys_mesh_wrap();
+ bool insert_key(const QString &key,CVWtab *tab);
+ CVWtab* restore_key(const QString &key);
+
+ //test level
+ bool test_msg_wrap();
+ bool test_vertices_wrap();
+
+ //hight level
+ long SwapOutOfMemory_key_mesh_wrap(const QRegExp &rxp);
+ bool ReadFileGLO(const QString FileName);
+ bool ReadFileFACES(const QString FileName);
+ bool ReadFileNOBOITE(const QString FileName);
+ bool ReadFileNOBOITEB(const QString FileName);
+ bool ReadFilePOINTS(const QString FileName);
+ bool Write_MEDfiles();
+};
+
+#endif
--- /dev/null
+
+//#include <stdio.h>
+//#include <qstring.h>
+#include <iostream>
+
+#include "ghs3dprl_msg_parser.h"
+#include "ghs3dprl_mesh_wrap.h"
+
+using namespace std;
+using namespace med_2_2;
+
+//************************************
+bool ghs3dprl_msg_parser::startDocument()
+{
+ indent="";
+ begin="distene_msg",
+ version="version",
+ neighbours="neighbours";
+ count="count";
+ neighbour="neighbour";
+ indice="indice";
+ send="send";
+ vertices="vertices";
+ edges="edges";
+ faces="faces";
+ elements="elements";
+ receive="receive";
+ etat=0;
+ neighbourscount=0;
+ neighbourcourant=0;
+ neighbourindice=0;
+ nbcount=0;
+ verbose=FALSE; //TRUE; //FALSE;
+ return TRUE;
+}
+
+//************************************
+bool ghs3dprl_msg_parser::startElement(const QString &namespaceURI,
+ const QString &localName,
+ const QString &qName,
+ const QXmlAttributes &attrs)
+{
+ bool ok;
+ if (verbose) cout<<indent<<qName<<endl;
+ typel=qName; shorttypel="";
+ indent += " ";
+ if (qName==version)
+ {
+ etat=1;
+ return TRUE;
+ }
+
+ if (qName==neighbours)
+ {
+ etat=2;
+ if (attrs.count()>0 && attrs.localName(0)==count)
+ {
+ neighbourscount=attrs.value(0).toLong(&ok, 10);
+ neighbourcourant=-1;
+ if (verbose) cout<<indent<<attrs.localName(0)<<
+ "="<<neighbourscount<<endl;
+ }
+ return TRUE;
+ }
+
+ if (qName==neighbour)
+ {
+ etat=3;
+ if (attrs.count()>0 && attrs.localName(0)==indice)
+ {
+ neighbourindice=attrs.value(0).toLong(&ok, 10);
+ neighbourcourant++;
+ //mailw.neighbourindices[mailw.neighbourcourant]=neighbourindice;
+ if (verbose) cout<<indent<<attrs.localName(0)<<
+ "="<<neighbourindice<<endl;
+ }
+ return TRUE;
+ }
+
+ if (qName==send)
+ {
+ etat=4;
+ sendreceive="s/r=send ";
+ shortsendreceive="SE ";
+ return TRUE;
+ }
+
+ if (qName==receive)
+ {
+ etat=9;
+ sendreceive="s/r=receive ";
+ shortsendreceive="RE ";
+ return TRUE;
+ }
+
+ if (qName==vertices)
+ {
+ etat=5;
+ shorttypel="VE ";
+ if (attrs.count()>0 && attrs.localName(0)==count)
+ {
+ nbcount=attrs.value(0).toLong(&ok, 10);
+ if (verbose) cout<<indent<<attrs.localName(0)<<
+ "="<<nbcount<<endl;
+ }
+ return TRUE;
+ }
+
+ if (qName==edges)
+ {
+ etat=6;
+ shorttypel="ED ";
+ if (attrs.count()>0 && attrs.localName(0)==count)
+ {
+ nbcount=attrs.value(0).toLong(&ok, 10);
+ if (verbose) cout<<indent<<attrs.localName(0)<<
+ "="<<nbcount<<endl;
+ }
+ return TRUE;
+ }
+
+ if (qName==faces)
+ {
+ etat=7;
+ shorttypel="FA ";
+ if (attrs.count()>0 && attrs.localName(0)==count)
+ {
+ nbcount=attrs.value(0).toLong(&ok, 10);
+ if (verbose) cout<<indent<<attrs.localName(0)<<
+ "="<<nbcount<<endl;
+ }
+ return TRUE;
+ }
+
+ if (qName==elements)
+ {
+ etat=8;
+ shorttypel="EL ";
+ if (attrs.count()>0 && attrs.localName(0)==count)
+ {
+ nbcount=attrs.value(0).toLong(&ok, 10);
+ if (verbose) cout<<indent<<attrs.localName(0)<<
+ "="<<nbcount<<endl;
+ }
+ return TRUE;
+ }
+
+ /*for( int i=0; i<attrs.count(); i++ )
+ {
+ cout<<indent<<attrs.localName(i)<<"="<<attrs.value(i)<<endl;
+ }*/
+
+ return TRUE;
+}
+
+//************************************
+bool ghs3dprl_msg_parser::endElement(const QString &namespaceURI,
+ const QString &localName,
+ const QString &qName)
+{
+ indent.remove((uint)0,3);
+ if (verbose) cout<<indent<<"\\"<<qName<<endl;
+ nbcount=0; //precaution
+ if (qName==send || qName==receive)
+ {
+ sendreceive="";
+ shortsendreceive="";
+ return TRUE;
+ }
+ if (qName==begin)
+ {
+ mailw->nbfiles++;
+ return TRUE;
+ }
+ return TRUE;
+}
+
+//************************************
+bool ghs3dprl_msg_parser::characters(const QString &strini)
+{
+ bool ok;
+ med_int *tmint=NULL;
+ long nb=0;
+ //filtre rc,lf,tab et blancs successifs
+ QString str=strini.simplifyWhiteSpace();
+ //if ( str.length() == 1 && str=="\n" )
+ if (str.length()==0)
+ {
+ //cout<<"EMPTY_LINE_CR"<<endl;
+ return TRUE;
+ }
+ else
+ {
+ if (etat==1)
+ {
+ double ver=str.toDouble(&ok);
+ if (!ok || ver!=1e0)
+ {
+ cout<<"version "<<str<<" fichier .msg inconnue"<<endl;
+ return FALSE;
+ }
+ else return TRUE;
+ }
+ nb=str.contains(' ',TRUE) + 1; //nb chiffres detectes
+ if (nb>1)
+ {
+ //lecture vecteurs d'entiers separateur blanc
+ long i=0;
+ tmint=new med_int[nb];
+ //printf("%staille attendue=%i taille vue=%i\n",(const char *)indent,nbcount,nb);
+ do
+ {
+ tmint[i]=str.section(' ',i,i).toLong(&ok);
+ //printf("tmint[%i]=%i\n",i,tmint[i]);
+ i++;
+ } while ((i<nb) && ok );
+ if (i<nb)
+ {
+ cout<<"pb conversion "<<i<<" eme entier="<<str.section(' ',i-1,i-1)<<endl;
+ cout<<indent<<"etat="<<etat<<" nb="<<nb<<endl<<str<<endl;
+ }
+ }
+ if (nb==1)
+ {
+ tmint=new med_int[nb];
+ tmint[0]=str.toLong(&ok);
+ if (!ok)
+ {
+ cout<<"pb conversion 1er entier="<<str<<endl;
+ cout<<indent<<"etat="<<etat<<" nb="<<nb<<endl;
+ }
+ }
+
+ }
+ //lecture ok stockage de tlong dans mailw.mestab
+ CVWtab *montab=new CVWtab(nb,tmint);
+ QString tmp;
+ /*cout<<"InsertKey type="<<typel<<" "<<sendreceive<<
+ " neighbour="<<neighbourindice<<
+ " file="<<mailw->nofile<<endl;*/
+ tmp=tmp.sprintf("MS%ld NE%ld ",
+ mailw->nofile,neighbourindice)+
+ shorttypel+shortsendreceive;
+ tmp=tmp.simplifyWhiteSpace();
+ ok=mailw->insert_key(tmp,montab);
+ return TRUE;
+}
+
--- /dev/null
+
+#ifndef GHS3DPRL_MSG_PARSER_H
+#define GHS3DPRL_MSG_PARSER_H
+
+#include "ghs3dprl_mesh_wrap.h"
+#include <qxml.h>
+
+/*//Med File V 2.2 attributes
+#undef MED_H
+#undef MED_PROTO_H
+namespace med_2_2 {
+ extern "C" {
+#include <med.h>
+#include <med_proto.h>
+ }
+}
+*/
+
+class ghs3dprl_msg_parser : public QXmlDefaultHandler
+{
+public:
+ bool startDocument();
+ bool startElement(const QString&,
+ const QString&,
+ const QString& ,
+ const QXmlAttributes&);
+ bool endElement(const QString&,
+ const QString&,
+ const QString&);
+ bool characters(const QString&);
+
+ ghs3dprl_mesh_wrap *mailw; //results maillages wrap
+ bool verbose;
+
+private:
+ QString indent,
+ typel,shorttypel,
+ sendreceive,shortsendreceive,
+ begin,
+ version,
+ neighbours,
+ count,
+ neighbour,
+ indice,
+ send,
+ vertices,
+ edges,
+ faces,
+ elements,
+ receive;
+
+ long etat,
+ neighbourscount,neighbourcourant,neighbourindice,
+ nbcount; //nb faces vertices edges elements expected
+};
+
+#endif
--- /dev/null
+/****************************************************************************
+** dlg_ghs3dmain meta object code from reading C++ file 'dlg_ghs3dmain.h'
+**
+** Created: Wed Feb 14 13:34:56 2007
+** by: The Qt MOC ($Id$)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "dlg_ghs3dmain.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.3. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *dlg_ghs3dmain::className() const
+{
+ return "dlg_ghs3dmain";
+}
+
+QMetaObject *dlg_ghs3dmain::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_dlg_ghs3dmain( "dlg_ghs3dmain", &dlg_ghs3dmain::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString dlg_ghs3dmain::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "dlg_ghs3dmain", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString dlg_ghs3dmain::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "dlg_ghs3dmain", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* dlg_ghs3dmain::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = QDialog::staticMetaObject();
+ static const QUMethod slot_0 = {"languageChange", 0, 0 };
+ static const QUMethod slot_1 = {"init", 0, 0 };
+ static const QUMethod slot_2 = {"destroy", 0, 0 };
+ static const QUMethod slot_3 = {"slotok", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "languageChange()", &slot_0, QMetaData::Protected },
+ { "init()", &slot_1, QMetaData::Protected },
+ { "destroy()", &slot_2, QMetaData::Protected },
+ { "slotok()", &slot_3, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "dlg_ghs3dmain", parentObject,
+ slot_tbl, 4,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_dlg_ghs3dmain.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* dlg_ghs3dmain::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "dlg_ghs3dmain" ) )
+ return this;
+ return QDialog::qt_cast( clname );
+}
+
+bool dlg_ghs3dmain::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: languageChange(); break;
+ case 1: init(); break;
+ case 2: destroy(); break;
+ case 3: slotok(); break;
+ default:
+ return QDialog::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool dlg_ghs3dmain::qt_emit( int _id, QUObject* _o )
+{
+ return QDialog::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool dlg_ghs3dmain::qt_property( int id, int f, QVariant* v)
+{
+ return QDialog::qt_property( id, f, v);
+}
+
+bool dlg_ghs3dmain::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
--- /dev/null
+/*
+** prog principal de test de ghs3dprl
+*/
+
+#include <stdio.h> /* printf clrscr fopen fread fwrite fclose */
+#include <string>
+#include <cstring>
+#include <iostream>
+#include <fstream>
+#include "ghs3dprl_msg_parser.h"
+
+#include <qtextstream.h>
+#include <qstring.h>
+#include <qxml.h>
+#include <qwindowdefs.h>
+
+
+#include <qapplication.h>
+#include "dlg_ghs3dmain.h"
+
+using namespace std;
+using namespace med_2_2;
+
+//************************************
+int main(int argc, char **argv)
+{
+ bool ok,is_test,is_menu,is_launchtepal;
+ int nbfiles,nbelem_limit_swap,verbose;
+ QString casename,casenamemed,tmp,cmd,format;
+ QString version="V0.1 beta";
+
+
+ if ((argc > 11)||(argc < 2))
+ {
+ cerr<<"tepal2med "<<version<<endl;
+ cerr<<"Usage: "<<argv[0]<<" CaseNameTepal NumberOfFiles [LimitSwap] [Verbose[0->6]] [Test|noTest] [Menu|noMenu] [LaunchTepal|noLaunchTepal] CaseNameMed\n";
+ return 1;
+ }
+ casename=argv[1];
+ tmp=argv[2];
+ nbfiles=tmp.toLong(&ok,10);
+ if (!ok)
+ {
+ cerr<<"NumberOfFiles: an integer is expected\n\n";
+ return 1;
+ }
+ if (nbfiles<=0)
+ {
+ cerr<<"NumberOfFiles: a positive integer is expected\n\n";
+ return 1;
+ }
+ if (nbfiles>512) //delirium in 2007
+ {
+ cerr<<"NumberOfFiles: a positive integer <= 512 is expected\n\n";
+ return 1;
+ }
+
+ //default 1GOctet/8(for double)/10(for arrays in memory at the same time)
+ nbelem_limit_swap=1000000000/8/10;
+ if (argc > 3)
+ {
+ tmp=argv[3];
+ nbelem_limit_swap=tmp.toLong(&ok,10);
+ if (!ok)
+ {
+ cerr<<"LimitSwap: an integer is expected\n\n";
+ return 1;
+ }
+ if (nbelem_limit_swap<=0)
+ {
+ cerr<<"LimitSwap: a positive integer is expected\n\n";
+ return 1;
+ }
+ }
+
+ verbose=1; //default
+ if (argc > 4)
+ {
+ tmp=argv[4];
+ verbose=tmp.toLong(&ok,10);
+ if (!ok)
+ {
+ cerr<<"Verbose: an integer is expected\n\n";
+ return 1;
+ }
+ if (verbose<0)
+ {
+ cerr<<"Verbose: a positive integer is expected\n\n";
+ return 1;
+ }
+ }
+
+ is_test=FALSE; //default
+ if (argc > 5)
+ {
+ tmp=argv[5];
+ if (tmp=="Test") is_test=TRUE;
+ }
+
+ is_menu=FALSE; //default
+ if (argc > 6)
+ {
+ tmp=argv[6];
+ if (tmp=="Menu") is_menu=TRUE;
+ }
+
+ is_launchtepal=FALSE; //default
+ if (argc > 7)
+ {
+ tmp=argv[7];
+ if (tmp=="LaunchTepal") is_launchtepal=TRUE;
+ }
+
+ casenamemed=casename;
+ if (argc > 8)
+ {
+ casenamemed=argv[8];
+ }
+
+ // We must always have an application
+ if (is_menu)
+ {
+ QApplication a(argc,argv);
+ dlg_ghs3dmain *m = new dlg_ghs3dmain();
+ a.setMainWidget(m); // It is our main widget
+ m->setCaption("tepal2med "+version);
+ m->show(); // Show it...
+ a.exec(); // And run!
+ cout<<"parameters "<<m->value_KeepFiles<<" "<<m->value_NbPart<<endl;
+ //cancel if close widget without Ok button
+ if (!m->value_Ok) return 1;
+ nbfiles=m->value_NbPart;
+ }
+
+ QString path;
+ int n=casenamemed.contains('/');
+ if (n>0)
+ path=casenamemed.section('/',-n-1,-2)+"/";
+ else
+ path="./";
+ casenamemed=casenamemed.section('/',-1);
+ if (casenamemed.length()>20)
+ {
+ cerr<<"CaseNameMed truncated (no more 20 characters)"<<endl;
+ casenamemed.truncate(20);
+ }
+
+ /*cout<<"CaseNameMed="<<casenamemed<<endl;
+ cout<<"PathMed="<<path<<endl;*/
+
+ //verbose=5;
+ if (verbose>0)
+ cout<<"CaseNameTepal="<<casename<<
+ " NumberOfFiles="<<nbfiles<<
+ " LimitSwap="<<nbelem_limit_swap<<
+ " Verbose="<<verbose<<
+ " Test="<<is_test<<
+ " Menu="<<is_menu<<
+ " LaunchTepal="<<is_launchtepal<<
+ " CaseNameMed="<<path+casenamemed<<
+ "\n";
+
+ //"tepal -f exemple1 -n 4"
+ if (is_launchtepal)
+ {
+ cmd="tepal -f "+casename+" -n "+cmd.sprintf("%d",nbfiles)+" > "+path+"tepal.out";
+ cout<<"LaunchTepal Command = "<<cmd<<endl;
+ system( (const char *) cmd ); // run
+ }
+
+ ghs3dprl_mesh_wrap *mymailw=new ghs3dprl_mesh_wrap;
+ //no constructor, later maybe
+ mymailw->nbfiles=0;
+ mymailw->nbelem_limit_swap=nbelem_limit_swap; //for huge cases big array swap in huge binary files
+ mymailw->verbose=verbose;
+ mymailw->casename=casenamemed;
+ mymailw->path=path;
+
+ ghs3dprl_msg_parser handler;
+ //constructor later maybe
+ //handler.verbose=TRUE;
+ handler.mailw=mymailw;
+
+ QXmlSimpleReader reader;
+ reader.setContentHandler(&handler);
+ format=format.sprintf("%d",nbfiles);
+ int nbf=format.length();
+ format=format.sprintf(".%%.%dd.%%.%dd",nbf,nbf);
+ //read files .msg
+ for (int i=1; i<=nbfiles; i++)
+ {
+ mymailw->nofile=i;
+ //tmp=casename+tmp.sprintf(".%d.%d.msg",nbfiles,i);
+ tmp=casename+tmp.sprintf(format,nbfiles,i)+".msg";
+ if (verbose>0) cout<<"FileName="<<tmp<<endl;
+ QFile File(tmp);
+ QXmlInputSource source(&File);
+ reader.parse(source);
+ File.close();
+ }
+ if (verbose>0)
+ cout<<"NumberOfFilesMSGAcquired="<<mymailw->nbfiles<<"\n";
+ if (mymailw->nbfiles != nbfiles)
+ {
+ cerr<<"NumberOfFiles != NumberOfFilesAcquired is unexpected\n";
+ return 1;
+ }
+
+ if (is_test)
+ {
+ ok=mymailw->test_msg_wrap();
+ if (ok)
+ {
+ if (verbose>0) cout<<"\nResult_test_msg_wrap=ok\n\n";
+ }
+ else
+ {
+ cerr<<"\nResult_test_msg_wrap=NO_OK!\n\n";
+ return 1;
+ }
+ }
+
+ //after verification remove unusued data
+ //"NE0 FI" for/from <version>1.0</version>
+ //after verification remove duplicates data
+ //for debug but don't do that because reliability
+ // and locality of datas files
+ //" RE " for duplicates <receive>
+ //int nb=mymailw->remove_key_mesh_wrap(QRegExp("( NE0 | RE)",TRUE,FALSE));
+
+ //because <send> equals <receive>
+ int nb=0;
+ nb=mymailw->remove_key_mesh_wrap(QRegExp("RE",TRUE,FALSE));
+ if (verbose>3) cout<<"NumberOfKeysRemoved="<<nb<<endl;
+ if (verbose>3) ok=mymailw->list_keys_mesh_wrap();
+
+ //test read files .noboiteb
+ //tmp=casename+".noboiteb";
+ //ok=mymailw->ReadFileNOBOITEB(tmp);
+
+ //read files .noboite
+ //supposed big files
+ mymailw->nbfiles=0;
+ for (int i=1; i<=nbfiles; i++)
+ {
+ mymailw->nofile=i;
+ tmp=casename+tmp.sprintf(format,nbfiles,i)+".noboite";
+ if (verbose>0) cout<<"FileName="<<tmp<<endl;
+ ok=mymailw->ReadFileNOBOITE(tmp);
+ //mymailw->SwapOutOfMemory_key_mesh_wrap(QRegExp("NB",TRUE,FALSE));
+ }
+ if (verbose>0)
+ cout<<"NumberOfFilesNOBOITEAcquired="<<mymailw->nbfiles<<"\n";
+ if (mymailw->nbfiles != nbfiles)
+ {
+ cerr<<"NumberOfFiles != NumberOfFilesAcquired is unexpected\n";
+ return 1;
+ }
+
+ if (is_test)
+ {
+ ok=mymailw->test_vertices_wrap();
+ if (ok)
+ {
+ if (verbose>0) cout<<"\nResult_test_vertices_wrap=ok\n\n";
+ }
+ else
+ {
+ cerr<<"\nResult_test_vertices_wrap=NO_OK!\n\n";
+ return 1;
+ }
+ }
+
+ //read files .faces
+ mymailw->nbfiles=0;
+ for (int i=1; i<=nbfiles; i++)
+ {
+ mymailw->nofile=i;
+ tmp=casename+tmp.sprintf(format,nbfiles,i)+".faces";
+ if (verbose>0) cout<<"FileName="<<tmp<<endl;
+ ok=mymailw->ReadFileFACES(tmp);
+ }
+ if (verbose>0)
+ cout<<"NumberOfFilesFACESAcquired="<<mymailw->nbfiles<<"\n\n";
+ if (mymailw->nbfiles != nbfiles)
+ {
+ cerr<<"NumberOfFiles != NumberOfFilesAcquired is unexpected\n\n";
+ return 1;
+ }
+
+ //read files .points
+ mymailw->nbfiles=0;
+ for (int i=1; i<=nbfiles; i++)
+ {
+ mymailw->nofile=i;
+ tmp=casename+tmp.sprintf(format,nbfiles,i)+".points";
+ if (verbose>0) cout<<"FileName="<<tmp<<endl;
+ ok=mymailw->ReadFilePOINTS(tmp);
+ }
+ if (verbose>0)
+ cout<<"NumberOfFilesPOINTSAcquired="<<mymailw->nbfiles<<"\n\n";
+ if (mymailw->nbfiles != nbfiles)
+ {
+ cerr<<"NumberOfFiles != NumberOfFilesAcquired is unexpected\n\n";
+ return 1;
+ }
+
+ //read files .glo
+ //supposed big files big arrays so don't read with parser
+ mymailw->nbfiles=0;
+ for (int i=1; i<=nbfiles; i++)
+ {
+ mymailw->nofile=i;
+ tmp=casename+tmp.sprintf(format,nbfiles,i)+".glo";
+ if (verbose>0) cout<<"FileName="<<tmp<<endl;
+ ok=mymailw->ReadFileGLO(tmp);
+ //mymailw->SwapOutOfMemory_key_mesh_wrap(QRegExp("GL",TRUE,FALSE));
+ }
+ if (verbose>0)
+ cout<<"NumberOfFilesGLOAcquired="<<mymailw->nbfiles<<"\n\n";
+ if (mymailw->nbfiles != nbfiles)
+ {
+ cerr<<"NumberOfFiles != NumberOfFilesAcquired is unexpected\n\n";
+ return 1;
+ }
+
+ /*exemples
+ ok=mymailw->list_keys_mesh_wrap();
+ tmp="FA RE NE4 FI1";
+ ok=mymailw->list_onekey_mesh_wrap(tmp);
+ tmp="FA SE NE4 FI1";
+ ok=mymailw->list_onekey_mesh_wrap(tmp);
+ tmp="FA RE NE1 FI4";
+ ok=mymailw->list_onekey_mesh_wrap(tmp);
+ tmp="FA SE NE1 FI4";
+ ok=mymailw->list_onekey_mesh_wrap(tmp);
+
+ tmp="FA RE NE4 FI1";
+ ok=mymailw->list_onekey_mesh_wrap(tmp);*/
+
+ //test remove points (type 3)
+ //nb=mymailw->remove_key_mesh_wrap(QRegExp("PO",TRUE,FALSE));
+ //cout<<"***remove_key_mesh_wrap*** remove nb="<<nb<<endl;
+ //ok=mymailw->list_keys_mesh_wrap();
+
+ ok=mymailw->Write_MEDfiles();
+ //int nb=mymailw->remove_key_mesh_wrap(QRegExp(".",TRUE,FALSE));
+ nb=mymailw->remove_all_keys_mesh_wrap();
+ if (verbose>3)
+ cout<<"***remove_all_key_mesh_wrap*** "<<nb<<" keys removed\n";
+ cout<<endl<<"===end of "<<argv[0]<<"==="<<endl;
+ return 0; //ok
+}
+