--- /dev/null
+# -* Makefile *-
+#
+# Author : C. Caremoli
+# Date : 10/10/2003
+# $Header$
+#
+
+# 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
+
+RESOURCES_FILES = CALCULATORCatalog.xml CALCULATOR.png CALCULATOR_en.xml \
+ ExecCALCULATOR.png config
+
+BIN_SCRIPT= VERSION runAppli runSalome.py
+
+# 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 $< $@; \
+ fi; \
+ if ! cmp $< $@; then \
+ cp -p $< $@; \
+ fi; \
+
+include/salome/sstream: salome_adm/unix/sstream
+ -$(RM) $@
+ $(LN_S) ../../$< $@
+
+depend: depend_idl
+
+depend_idl:
+ (cd idl ; $(MAKE) $@) || exit 1
+
+# doc is already build : if you want to had documents, go manually to doc and run 'make doc'
+#doc:
+# (cd doc && $(MAKE) $@) || exit 1
+
+install-end:
+# finish libtool install
+# @$(LT) --mode=finish $(libdir)
+
+install-include: $(include_list)
+ $(INSTALL) -d $(includedir)
+ @for f in X $(include_list); do \
+ if test $$f != X; then \
+ ($(INSTALL_DATA) $$f $(includedir)/. || exit 1); \
+ fi; \
+ done
+
+# install script in $(bindir) :
+install-bin: $(BIN_SCRIPT)
+ $(INSTALL) -d $(bindir)
+ $(INSTALL_PROGRAM) $^ $(bindir)
+
+uninstall: uninstall-idl
+
+uninstall-idl:
+ $(RM) $(idldir)/*.idl
+
+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 install-include install-end
+
--- /dev/null
+This module is a Salome example of a module that is interfaced with MED library.
+
+Installation and compilation is like every Salome modules :
+ src_dir/build_configure
+ mkdir build_dir
+ mkdir instal_dir
+ cd build_dir
+ src_dir/configure --prefix=instal_dir
+ make
+ make install
+
+To check Calculator component, you can use CALCULATOR_TEST.py script,
+or SUPERVISION graph src_dir/CALCULATOR/graphe1.py
+
+
+Documentation can be found in /doc directory. It was written in sxw format (openoffice) and was converted in pdf.
+
+Implementation is in /src/CALCULATOR directory. It was tested on redhat8 - using gcc 3.2
--- /dev/null
+This file is only here for CVS:
+CVS does not always create empty directory, and adm_local/unix/config_file
+is needed by build_configure.
--- /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/salome -Xlinker -rpath-link -Xlinker -L$(top_builddir)/lib/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@
+
+# 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@
+
+
+#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@
+
+# 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$(top_srcdir)/idl -I$(top_builddir)/idl -I$(KERNEL_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$(top_srcdir)/idl -I$(top_builddir)/idl -I$(KERNEL_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)
+
+# 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=@libdir@/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=@libdir@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules
+
+docdir=$(datadir)/doc
+
+#
+# begin of package rules
+#
+
+.PHONY: all lib bin inc resources 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
+
+$(top_builddir)/config.status: $(top_srcdir)/configure
+ 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_SRC = \
+ac_cxx_bool.m4 check_corba.m4 check_vtk.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 check_opengl.m4 python.m4 \
+ac_cxx_typename.m4 check_pthreads.m4 check_cas.m4 \
+ac_cc_warnings.m4 check_qt.m4 check_med2.m4 \
+check_swig.m4
+
+$(top_srcdir)/aclocal.m4: $(ACLOCAL_SRC:%=@KERNEL_ROOT_DIR@/salome_adm/unix/config_files/%)
+ cd $(top_srcdir) ; aclocal --acdir=adm_local/unix/config_files -I @KERNEL_ROOT_DIR@/salome_adm/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
+# $Header$
+#
+
+# 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): ${MED_ROOT_DIR}/idl/salome/%.idl
+ $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
+
+%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${top_srcdir}/idl/%.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
+SALOME 2 EXEMPLE MODULE C++ : CALCULATOR
+This module works with KERNEL 2.2.4
--- /dev/null
+#!/bin/sh
+
+export KERNEL_ROOT_DIR=@KERNEL_ROOT_DIR@
+export PYCALCULATOR_ROOT_DIR=@prefix@
+
+python -i $CALCULATOR_ROOT_DIR/bin/salome/runSalome.py --modules=CALCULATOR --xterm --containers=cpp,python --killall
+
+
--- /dev/null
+#!/usr/bin/env python
+
+usage="""USAGE: runSalome.py [options]
+
+[command line options] :
+--help : affichage de l'aide
+--gui : lancement du GUI
+--logger : redirection des messages dans un fichier
+--xterm : les serveurs ouvrent une fenêtre xterm et les messages sont affichés dans cette fenêtre
+--modules=module1,module2,... : où modulen est le nom d'un module Salome à charger dans le catalogue
+--containers=cpp,python,superv: lancement des containers cpp, python et de supervision
+--killall : arrêt des serveurs de salome
+
+ La variable d'environnement <modulen>_ROOT_DIR doit etre préalablement
+ positionnée (modulen doit etre en majuscule).
+ KERNEL_ROOT_DIR est obligatoire.
+"""
+
+# -----------------------------------------------------------------------------
+#
+# Fonction d'arrêt de salome
+#
+
+def killSalome():
+ print "arret des serveurs SALOME"
+ for pid, cmd in process_id.items():
+ print "arret du process %s : %s"% (pid, cmd[0])
+ try:
+ os.kill(pid,signal.SIGKILL)
+ except:
+ print " ------------------ process %s : %s inexistant"% (pid, cmd[0])
+ print "arret du naming service"
+ os.system("killall -9 omniNames")
+
+# -----------------------------------------------------------------------------
+#
+# Fonction message
+#
+
+def message(code, msg=''):
+ if msg: print msg
+ sys.exit(code)
+
+import sys,os,string,glob,time,signal,pickle,getopt
+
+init_time=os.times()
+opts, args=getopt.getopt(sys.argv[1:], 'hmglxck:', ['help','modules=','gui','logger','xterm','containers=','killall'])
+modules_root_dir={}
+process_id={}
+liste_modules={}
+liste_containers={}
+with_gui=0
+with_logger=0
+with_xterm=0
+
+with_container_cpp=0
+with_container_python=0
+with_container_superv=0
+
+try:
+ for o, a in opts:
+ if o in ('-h', '--help'):
+ print usage
+ sys.exit(1)
+ elif o in ('-g', '--gui'):
+ with_gui=1
+ elif o in ('-l', '--logger'):
+ with_logger=1
+ elif o in ('-x', '--xterm'):
+ with_xterm=1
+ elif o in ('-m', '--modules'):
+ liste_modules = [x.upper() for x in a.split(',')]
+ elif o in ('-c', '--containers'):
+ liste_containers = [x.lower() for x in a.split(',')]
+ for r in liste_containers:
+ if r not in ('cpp', 'python', 'superv'):
+ message(1, 'Invalid -c/--containers option: %s' % a)
+ if 'cpp' in liste_containers:
+ with_container_cpp=1
+ else:
+ with_container_cpp=0
+ if 'python' in liste_containers:
+ with_container_python=1
+ else:
+ with_container_python=0
+ if 'superv' in liste_containers:
+ with_container_superv=1
+ else:
+ with_container_superv=0
+ elif o in ('-k', '--killall'):
+ filedict='/tmp/'+os.getenv('USER')+'_SALOME_pidict'
+ #filedict='/tmp/'+os.getlogin()+'_SALOME_pidict'
+ found = 0
+ try:
+ fpid=open(filedict, 'r')
+ found = 1
+ except:
+ print "le fichier %s des process SALOME n'est pas accessible"% filedict
+
+ if found:
+ process_id=pickle.load(fpid)
+ fpid.close()
+ killSalome()
+ process_id={}
+ os.remove(filedict)
+
+except getopt.error, msg:
+ print usage
+ sys.exit(1)
+
+# -----------------------------------------------------------------------------
+#
+# Vérification des variables d'environnement
+#
+try:
+ kernel_root_dir=os.environ["KERNEL_ROOT_DIR"]
+ modules_root_dir["KERNEL"]=kernel_root_dir
+except:
+ print usage
+ sys.exit(1)
+
+for module in liste_modules :
+ try:
+ module=module.upper()
+ module_root_dir=os.environ[module +"_ROOT_DIR"]
+ modules_root_dir[module]=module_root_dir
+ except:
+ print usage
+ sys.exit(1)
+
+# il faut KERNEL en premier dans la liste des modules
+# - l'ordre des modules dans le catalogue sera identique
+# - la liste des modules presents dans le catalogue est exploitée pour charger les modules CORBA python,
+# il faut charger les modules python du KERNEL en premier
+
+if "KERNEL" in liste_modules:liste_modules.remove("KERNEL")
+liste_modules[:0]=["KERNEL"]
+#print liste_modules
+#print modules_root_dir
+
+os.environ["SALOMEPATH"]=":".join(modules_root_dir.values())
+if "SUPERV" in liste_modules:with_container_superv=1
+
+
+# -----------------------------------------------------------------------------
+#
+# Définition des classes d'objets pour le lancement des Server CORBA
+#
+
+class Server:
+ CMD=[]
+ if with_xterm:
+ ARGS=['xterm', '-iconic', '-sb', '-sl', '500', '-e']
+ else:
+ ARGS=[]
+
+ def run(self):
+ args = self.ARGS+self.CMD
+ #print "args = ", args
+ pid = os.spawnvp(os.P_NOWAIT, args[0], args)
+ process_id[pid]=self.CMD
+
+class CatalogServer(Server):
+ SCMD1=['SALOME_ModuleCatalog_Server','-common']
+ SCMD2=['-personal','${HOME}/Salome/resources/CatalogModulePersonnel.xml']
+
+ def setpath(self,liste_modules):
+ cata_path=[]
+ for module in liste_modules:
+ module_root_dir=modules_root_dir[module]
+ module_cata=module+"Catalog.xml"
+ print " ", module_cata
+ cata_path.extend(glob.glob(os.path.join(module_root_dir,"share","salome","resources",module_cata)))
+ self.CMD=self.SCMD1 + [string.join(cata_path,':')] + self.SCMD2
+
+class SalomeDSServer(Server):
+ CMD=['SALOMEDS_Server']
+
+class RegistryServer(Server):
+ CMD=['SALOME_Registry_Server', '--salome_session','theSession']
+
+class ContainerCPPServer(Server):
+ CMD=['SALOME_Container','FactoryServer','-ORBInitRef','NameService=corbaname::localhost']
+
+class ContainerPYServer(Server):
+ CMD=['SALOME_ContainerPy.py','FactoryServerPy','-ORBInitRef','NameService=corbaname::localhost']
+
+class ContainerSUPERVServer(Server):
+ CMD=['SALOME_Container','SuperVisionContainer','-ORBInitRef','NameService=corbaname::localhost']
+
+class LoggerServer(Server):
+ CMD=['SALOME_Logger_Server', 'logger.log']
+
+class SessionLoader(Server):
+ CMD=['SALOME_Session_Loader']
+ if with_container_cpp:
+ CMD=CMD+['CPP']
+ if with_container_python:
+ CMD=CMD+['PY']
+ if with_container_superv:
+ CMD=CMD+['SUPERV']
+ if with_gui:
+ CMD=CMD+['GUI']
+
+class SessionServer(Server):
+ CMD=['SALOME_Session_Server']
+
+class NotifyServer(Server):
+ CMD=['notifd','-c','${KERNEL_ROOT_DIR}/share/salome/resources/channel.cfg -DFactoryIORFileName=/tmp/${LOGNAME}_rdifact.ior -DChannelIORFileName=/tmp/${LOGNAME}_rdichan.ior']
+
+# -----------------------------------------------------------------------------
+#
+# Fonction de test
+#
+
+def test(clt):
+ """
+ Test function that creates an instance of CALCULATOR component
+ usage : hello=test(clt)
+ """
+ # create an LifeCycleCORBA instance
+ import LifeCycleCORBA
+ lcc = LifeCycleCORBA.LifeCycleCORBA(clt.orb)
+ import CALCULATOR_ORB
+ hello = lcc.FindOrLoadComponent("FactoryServer", "CALCULATOR")
+ return hello
+
+# -----------------------------------------------------------------------------
+#
+# Fonctions helper pour ajouter des variables d'environnement
+#
+
+def add_path(directory):
+ os.environ["PATH"]=directory + ":" + os.environ["PATH"]
+
+def add_ld_library_path(directory):
+ os.environ["LD_LIBRARY_PATH"]=directory + ":" + os.environ["LD_LIBRARY_PATH"]
+
+def add_python_path(directory):
+ os.environ["PYTHONPATH"]=directory + ":" + os.environ["PYTHONPATH"]
+ sys.path[:0]=[directory]
+
+# -----------------------------------------------------------------------------
+#
+# initialisation des variables d'environnement
+#
+
+python_version="python%d.%d" % sys.version_info[0:2]
+
+#
+# Ajout du chemin d'acces aux executables de KERNEL dans le PATH
+#
+
+add_path(os.path.join(kernel_root_dir,"bin","salome"))
+#print "PATH=",os.environ["PATH"]
+
+#
+# Ajout des modules dans le LD_LIBRARY_PATH
+#
+for module in liste_modules:
+ module_root_dir=modules_root_dir[module]
+ add_ld_library_path(os.path.join(module_root_dir,"lib","salome"))
+#print "LD_LIBRARY_PATH=",os.environ["LD_LIBRARY_PATH"]
+
+#
+# Ajout des modules dans le PYTHONPATH (KERNEL prioritaire, donc en dernier)
+#
+
+liste_modules_reverse=liste_modules[:]
+liste_modules_reverse.reverse()
+#print liste_modules
+#print liste_modules_reverse
+for module in liste_modules_reverse:
+ module_root_dir=modules_root_dir[module]
+ add_python_path(os.path.join(module_root_dir,"bin","salome"))
+ add_python_path(os.path.join(module_root_dir,"lib",python_version,"site-packages","salome"))
+ add_python_path(os.path.join(module_root_dir,"lib","salome"))
+ add_python_path(os.path.join(module_root_dir,"lib",python_version,"site-packages","salome","shared_modules"))
+
+#print "PYTHONPATH=",sys.path
+
+import orbmodule
+
+#
+# -----------------------------------------------------------------------------
+#
+
+def startGUI():
+ import SALOME
+ session=clt.waitNS("/Kernel/Session",SALOME.Session)
+
+ #
+ # Activation du GUI de Session Server
+ #
+
+ session.GetInterface()
+
+#
+# -----------------------------------------------------------------------------
+#
+
+def startSalome():
+
+ #
+ # Lancement Session Loader
+ #
+ SessionLoader().run()
+
+ #
+ # Initialisation ORB et Naming Service
+ #
+ clt=orbmodule.client()
+
+ # (non obligatoire) Lancement Logger Server et attente de sa
+ # disponibilite dans le naming service
+ #
+ if with_logger:
+ LoggerServer().run()
+ clt.waitLogger("Logger")
+
+ #
+ # Lancement Registry Server
+ #
+ RegistryServer().run()
+
+ #
+ # Attente de la disponibilité du Registry dans le Naming Service
+ #
+ clt.waitNS("/Registry")
+
+ #
+ # Lancement Catalog Server
+ #
+ cataServer=CatalogServer()
+ cataServer.setpath(liste_modules)
+ cataServer.run()
+
+ #
+ # Attente de la disponibilité du Catalog Server dans le Naming Service
+ #
+ import SALOME_ModuleCatalog
+ clt.waitNS("/Kernel/ModulCatalog",SALOME_ModuleCatalog.ModuleCatalog)
+
+ #
+ # Lancement SalomeDS Server
+ #
+ os.environ["CSF_PluginDefaults"]=os.path.join(kernel_root_dir,"share","salome","resources")
+ os.environ["CSF_SALOMEDS_ResourcesDefaults"]=os.path.join(kernel_root_dir,"share","salome","resources")
+ SalomeDSServer().run()
+
+ if "GEOM" in liste_modules:
+ print "GEOM OCAF Resources"
+ os.environ["CSF_GEOMDS_ResourcesDefaults"]=os.path.join(modules_root_dir["GEOM"],"share","salome","resources")
+
+
+ #
+ # Attente de la disponibilité du SalomeDS dans le Naming Service
+ #
+ clt.waitNS("/myStudyManager")
+
+ #
+ # Lancement Session Server
+ #
+ SessionServer().run()
+
+ #
+ # Attente de la disponibilité du Session Server dans le Naming Service
+ #
+ import SALOME
+ session=clt.waitNS("/Kernel/Session",SALOME.Session)
+
+ #
+ # Lancement containers
+ #
+ theComputer = os.getenv("HOSTNAME")
+ theComputer = theComputer.split('.')[0]
+
+ #
+ # Lancement Container C++ local
+ #
+ if with_container_cpp:
+ ContainerCPPServer().run()
+ #
+ # Attente de la disponibilité du Container C++ local
+ # dans le Naming Service
+ #
+ clt.waitNS("/Containers/" + theComputer + "/FactoryServer")
+ #
+ # Lancement Container Python local
+ #
+ if with_container_python:
+ ContainerPYServer().run()
+ #
+ # Attente de la disponibilité du Container Python local
+ # dans le Naming Service
+ #
+ clt.waitNS("/Containers/" + theComputer + "/FactoryServerPy")
+
+ if with_container_superv:
+ #
+ # Lancement Container Supervision local
+ #
+ ContainerSUPERVServer().run()
+ #
+ # Attente de la disponibilité du Container Supervision local
+ # dans le Naming Service
+ #
+ clt.waitNS("/Containers/" + theComputer + "/SuperVisionContainer")
+ #
+ # Activation du GUI de Session Server
+ #
+ #session.GetInterface()
+
+ end_time = os.times()
+ print
+ print "Start SALOME, elpased time : %5.1f seconds"% (end_time[4] - init_time[4])
+
+ return clt
+
+#
+# -----------------------------------------------------------------------------
+#
+
+if __name__ == "__main__":
+ clt=None
+ try:
+ clt = startSalome()
+ except:
+ print
+ print
+ print "--- erreur au lancement Salome ---"
+
+ #print process_id
+
+
+ filedict='/tmp/'+os.getenv('USER')+'_SALOME_pidict'
+ #filedict='/tmp/'+os.getlogin()+'_SALOME_pidict'
+
+ fpid=open(filedict, 'w')
+ pickle.dump(process_id,fpid)
+ fpid.close()
+
+ print """
+
+Sauvegarde du dictionnaire des process dans , %s
+Pour tuer les process SALOME, executer : python killSalome.py depuis
+une console, ou bien killSalome() depuis le present interpreteur,
+s'il n'est pas fermé.
+
+runSalome, avec l'option --killall, commence par tuer les process restants
+d'une execution précédente.
+
+Pour lancer uniquement le GUI, executer startGUI() depuis le present interpreteur,
+s'il n'est pas fermé.
+
+""" % filedict
+
+ #
+ # Impression arborescence Naming Service
+ #
+
+ if clt != None:
+ print
+ print " --- registered objects tree in Naming Service ---"
+ clt.showNS()
+ session=clt.waitNS("/Kernel/Session")
+ catalog=clt.waitNS("/Kernel/ModulCatalog")
+ import socket
+ container = clt.waitNS("/Containers/" + socket.gethostname().split('.')[0] + "/FactoryServerPy")
+
+ if os.path.isfile("~/.salome/pystartup"):
+ f=open(os.path.expanduser("~/.salome/pystartup"),'w')
+ PYTHONSTARTUP=f.read()
+ f.close()
+ else:
+ PYTHONSTARTUP="""
+# Add auto-completion and a stored history file of commands to your Python
+# interactive interpreter. Requires Python 2.0+, readline. Autocomplete is
+# bound to the TAB key by default (you can change it - see readline docs).
+#
+# Store the history in ~/.salome/pyhistory,
+#
+import atexit
+import os
+import readline
+import rlcompleter
+readline.parse_and_bind('tab: complete')
+
+historyPath = os.path.expanduser("~/.salome/pyhistory")
+
+def save_history(historyPath=historyPath):
+ import readline
+ readline.write_history_file(historyPath)
+
+if os.path.exists(historyPath):
+ readline.read_history_file(historyPath)
+
+atexit.register(save_history)
+del os, atexit, readline, rlcompleter, save_history, historyPath
+"""
+ f=open(os.path.expanduser("~/.salome/pystartup"),'w')
+ f.write(PYTHONSTARTUP)
+ f.close()
+
+ exec PYTHONSTARTUP in {}
+
--- /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
+# $Header $
+#
+
+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
+
+########################################################################
+# 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 ;;
+ *) ;;
+ 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`
+
+#
+# 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
+ \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 \\" >> configure.in_tmp1
+echo "./salome_adm/unix/envScript \\" >> configure.in_tmp1
+echo "./adm_local/unix/make_commence \\" >> 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
+touch configure.in_tmp2
+find_in . configure.in_tmp2
+
+sed -e '/^.\/salome_adm/d' \
+ -e '/configure.in/d' \
+ -e '/^.\/adm_local/d' \
+ -e 's/.in / /' \
+ configure.in_tmp2 >> configure.in_tmp1
+
+echo "])" >> configure.in_tmp1
+
+# delete the link created for AC_OUTPUT
+echo "" >> configure.in_tmp1
+\mv configure.in_tmp1 configure.in_new
+\rm -f configure.in_tmp2
+
+
+########################################################################
+# 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
+ \rm -f configure.in_new
+ 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 --acdir=adm_local/unix/config_files -I ${KERNEL_ROOT_DIR}/salome_adm/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 : Marc Tajchman (CEA)
+# Date : 28/06/2001
+# 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=1.2.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 + for shared libraries
+
+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
+
+AC_CXX_HAVE_SSTREAM
+
+
+echo
+echo ---------------------------------------------
+echo testing python
+echo ---------------------------------------------
+echo
+
+CHECK_PYTHON
+
+echo
+echo ---------------------------------------------
+echo testing QT
+echo ---------------------------------------------
+echo
+
+CHECK_QT
+
+echo
+echo ---------------------------------------------
+echo Testing OpenCascade
+echo ---------------------------------------------
+echo
+
+CHECK_CAS
+
+echo
+echo ---------------------------------------------
+echo testing omniORB
+echo ---------------------------------------------
+echo
+
+echo
+echo ---------------------------------------------
+echo testing HDF5
+echo ---------------------------------------------
+echo
+
+CHECK_HDF5
+
+echo
+echo ---------------------------------------------
+echo testing MED2
+echo ---------------------------------------------
+echo
+
+CHECK_MED2
+
+
+CHECK_OMNIORB
+
+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 Kernel
+echo ---------------------------------------------
+echo
+
+CHECK_KERNEL
+
+echo
+echo ---------------------------------------------
+echo Summary
+echo ---------------------------------------------
+echo
+
+echo Configure
+variables="python_ok omniORB_ok Kernel_ok qt_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/salome share/salome/resources share/salome/doc idl
+do
+ $INSTALL -d $rep
+done
+
+echo
+echo ---------------------------------------------
+echo copying resource files, shell scripts, and
+echo xml files
+echo ---------------------------------------------
+echo
+
+dnl copy shells and utilities contained in the bin directory
+dnl excluding .in files (treated in AC-OUTPUT below) and CVS
+dnl directory
+
+cd bin
+for i in $ROOT_SRCDIR/bin/*
+do
+ local_bin=`echo $i | sed -e "s,$ROOT_SRCDIR,.,"`
+ case "$local_bin" in
+ *.in | *~) ;;
+ ./bin/CVS) ;;
+ *) ln -fs $i; echo $local_bin ;;
+ esac
+done
+cd $ROOT_BUILDDIR
+
+AC_SUBST_FILE(ENVSCRIPT) ENVSCRIPT=salome_adm/unix/envScript
+
+echo
+echo ---------------------------------------------
+echo generating Makefiles and configure files
+echo ---------------------------------------------
+echo
+
+AC_OUTPUT_COMMANDS([ \
+ chmod +x ./bin/* \
+])
+
+## do not delete this line
--- /dev/null
+#ifndef __CALCULATOR_GEN__
+#define __CALCULATOR_GEN__
+/*!
+ \defgroup EXAMPLES SALOME EXAMPLES components
+ */
+
+#include "SALOME_Component.idl"
+#include "SALOME_Exception.idl"
+#include "MED.idl"
+
+
+/*! \ingroup EXAMPLES
+
+This package contains the interface CALCULATOR_ORB used
+for %CALCULATOR component as an example in %SALOME application.
+*/
+module CALCULATOR_ORB
+{
+ /*! \brief Interface of the %CALCULATOR component
+ */
+ interface CALCULATOR_Gen : Engines::Component
+ {
+ /*!
+ Calculate the maximum relative difference of field with the previous one.
+ At first call, store passed field and return 1.
+ */
+ double convergenceCriteria(in SALOME_MED::FIELDDOUBLE field);
+ /*!
+ Apply to each (scalar) field component the linear function x -> ax+b.
+ Release field1 after use.
+ */
+ SALOME_MED::FIELDDOUBLE applyLin(in SALOME_MED::FIELDDOUBLE field1, in double a1, in double a2);
+
+ /*!
+ Addition of fields.
+ Return exception if fields are not compatible.
+ Release field1 and field2 after use.
+ */
+ SALOME_MED::FIELDDOUBLE add(in SALOME_MED::FIELDDOUBLE field1, in SALOME_MED::FIELDDOUBLE field2)
+ raises (SALOME::SALOME_Exception);
+
+ /*!
+ return euclidian norm of field
+ Release field after use.
+ */
+ double norm2(in SALOME_MED::FIELDDOUBLE field);
+
+ /*!
+ return L2 norm of field
+ Release field after use.
+ */
+ double normL2(in SALOME_MED::FIELDDOUBLE field);
+
+ /*!
+ return L1 norm of field
+ Release field after use.
+ */
+ double normL1(in SALOME_MED::FIELDDOUBLE field);
+
+ /*!
+ return max norm of field
+ Release field after use.
+ */
+ double normMax(in SALOME_MED::FIELDDOUBLE field);
+
+ /*!
+ This utility method print in standard output the coordinates & field values
+ Release field after use.
+ */
+ void printField(in SALOME_MED::FIELDDOUBLE field);
+
+ /*!
+ This method clones field in four examples.
+ Release field after use.
+ */
+ void cloneField(in SALOME_MED::FIELDDOUBLE field, out SALOME_MED::FIELDDOUBLE clone1,
+ out SALOME_MED::FIELDDOUBLE clone2, out SALOME_MED::FIELDDOUBLE clone3,
+ out SALOME_MED::FIELDDOUBLE clone4 );
+ };
+};
+
+#endif
+
--- /dev/null
+#
+# generate dependencies for idl file :
+#
+
+# source path
+top_srcdir=@top_srcdir@
+top_builddir=..
+srcdir=@srcdir@
+VPATH=.:$(srcdir):${KERNEL_ROOT_DIR}/idl/salome:${MED_ROOT_DIR}/idl/salome
+
+@COMMENCE@
+
+IDL_FILES = CALCULATOR_Gen.idl
+
+PY_CLIENT_IDL = $(IDL_FILES)
+
+# we copy all idl file in $(top_builddir)/idl
+inc: $(IDL_FILES:%=$(top_builddir)/idl/%)
+
+$(IDL_FILES:%=$(top_builddir)/idl/%):$(top_builddir)/idl/%:%
+ #$(CP) $< $@
+ cp -f $< $@
+
+lib: pyidl
+
+PYTHON_BUILD_SITE=$(top_builddir)/lib/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: %.idl
+ $(OMNIORB_IDL) $(OMNIORB_IDLPYFLAGS) -C$(PYTHON_BUILD_SITE) $<
+
+# install python client (generated from idl file
+install: install-pyidl install-idl
+
+# create directory $(idldir) and copy idl files into it
+install-idl: $(IDL_FILES)
+ $(INSTALL) -d $(idldir)
+ cp -p $^ $(idldir)
+
+OMNIORB_IDLCXXFLAGS+=-I${MED_ROOT_DIR}/idl/salome
+OMNIORB_IDLPYFLAGS+=-I${MED_ROOT_DIR}/idl/salome
+
+install-pyidl: $(IDL_FILES)
+ $(INSTALL) -d $(PYTHON_SITE_INSTALL)
+ @for file in $^ dummy; do \
+ if [ $$file != "dummy" ]; then \
+ $(OMNIORB_IDL) $(OMNIORB_IDLPYFLAGS) -C$(PYTHON_SITE_INSTALL) $$file ; \
+ fi ; \
+ done ;
+
+
+cleandep:
+ -$(RM) .dep*
+
+distclean:
+ -$(RM) *.py
+ -$(RM) $(IDL_FILES:%=$(top_builddir)/idl/%)
+ -$(RM) Makefile
+
--- /dev/null
+<?xml version='1.0' encoding='us-ascii' ?>
+
+<begin-catalog>
+ <path-prefix-list></path-prefix-list>
+ <component-list>
+ <component>
+ <component-name>CALCULATOR</component-name>
+ <component-username>CALCULATOR</component-username>
+ <component-type>MED EXAMPLE</component-type>
+ <component-author>crouzet</component-author>
+ <component-version>2.2.2</component-version>
+ <component-comment>unknown</component-comment>
+ <component-multistudy>1</component-multistudy>
+ <component-icone>CALCULATOR.png</component-icone>
+ <constraint>'linux' ~ OS</constraint>
+ <component-interface-list>
+ <component-interface-name>CALCULATOR_Gen</component-interface-name>
+ <component-interface-comment>unknown</component-interface-comment>
+ <component-service-list>
+ <component-service>
+ <service-name>convergenceCriteria</service-name>
+ <service-author>crouzet</service-author>
+ <service-version>2.2.2</service-version>
+ <service-comment>unknown</service-comment>
+ <service-by-default>0</service-by-default>
+ <inParameter-list>
+ <inParameter>
+ <inParameter-name>field</inParameter-name>
+ <inParameter-type>FIELDDOUBLE</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ </inParameter-list>
+ <outParameter-list>
+ <outParameter>
+ <outParameter-name>return</outParameter-name>
+ <outParameter-type>double</outParameter-type>
+ <outParameter-comment>unknown</outParameter-comment>
+ </outParameter>
+ </outParameter-list>
+ <DataStream-list></DataStream-list>
+ </component-service>
+ <component-service>
+ <service-name>applyLin</service-name>
+ <service-author>crouzet</service-author>
+ <service-version>2.2.2</service-version>
+ <service-comment>unknown</service-comment>
+ <service-by-default>0</service-by-default>
+ <inParameter-list>
+ <inParameter>
+ <inParameter-name>field1</inParameter-name>
+ <inParameter-type>FIELDDOUBLE</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>a1</inParameter-name>
+ <inParameter-type>double</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>a2</inParameter-name>
+ <inParameter-type>double</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ </inParameter-list>
+ <outParameter-list>
+ <outParameter>
+ <outParameter-name>return</outParameter-name>
+ <outParameter-type>FIELDDOUBLE</outParameter-type>
+ <outParameter-comment>unknown</outParameter-comment>
+ </outParameter>
+ </outParameter-list>
+ <DataStream-list></DataStream-list>
+ </component-service>
+ <component-service>
+ <service-name>add</service-name>
+ <service-author>crouzet</service-author>
+ <service-version>2.2.2</service-version>
+ <service-comment>unknown</service-comment>
+ <service-by-default>0</service-by-default>
+ <inParameter-list>
+ <inParameter>
+ <inParameter-name>field1</inParameter-name>
+ <inParameter-type>FIELDDOUBLE</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ <inParameter>
+ <inParameter-name>field2</inParameter-name>
+ <inParameter-type>FIELDDOUBLE</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ </inParameter-list>
+ <outParameter-list>
+ <outParameter>
+ <outParameter-name>return</outParameter-name>
+ <outParameter-type>FIELDDOUBLE</outParameter-type>
+ <outParameter-comment>unknown</outParameter-comment>
+ </outParameter>
+ </outParameter-list>
+ <DataStream-list></DataStream-list>
+ </component-service>
+ <component-service>
+ <service-name>norm2</service-name>
+ <service-author>crouzet</service-author>
+ <service-version>2.2.2</service-version>
+ <service-comment>unknown</service-comment>
+ <service-by-default>0</service-by-default>
+ <inParameter-list>
+ <inParameter>
+ <inParameter-name>field</inParameter-name>
+ <inParameter-type>FIELDDOUBLE</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ </inParameter-list>
+ <outParameter-list>
+ <outParameter>
+ <outParameter-name>return</outParameter-name>
+ <outParameter-type>double</outParameter-type>
+ <outParameter-comment>unknown</outParameter-comment>
+ </outParameter>
+ </outParameter-list>
+ <DataStream-list></DataStream-list>
+ </component-service>
+ <component-service>
+ <service-name>normL2</service-name>
+ <service-author>crouzet</service-author>
+ <service-version>2.2.2</service-version>
+ <service-comment>unknown</service-comment>
+ <service-by-default>0</service-by-default>
+ <inParameter-list>
+ <inParameter>
+ <inParameter-name>field</inParameter-name>
+ <inParameter-type>FIELDDOUBLE</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ </inParameter-list>
+ <outParameter-list>
+ <outParameter>
+ <outParameter-name>return</outParameter-name>
+ <outParameter-type>double</outParameter-type>
+ <outParameter-comment>unknown</outParameter-comment>
+ </outParameter>
+ </outParameter-list>
+ <DataStream-list></DataStream-list>
+ </component-service>
+ <component-service>
+ <service-name>normL1</service-name>
+ <service-author>crouzet</service-author>
+ <service-version>2.2.2</service-version>
+ <service-comment>unknown</service-comment>
+ <service-by-default>0</service-by-default>
+ <inParameter-list>
+ <inParameter>
+ <inParameter-name>field</inParameter-name>
+ <inParameter-type>FIELDDOUBLE</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ </inParameter-list>
+ <outParameter-list>
+ <outParameter>
+ <outParameter-name>return</outParameter-name>
+ <outParameter-type>double</outParameter-type>
+ <outParameter-comment>unknown</outParameter-comment>
+ </outParameter>
+ </outParameter-list>
+ <DataStream-list></DataStream-list>
+ </component-service>
+ <component-service>
+ <service-name>normMax</service-name>
+ <service-author>crouzet</service-author>
+ <service-version>2.2.2</service-version>
+ <service-comment>unknown</service-comment>
+ <service-by-default>0</service-by-default>
+ <inParameter-list>
+ <inParameter>
+ <inParameter-name>field</inParameter-name>
+ <inParameter-type>FIELDDOUBLE</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ </inParameter-list>
+ <outParameter-list>
+ <outParameter>
+ <outParameter-name>return</outParameter-name>
+ <outParameter-type>double</outParameter-type>
+ <outParameter-comment>unknown</outParameter-comment>
+ </outParameter>
+ </outParameter-list>
+ <DataStream-list></DataStream-list>
+ </component-service>
+ <component-service>
+ <service-name>printField</service-name>
+ <service-author>crouzet</service-author>
+ <service-version>2.2.2</service-version>
+ <service-comment>unknown</service-comment>
+ <service-by-default>0</service-by-default>
+ <inParameter-list>
+ <inParameter>
+ <inParameter-name>field</inParameter-name>
+ <inParameter-type>FIELDDOUBLE</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ </inParameter-list>
+ <outParameter-list></outParameter-list>
+ <DataStream-list></DataStream-list>
+ </component-service>
+ <component-service>
+ <service-name>cloneField</service-name>
+ <service-author>crouzet</service-author>
+ <service-version>2.2.2</service-version>
+ <service-comment>unknown</service-comment>
+ <service-by-default>0</service-by-default>
+ <inParameter-list>
+ <inParameter>
+ <inParameter-name>field</inParameter-name>
+ <inParameter-type>FIELDDOUBLE</inParameter-type>
+ <inParameter-comment>unknown</inParameter-comment>
+ </inParameter>
+ </inParameter-list>
+ <outParameter-list>
+ <outParameter>
+ <outParameter-name>clone1</outParameter-name>
+ <outParameter-type>FIELDDOUBLE</outParameter-type>
+ <outParameter-comment>unknown</outParameter-comment>
+ </outParameter>
+ <outParameter>
+ <outParameter-name>clone2</outParameter-name>
+ <outParameter-type>FIELDDOUBLE</outParameter-type>
+ <outParameter-comment>unknown</outParameter-comment>
+ </outParameter>
+ <outParameter>
+ <outParameter-name>clone3</outParameter-name>
+ <outParameter-type>FIELDDOUBLE</outParameter-type>
+ <outParameter-comment>unknown</outParameter-comment>
+ </outParameter>
+ <outParameter>
+ <outParameter-name>clone4</outParameter-name>
+ <outParameter-type>FIELDDOUBLE</outParameter-type>
+ <outParameter-comment>unknown</outParameter-comment>
+ </outParameter>
+ </outParameter-list>
+ <DataStream-list></DataStream-list>
+ </component-service>
+ </component-service-list>
+ </component-interface-list>
+ </component>
+ </component-list>
+</begin-catalog>
--- /dev/null
+%!PS-Adobe-3.0
+%%Title: PYCALCULATOR_en.xml
+%%For: Nicolas CROUZET - SFME/LGLS
+%%Creator: a2ps version 4.13
+%%CreationDate: Tue Nov 4 17:58:50 2003
+%%BoundingBox: 24 24 588 768
+%%DocumentData: Clean7Bit
+%%Orientation: Landscape
+%%Pages: 1
+%%PageOrder: Ascend
+%%DocumentMedia: Letter 612 792 0 () ()
+%%DocumentNeededResources: font Courier
+%%+ font Courier-Bold
+%%+ font Courier-BoldOblique
+%%+ font Courier-Oblique
+%%+ font Helvetica
+%%+ font Helvetica-Bold
+%%+ font Symbol
+%%+ font Times-Bold
+%%+ font Times-Roman
+%%DocumentProcessColors: Black
+%%DocumentSuppliedResources: procset a2ps-a2ps-hdr
+%%+ procset a2ps-black+white-Prolog
+%%+ encoding ISO-8859-1Encoding
+%%EndComments
+/a2psdict 200 dict def
+a2psdict begin
+%%BeginProlog
+%%Copyright: (c) 1988, 89, 90, 91, 92, 93 Miguel Santana
+%%Copyright: (c) 1995, 96, 97, 98 Akim Demaille, Miguel Santana
+% Check PostScript language level.
+/languagelevel where {
+ pop /gs_languagelevel languagelevel def
+} {
+ /gs_languagelevel 1 def
+} ifelse
+
+% EPSF import as in the Red Book
+/BeginInclude {
+ /b4_Inc_state save def % Save state for cleanup
+ /dict_count countdictstack def % Count objects on dict stack
+ /op_count count 1 sub def % Count objects on operand stack
+ userdict begin
+ 0 setgray 0 setlinecap
+ 1 setlinewidth 0 setlinejoin
+ 10 setmiterlimit [ ] 0 setdash newpath
+ gs_languagelevel 1 ne {
+ false setstrokeadjust false setoverprint
+ } if
+} bind def
+
+/EndInclude {
+ count op_count sub { pos } repeat % Clean up stacks
+ countdictstack dict_count sub { end } repeat
+ b4_Inc_state restore
+} bind def
+
+/BeginEPSF {
+ BeginInclude
+ /showpage { } def
+} bind def
+
+/EndEPSF {
+ EndInclude
+} bind def
+
+% Page prefeed
+/page_prefeed { % bool -> -
+ statusdict /prefeed known {
+ statusdict exch /prefeed exch put
+ } {
+ pop
+ } ifelse
+} bind def
+
+/deffont {
+ findfont exch scalefont def
+} bind def
+
+/reencode_font {
+ findfont reencode 2 copy definefont pop def
+} bind def
+
+% Function c-show (str => -)
+% centers text only according to x axis.
+/c-show {
+ dup stringwidth pop
+ 2 div neg 0 rmoveto
+ show
+} bind def
+
+% Function l-show (str => -)
+% prints texts so that it ends at currentpoint
+/l-show {
+ dup stringwidth pop neg
+ 0
+ rmoveto show
+} bind def
+
+% center-fit show (str w => -)
+% show centered, and scale currentfont so that the width is less than w
+/cfshow {
+ exch dup stringwidth pop
+ % If the title is too big, try to make it smaller
+ 3 2 roll 2 copy
+ gt
+ { % if, i.e. too big
+ exch div
+ currentfont exch scalefont setfont
+ } { % ifelse
+ pop pop
+ }
+ ifelse
+ c-show % center title
+} bind def
+
+% Return the y size of the current font
+% - => fontsize
+/currentfontsize {
+ currentfont /FontType get 0 eq {
+ currentfont /FontMatrix get 3 get
+ }{
+ currentfont /FontMatrix get 3 get 1000 mul
+ } ifelse
+} bind def
+
+% reencode the font
+% <encoding-vector> <fontdict> -> <newfontdict>
+/reencode { %def
+ dup length 5 add dict begin
+ { %forall
+ 1 index /FID ne
+ { def }{ pop pop } ifelse
+ } forall
+ /Encoding exch def
+
+ % Use the font's bounding box to determine the ascent, descent,
+ % and overall height; don't forget that these values have to be
+ % transformed using the font's matrix.
+ % We use `load' because sometimes BBox is executable, sometimes not.
+ % Since we need 4 numbers an not an array avoid BBox from being executed
+ /FontBBox load aload pop
+ FontMatrix transform /Ascent exch def pop
+ FontMatrix transform /Descent exch def pop
+ /FontHeight Ascent Descent sub def
+
+ % Define these in case they're not in the FontInfo (also, here
+ % they're easier to get to.
+ /UnderlinePosition 1 def
+ /UnderlineThickness 1 def
+
+ % Get the underline position and thickness if they're defined.
+ currentdict /FontInfo known {
+ FontInfo
+
+ dup /UnderlinePosition known {
+ dup /UnderlinePosition get
+ 0 exch FontMatrix transform exch pop
+ /UnderlinePosition exch def
+ } if
+
+ dup /UnderlineThickness known {
+ /UnderlineThickness get
+ 0 exch FontMatrix transform exch pop
+ /UnderlineThickness exch def
+ } if
+
+ } if
+ currentdict
+ end
+} bind def
+
+% composite fonts for ASCII-EUC mixed string
+% Version 1.2 1/31/1990
+% Orignal Ken'ichi HANDA (handa@etl.go.jp)
+% Modified Norio Katayama (katayama@rd.nacsis.ac.jp),1998
+% Extend & Fix Koji Nakamaru (maru@on.cs.keio.ac.jp), 1999
+% Anyone can freely copy, modify, distribute this program.
+
+/copyfont { % font-dic extra-entry-count copyfont font-dic
+ 1 index maxlength add dict begin
+ { 1 index /FID ne 2 index /UniqueID ne and
+ {def} {pop pop} ifelse
+ } forall
+ currentdict
+ end
+} bind def
+
+/compositefont { % ASCIIFontName EUCFontName RomanScale RomanOffset Rot(T/F) compositefont font
+ /RomanRotation exch def
+ /RomanOffset exch def
+ /RomanScale exch def
+ userdict /fixeucfont_dict known not {
+ userdict begin
+ /fixeucfont_dict 2 dict begin
+ /UpperByteEncoding [
+ 16#00 1 16#20 { pop 0 } for
+ 16#21 1 16#28 { 16#20 sub } for
+ 16#29 1 16#2F { pop 0 } for
+ 16#30 1 16#74 { 16#27 sub } for
+ 16#75 1 16#FF { pop 0 } for
+ ] def
+ /LowerByteEncoding [
+ 16#00 1 16#A0 { pop /.notdef } for
+ 16#A1 1 16#FE { 16#80 sub 16 2 string cvrs
+ (cXX) dup 1 4 -1 roll
+ putinterval cvn } for
+ /.notdef
+ ] def
+ currentdict
+ end def
+ end
+ } if
+ findfont dup /FontType get 0 eq {
+ 14 dict begin
+ %
+ % 7+8 bit EUC font
+ %
+ 12 dict begin
+ /EUCFont exch def
+ /FontInfo (7+8 bit EUC font) readonly def
+ /PaintType 0 def
+ /FontType 0 def
+ /FontMatrix matrix def
+ % /FontName
+ /Encoding fixeucfont_dict /UpperByteEncoding get def
+ /FMapType 2 def
+ EUCFont /WMode known
+ { EUCFont /WMode get /WMode exch def }
+ { /WMode 0 def } ifelse
+ /FDepVector [
+ EUCFont /FDepVector get 0 get
+ [ 16#21 1 16#28 {} for 16#30 1 16#74 {} for ]
+ {
+ 13 dict begin
+ /EUCFont EUCFont def
+ /UpperByte exch 16#80 add def
+ % /FontName
+ /FontInfo (EUC lower byte font) readonly def
+ /PaintType 0 def
+ /FontType 3 def
+ /FontMatrix matrix def
+ /FontBBox {0 0 0 0} def
+ /Encoding
+ fixeucfont_dict /LowerByteEncoding get def
+ % /UniqueID
+ % /WMode
+ /BuildChar {
+ gsave
+ exch dup /EUCFont get setfont
+ /UpperByte get
+ 2 string
+ dup 0 4 -1 roll put
+ dup 1 4 -1 roll put
+ dup stringwidth setcharwidth
+ 0 0 moveto show
+ grestore
+ } bind def
+ currentdict
+ end
+ /lowerbytefont exch definefont
+ } forall
+ ] def
+ currentdict
+ end
+ /eucfont exch definefont
+ exch
+ findfont 1 copyfont dup begin
+ RomanRotation {
+ /FontMatrix FontMatrix
+ [ 0 RomanScale neg RomanScale 0 RomanOffset neg 0 ]
+ matrix concatmatrix def
+ }{
+ /FontMatrix FontMatrix
+ [ RomanScale 0 0 RomanScale 0 RomanOffset ] matrix concatmatrix
+ def
+ /CDevProc
+ {pop pop pop pop 0 exch -1000 exch 2 div 880} def
+ } ifelse
+ end
+ /asciifont exch definefont
+ exch
+ /FDepVector [ 4 2 roll ] def
+ /FontType 0 def
+ /WMode 0 def
+ /FMapType 4 def
+ /FontMatrix matrix def
+ /Encoding [0 1] def
+ /FontBBox {0 0 0 0} def
+% /FontHeight 1.0 def % XXXX
+ /FontHeight RomanScale 1.0 ge { RomanScale }{ 1.0 } ifelse def
+ /Descent -0.3 def % XXXX
+ currentdict
+ end
+ /tmpfont exch definefont
+ pop
+ /tmpfont findfont
+ }{
+ pop findfont 0 copyfont
+ } ifelse
+} def
+
+/slantfont { % FontName slant-degree slantfont font'
+ exch findfont 1 copyfont begin
+ [ 1 0 4 -1 roll 1 0 0 ] FontMatrix exch matrix concatmatrix
+ /FontMatrix exch def
+ currentdict
+ end
+} def
+
+% Function print line number (<string> # -)
+/# {
+ gsave
+ sx cw mul neg 2 div 0 rmoveto
+ f# setfont
+ c-show
+ grestore
+} bind def
+
+% -------- Some routines to enlight plain b/w printings ---------
+
+% Underline
+% width --
+/dounderline {
+ currentpoint
+ gsave
+ moveto
+ 0 currentfont /Descent get currentfontsize mul rmoveto
+ 0 rlineto
+ stroke
+ grestore
+} bind def
+
+% Underline a string
+% string --
+/dounderlinestring {
+ stringwidth pop
+ dounderline
+} bind def
+
+/UL {
+ /ul exch store
+} bind def
+
+% Draw a box of WIDTH wrt current font
+% width --
+/dobox {
+ currentpoint
+ gsave
+ newpath
+ moveto
+ 0 currentfont /Descent get currentfontsize mul rmoveto
+ dup 0 rlineto
+ 0 currentfont /FontHeight get currentfontsize mul rlineto
+ neg 0 rlineto
+ closepath
+ stroke
+ grestore
+} bind def
+
+/BX {
+ /bx exch store
+} bind def
+
+% Box a string
+% string --
+/doboxstring {
+ stringwidth pop
+ dobox
+} bind def
+
+%
+% ------------- Color routines ---------------
+%
+/FG /setrgbcolor load def
+
+% Draw the background
+% width --
+/dobackground {
+ currentpoint
+ gsave
+ newpath
+ moveto
+ 0 currentfont /Descent get currentfontsize mul rmoveto
+ dup 0 rlineto
+ 0 currentfont /FontHeight get currentfontsize mul rlineto
+ neg 0 rlineto
+ closepath
+ bgcolor aload pop setrgbcolor
+ fill
+ grestore
+} bind def
+
+% Draw bg for a string
+% string --
+/dobackgroundstring {
+ stringwidth pop
+ dobackground
+} bind def
+
+
+/BG {
+ dup /bg exch store
+ { mark 4 1 roll ] /bgcolor exch store } if
+} bind def
+
+
+/Show {
+ bg { dup dobackgroundstring } if
+ ul { dup dounderlinestring } if
+ bx { dup doboxstring } if
+ show
+} bind def
+
+% Function T(ab), jumps to the n-th tabulation in the current line
+/T {
+ cw mul x0 add
+ bg { dup currentpoint pop sub dobackground } if
+ ul { dup currentpoint pop sub dounderline } if
+ bx { dup currentpoint pop sub dobox } if
+ y0 moveto
+} bind def
+
+% Function n: move to the next line
+/n {
+ /y0 y0 bfs sub store
+ x0 y0 moveto
+} bind def
+
+% Function N: show and move to the next line
+/N {
+ Show
+ /y0 y0 bfs sub store
+ x0 y0 moveto
+} bind def
+
+/S {
+ Show
+} bind def
+
+%%BeginResource: procset a2ps-a2ps-hdr 2.0 2
+%%Copyright: (c) 1988, 89, 90, 91, 92, 93 Miguel Santana
+%%Copyright: (c) 1995, 96, 97, 98 Akim Demaille, Miguel Santana
+% Function title: prints page header.
+% <ct> <rt> <lt> are passed as argument
+/title {
+ % 1. Draw the background
+ x v get y v get moveto
+ gsave
+ 0 th 2 div neg rmoveto
+ th setlinewidth
+ 0.95 setgray
+ pw 0 rlineto stroke
+ grestore
+ % 2. Border it
+ gsave
+ 0.7 setlinewidth
+ pw 0 rlineto
+ 0 th neg rlineto
+ pw neg 0 rlineto
+ closepath stroke
+ grestore
+ % stk: ct rt lt
+ x v get y v get th sub 1 add moveto
+%%IncludeResource: font Helvetica
+ fHelvetica fnfs 0.8 mul scalefont setfont
+ % 3. The left title
+ gsave
+ dup stringwidth pop fnfs 0.8 mul add exch % leave space took on stack
+ fnfs 0.8 mul hm rmoveto
+ show % left title
+ grestore
+ exch
+ % stk: ct ltw rt
+ % 4. the right title
+ gsave
+ dup stringwidth pop fnfs 0.8 mul add exch % leave space took on stack
+ dup
+ pw exch stringwidth pop fnfs 0.8 mul add sub
+ hm
+ rmoveto
+ show % right title
+ grestore
+ % stk: ct ltw rtw
+ % 5. the center title
+ gsave
+ pw 3 1 roll
+ % stk: ct pw ltw rtw
+ 3 copy
+ % Move to the center of the left room
+ sub add 2 div hm rmoveto
+ % What is the available space in here?
+ add sub fnfs 0.8 mul sub fnfs 0.8 mul sub
+ % stk: ct space_left
+%%IncludeResource: font Helvetica-Bold
+ fHelvetica-Bold fnfs scalefont setfont
+ cfshow
+ grestore
+} bind def
+
+% Function border: prints virtual page border
+/border { %def
+ gsave % print four sides
+ 0 setgray
+ x v get y v get moveto
+ 0.7 setlinewidth % of the square
+ pw 0 rlineto
+ 0 ph neg rlineto
+ pw neg 0 rlineto
+ closepath stroke
+ grestore
+} bind def
+
+% Function water: prints a water mark in background
+/water { %def
+ gsave
+ scx scy moveto rotate
+%%IncludeResource: font Times-Bold
+ fTimes-Bold 100 scalefont setfont
+ .97 setgray
+ dup stringwidth pop 2 div neg -50 rmoveto
+ show
+ grestore
+} bind def
+
+% Function rhead: prints the right header
+/rhead { %def
+ lx ly moveto
+ fHelvetica fnfs 0.8 mul scalefont setfont
+ l-show
+} bind def
+
+% Function footer (cf rf lf -> -)
+/footer {
+ fHelvetica fnfs 0.8 mul scalefont setfont
+ dx dy moveto
+ show
+
+ snx sny moveto
+ l-show
+
+ fnx fny moveto
+ c-show
+} bind def
+%%EndResource
+%%BeginResource: procset a2ps-black+white-Prolog 2.0 1
+
+% Function T(ab), jumps to the n-th tabulation in the current line
+/T {
+ cw mul x0 add y0 moveto
+} bind def
+
+% Function n: move to the next line
+/n { %def
+ /y0 y0 bfs sub store
+ x0 y0 moveto
+} bind def
+
+% Function N: show and move to the next line
+/N {
+ Show
+ /y0 y0 bfs sub store
+ x0 y0 moveto
+} bind def
+
+/S {
+ Show
+} bind def
+
+/p {
+ false UL
+ false BX
+ fCourier bfs scalefont setfont
+ Show
+} bind def
+
+/sy {
+ false UL
+ false BX
+ fSymbol bfs scalefont setfont
+ Show
+} bind def
+
+/k {
+ false UL
+ false BX
+ fCourier-Oblique bfs scalefont setfont
+ Show
+} bind def
+
+/K {
+ false UL
+ false BX
+ fCourier-Bold bfs scalefont setfont
+ Show
+} bind def
+
+/c {
+ false UL
+ false BX
+ fCourier-Oblique bfs scalefont setfont
+ Show
+} bind def
+
+/C {
+ false UL
+ false BX
+ fCourier-BoldOblique bfs scalefont setfont
+ Show
+} bind def
+
+/l {
+ false UL
+ false BX
+ fHelvetica bfs scalefont setfont
+ Show
+} bind def
+
+/L {
+ false UL
+ false BX
+ fHelvetica-Bold bfs scalefont setfont
+ Show
+} bind def
+
+/str{
+ false UL
+ false BX
+ fTimes-Roman bfs scalefont setfont
+ Show
+} bind def
+
+/e{
+ false UL
+ true BX
+ fHelvetica-Bold bfs scalefont setfont
+ Show
+} bind def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+%%IncludeResource: font Courier
+%%IncludeResource: font Courier-Oblique
+%%IncludeResource: font Courier-Bold
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Symbol
+%%IncludeResource: font Courier-BoldOblique
+%%BeginResource: encoding ISO-8859-1Encoding
+/ISO-8859-1Encoding [
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
+/parenleft /parenright /asterisk /plus /comma /minus /period /slash
+/zero /one /two /three /four /five /six /seven
+/eight /nine /colon /semicolon /less /equal /greater /question
+/at /A /B /C /D /E /F /G
+/H /I /J /K /L /M /N /O
+/P /Q /R /S /T /U /V /W
+/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
+/quoteleft /a /b /c /d /e /f /g
+/h /i /j /k /l /m /n /o
+/p /q /r /s /t /u /v /w
+/x /y /z /braceleft /bar /braceright /asciitilde /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/space /exclamdown /cent /sterling /currency /yen /brokenbar /section
+/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
+/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /bullet
+/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
+/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
+/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
+/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
+/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
+/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
+/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
+/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
+/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis
+] def
+%%EndResource
+% Initialize page description variables.
+/sh 612 def
+/sw 792 def
+/llx 24 def
+/urx 768 def
+/ury 588 def
+/lly 24 def
+/#copies 1 def
+/th 20.000000 def
+/fnfs 15 def
+/bfs 8.000000 def
+/cw 4.800000 def
+
+% Dictionary for ISO-8859-1 support
+/iso1dict 8 dict begin
+ /fCourier ISO-8859-1Encoding /Courier reencode_font
+ /fCourier-Bold ISO-8859-1Encoding /Courier-Bold reencode_font
+ /fCourier-BoldOblique ISO-8859-1Encoding /Courier-BoldOblique reencode_font
+ /fCourier-Oblique ISO-8859-1Encoding /Courier-Oblique reencode_font
+ /fHelvetica ISO-8859-1Encoding /Helvetica reencode_font
+ /fHelvetica-Bold ISO-8859-1Encoding /Helvetica-Bold reencode_font
+ /fTimes-Bold ISO-8859-1Encoding /Times-Bold reencode_font
+ /fTimes-Roman ISO-8859-1Encoding /Times-Roman reencode_font
+currentdict end def
+/bgcolor [ 0 0 0 ] def
+/bg false def
+/ul false def
+/bx false def
+% The font for line numbering
+/f# /Helvetica findfont bfs .6 mul scalefont def
+/fSymbol /Symbol findfont def
+/hm fnfs 0.25 mul def
+/pw
+ cw 154.400000 mul
+def
+/ph
+ 517.600000 th add
+def
+/pmw 0 def
+/pmh 0 def
+/v 0 def
+/x [
+ 0
+] def
+/y [
+ pmh ph add 0 mul ph add
+] def
+/scx sw 2 div def
+/scy sh 2 div def
+/snx urx def
+/sny lly 2 add def
+/dx llx def
+/dy sny def
+/fnx scx def
+/fny dy def
+/lx snx def
+/ly ury fnfs 0.8 mul sub def
+/sx 0 def
+/tab 8 def
+/x0 0 def
+/y0 0 def
+%%EndSetup
+
+%%Page: (1) 1
+%%BeginPageSetup
+/pagesave save def
+sh 0 translate 90 rotate
+%%EndPageSetup
+iso1dict begin
+gsave
+llx lly 12 add translate
+/v 0 store
+/x0 x v get 3.360000 add sx cw mul add store
+/y0 y v get bfs th add sub store
+x0 y0 moveto
+(<?xml version='1.0' encoding='us-ascii'?>) p n
+(<!DOCTYPE application PUBLIC "" "desktop.dtd">) N
+(<application title="PYCALCULATOR component" date="9/12/2001" author="C Caremoli" appId="PYCALCULATOR" >) N
+(<desktop>) N
+(<!-- ### MENUBAR ### -->) N
+(<menubar>) N
+( <menu-item label-id="PYCALCULATOR" item-id="90" pos-id="3">) N
+( <popup-item item-id="941" label-id="Lancer IHM" icon-id="" tooltip-id="Lancer IHM PYCALCULATOR" accel-id="" toggle-id="" execute-action=""/>) N
+( </menu-item>) N
+(</menubar>) N
+(<!-- ### TOOLBAR ### -->) N
+(<toolbar label-id="PYCALCULATOR">) N
+( <toolbutton-item item-id="941" label-id="Lancer IHM" icon-id="ExecPYCALCULATOR.png" tooltip-id="Lancer IHM PYCALCULATOR" accel-id="" toggle-id="" execute-action=") N
+("/>) N
+(</toolbar>) N
+(</desktop>) N
+(</application>) N
+() N
+(PYCALCULATOR_en.xml) (Page 1/1) (Oct 14, 03 10:41) title
+border
+grestore
+(Printed by Nicolas CROUZET - SFME/LGLS) rhead
+(PYCALCULATOR_en.xml) (1/1) (Tuesday November 04, 2003) footer
+end % of iso1dict
+pagesave restore
+showpage
+
+%%Trailer
+end
+%%EOF
--- /dev/null
+<?xml version='1.0' encoding='us-ascii'?>
+<!DOCTYPE application PUBLIC "" "desktop.dtd">
+<application title="CALCULATOR component" date="9/12/2001" author="C Caremoli" appId="CALCULATOR" >
+<desktop>
+<!-- ### MENUBAR ### -->
+<menubar>
+
+ <menu-item label-id="File" item-id="1" pos-id="">
+ <submenu label-id="Hello" item-id="19" pos-id="9">
+ <popup-item item-id="190" pos-id="" label-id="MyNewItem" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
+ </submenu>
+ <endsubmenu />
+ </menu-item>
+
+ <menu-item label-id="CALCULATOR" item-id="90" pos-id="3">
+ <popup-item item-id="901" label-id="Get banner" icon-id="" tooltip-id="Get CALCULATOR banner" accel-id="" toggle-id="" execute-action=""/>
+
+ </menu-item>
+</menubar>
+<!-- ### TOOLBAR ### -->
+<toolbar label-id="CALCULATOR">
+ <toolbutton-item item-id="901" label-id="Get banner" icon-id="ExecCALCULATOR.png" tooltip-id="Get CALCULATOR banner" accel-id="" toggle-id="" execute-action=""/>
+</toolbar>
+</desktop>
+</application>
+
--- /dev/null
+<?xml version='1.0' encoding='us-ascii'?>
+<!DOCTYPE application PUBLIC "" "desktop.dtd">
+<application title="CALCULATOR component" date="9/12/2001" author="C Caremoli" appId="CALCULATOR" >
+<desktop>
+<!-- ### MENUBAR ### -->
+<menubar>
+ <menu-item label-id="File" item-id="1" pos-id="">
+ <submenu label-id="Hello" item-id="19" pos-id="9">
+ <popup-item item-id="190" pos-id="" label-id="MyNewItem" icon-id="" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
+ </submenu>
+ <endsubmenu />
+ </menu-item>
+ <menu-item label-id="CALCULATOR" item-id="90" pos-id="3">
+ <popup-item item-id="941" label-id="Lancer IHM" icon-id="" tooltip-id="Lancer IHM CALCULATOR" accel-id="" toggle-id="" execute-action=""/>
+ </menu-item>
+</menubar>
+<!-- ### TOOLBAR ### -->
+<toolbar label-id="CALCULATOR">
+ <toolbutton-item item-id="941" label-id="Lancer IHM" icon-id="ExecCALCULATOR.png" tooltip-id="Lancer IHM CALCULATOR" accel-id="" toggle-id="" execute-action=""/>
+</toolbar>
+</desktop>
+</application>
+
--- /dev/null
+language=en
--- /dev/null
+#include "CALCULATOR.hxx"
+#include "FIELDClient.hxx"
+#include "MESHClient.hxx"
+#include <string>
+#include <strstream>
+using namespace std;
+#include "MEDMEM_Mesh_i.hxx"
+#include "MEDMEM_Support_i.hxx"
+#include "MEDMEM_FieldDouble_i.hxx"
+#include <iomanip>
+#include <cmath>
+using namespace MEDMEM;
+
+CALCULATOR::CALCULATOR(CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId * contId,
+ const char *instanceName,
+ const char *interfaceName) :
+ Engines_Component_i(orb, poa, contId, instanceName, interfaceName,true)
+{
+ MESSAGE("activate object");
+ _thisObj = this ;
+ _id = _poa->activate_object(_thisObj);
+}
+
+CALCULATOR::~CALCULATOR()
+{
+}
+
+CORBA::Double CALCULATOR::norm2(SALOME_MED::FIELDDOUBLE_ptr field1)
+{
+ beginService( "CALCULATOR::norm2");
+ BEGIN_OF("CALCULATOR::Norm2(SALOME_MED::FIELDDOUBLE_ptr field1)");
+ // Create a local field from corba field, apply method normMax on it.
+ // When exiting the function, f1 is deleted, and with it the remote corba field.
+ FIELDClient<double> f1(field1);
+ CORBA::Double norme = f1.norm2();
+ END_OF("CALCULATOR::Norm2(SALOME_MED::FIELDDOUBLE_ptr field1)");
+ endService( "CALCULATOR::norm2");
+ return norme;
+}
+
+CORBA::Double CALCULATOR::normL2(SALOME_MED::FIELDDOUBLE_ptr field1)
+{
+ beginService( "CALCULATOR::normL2");
+ BEGIN_OF("CALCULATOR::NormL2(SALOME_MED::FIELDDOUBLE_ptr field1)");
+
+ // Create a local field (on the stack) from corba field, apply method normMax on it.
+ // When exiting the function, FIELDClient f1 is deleted, and with it the remote corba field.
+ FIELDClient<double>f1(field1);
+ CORBA::Double norme = f1.normL2();
+ // Send a notification message to supervision
+ ostringstream message("CALCULATOR::normL2 : ");
+ message << norme;
+ sendMessage("warning",message.str().c_str());
+ END_OF("CALCULATOR::NormL2(SALOME_MED::FIELDDOUBLE_ptr field1)");
+ endService( "CALCULATOR::normL2");
+ return norme;
+}
+
+CORBA::Double CALCULATOR::normMax(SALOME_MED::FIELDDOUBLE_ptr field1)
+{
+ beginService( "CALCULATOR::normMax");
+ BEGIN_OF("CALCULATOR::NormMax(SALOME_MED::FIELDDOUBLE_ptr field1)");
+ // An other way to do it : create an local field on the heap, inside an auto_ptr.
+ // When exiting the function, auto_ptr is deleted, and with it the local field and
+ // the remote field if ownership was transferred.
+ auto_ptr<FIELD<double> > f1 (new FIELDClient<double> (field1) );
+ CORBA::Double norme = f1->normMax();
+ END_OF("CALCULATOR::NormMax(SALOME_MED::FIELDDOUBLE_ptr field1)");
+ endService( "CALCULATOR::normMax");
+ return norme;
+}
+
+CORBA::Double CALCULATOR::normL1(SALOME_MED::FIELDDOUBLE_ptr field1)
+{
+ beginService( "CALCULATOR::normL1");
+ BEGIN_OF("CALCULATOR::NormL1(SALOME_MED::FIELDDOUBLE_ptr field1)");
+ auto_ptr<FIELD<double> > f1 (new FIELDClient<double> (field1) );
+ CORBA::Double norme = f1->normL1();
+ END_OF("CALCULATOR::Norm2(SALOME_MED::FIELDDOUBLE_ptr field1)");
+ endService( "CALCULATOR::normL1");
+ return norme;
+}
+
+
+SALOME_MED::FIELDDOUBLE_ptr CALCULATOR::applyLin(SALOME_MED::FIELDDOUBLE_ptr field1,CORBA::Double a,CORBA::Double b)
+{
+ beginService( "CALCULATOR::applyLin");
+ BEGIN_OF("applyLin(SALOME_MED::FIELDDOUBLE_ptr field1,CORBA::Double a,CORBA::Double b)");
+ // create a local field on the heap, because it has to remain after exiting the function
+ FIELD<double> * f1 = new FIELDClient<double>(field1);
+ f1->applyLin(a,b);
+
+ // create servant from f1, give it the property of c++ field (parameter true).
+ // This imply that when the client will release it's field, it will delete NewField,
+ // and f1.
+ FIELDDOUBLE_i * NewField = new FIELDDOUBLE_i(f1,true) ;
+ // activate object
+ SALOME_MED::FIELDDOUBLE_ptr myFieldIOR = NewField->_this() ;
+
+ END_OF("applyLin(SALOME_MED::FIELDDOUBLE_ptr field1,CORBA::Double a,CORBA::Double b)");
+ endService( "CALCULATOR::applyLin");
+ return myFieldIOR;
+}
+
+SALOME_MED::FIELDDOUBLE_ptr CALCULATOR::add(SALOME_MED::FIELDDOUBLE_ptr field1, SALOME_MED::FIELDDOUBLE_ptr field2)
+ throw ( SALOME::SALOME_Exception )
+{
+ beginService( "CALCULATOR::add");
+ BEGIN_OF("CALCULATOR::add(SALOME_MED::FIELDDOUBLE_ptr field1, SALOME_MED::FIELDDOUBLE_ptr field2)");
+ // Create local fields from corba field
+ FIELDClient<double> f1(field1);
+ FIELDClient<double> f2(field2);
+
+ // Create new c++ field on the heap by copying f1, add f2 to it.
+ FIELD<double>* fres = new FIELD<double>(f1);
+ // catch exception for non compatible fields
+ try
+ {
+ *fres+=f2;
+ }
+ catch(MEDEXCEPTION)
+ {
+ throw(SALOME_Exception(LOCALIZED("Fields are not compatible")));
+ }
+ // create CORBA field from c++ toField. give property to servant (true)
+ FIELDDOUBLE_i * myFieldDoubleI = new FIELDDOUBLE_i(fres,true);
+ SALOME_MED::FIELDDOUBLE_ptr myFieldIOR = myFieldDoubleI->_this() ;
+
+ END_OF("CALCULATOR::add(SALOME_MED::FIELDDOUBLE_ptr field1, SALOME_MED::FIELDDOUBLE_ptr field2)");
+ endService( "CALCULATOR::add");
+ return myFieldIOR;
+}
+
+void CALCULATOR::cloneField(SALOME_MED::FIELDDOUBLE_ptr field,
+ SALOME_MED::FIELDDOUBLE_out clone1, SALOME_MED::FIELDDOUBLE_out clone2,
+ SALOME_MED::FIELDDOUBLE_out clone3, SALOME_MED::FIELDDOUBLE_out clone4)
+{
+ beginService( "CALCULATOR::cloneField");
+ BEGIN_OF("CALCULATOR::cloneField");
+
+ // load local field, using MED ressource file pointe.med
+ FIELDClient<double> f(field);
+
+ // create three c++ field on the heap by copying myField_
+ // All this fields share with f the same SUPPORT and MESH client.
+ // Both SUPPORT and MESH client are connected to a reference count, and will
+ // be deleted after release of all the fields.
+ FIELD<double>* fc1 = new FIELD<double>(f);
+ FIELD<double>* fc2 = new FIELD<double>(f);
+ FIELD<double>* fc3 = new FIELD<double>(f);
+ FIELD<double>* fc4 = new FIELD<double>(f);
+
+ // Initialize out references :
+ // Create three CORBA clones with cloned c++ fields - give property of c++ fields to servant (true)
+ FIELDDOUBLE_i * myClone1 = new FIELDDOUBLE_i(fc1, true);
+ FIELDDOUBLE_i * myClone2 = new FIELDDOUBLE_i(fc2, true);
+ FIELDDOUBLE_i * myClone3 = new FIELDDOUBLE_i(fc3, true);
+ FIELDDOUBLE_i * myClone4 = new FIELDDOUBLE_i(fc4, true);
+ clone1 = myClone1->_this();
+ clone2 = myClone2->_this();
+ clone3 = myClone3->_this();
+ clone4 = myClone4->_this();
+ END_OF("CALCULATOR::cloneField");
+ endService( "CALCULATOR::cloneField");
+ return;
+}
+
+void CALCULATOR::printField(SALOME_MED::FIELDDOUBLE_ptr field)
+{
+ beginService( "CALCULATOR::printField");
+
+ // Create a local field from corba field.
+ // Use auto_ptr to perform automatic deletion after usage.
+ // The deletion of the FIELDClient will delete the remote Corba object.
+ auto_ptr<FIELD<double> > myField (new FIELDClient<double> (field) );
+
+ const SUPPORT * mySupport = myField->getSupport();
+ cout << "\n------------------ Field "<< myField->getName() << " : " <<myField->getDescription() << "------------------" << endl ;
+ int NumberOfComponents = myField->getNumberOfComponents() ;
+ cout << "- Type : " << mySupport->getEntity() << endl;
+ cout << "- Nombre de composantes : "<< NumberOfComponents << endl ;
+ cout << "- Nombre de valeurs : "<< myField->getNumberOfValues() << endl ;
+ for (int i=1; i<NumberOfComponents+1; i++) {
+ cout << " - composante "<<i<<" :"<<endl ;
+ cout << " - nom : "<<myField->getComponentName(i)<< endl;
+ cout << " - description : "<<myField->getComponentDescription(i) << endl;
+ cout << " - units : "<<myField->getMEDComponentUnit(i) << endl;
+ }
+ cout << "- iteration :" << endl ;
+ cout << " - numero : " << myField->getIterationNumber()<< endl ;
+ cout << " - ordre : " << myField->getOrderNumber()<< endl ;
+ cout << " - temps : " << myField->getTime()<< endl ;
+ cout << "- Type : " << myField->getValueType()<< endl;
+
+ cout << "- Valeurs :"<<endl;
+ int NumberOf = mySupport->getNumberOfElements(MED_ALL_ELEMENTS);
+
+ bool displayNode = mySupport->isOnAllElements() && mySupport->getEntity()==MED_NODE;
+ bool displayBary = mySupport->isOnAllElements() && mySupport->getEntity()==MED_CELL;
+ int dim_space = mySupport->getMesh()->getSpaceDimension();
+ const double * coord = mySupport->getMesh()->getCoordinates(MED_FULL_INTERLACE);
+
+ auto_ptr<FIELD<double> > barycenter(0);
+ if(displayBary)
+ barycenter=auto_ptr<FIELD<double> > (mySupport->getMesh()->getBarycenter(mySupport)) ;
+
+ const int width=10;
+ for (int i=1; i<NumberOf+1; i++) {
+ const double * value = myField->getValueI(MED_FULL_INTERLACE,i) ;
+ if(displayNode)
+ {
+ int N=(i-1)*dim_space;
+ cout << setw(width) << i << setw(width) << coord[N] << " " << setw(width) << coord[N+1]<< " " << setw(width) << coord[N+2] << " : " ;
+ }
+ if(displayBary)
+ cout << setw(width) << i << setw(width) << barycenter->getValueIJ(i,1) << " " << setw(width) << barycenter->getValueIJ(i,2)
+ << " " << setw(width) << barycenter->getValueIJ(i,3) << " : " ;
+ for (int j=0; j<NumberOfComponents; j++)
+ cout << value[j]<< " ";
+ cout<<endl;
+ }
+ cout << endl;
+ cout << "Norme euclidienne : " << myField->norm2() << endl;
+ cout << "Norme max : " << myField->normMax() << endl;
+ cout << "------------------------------------------------------------------------" << endl << endl;
+ endService( "CALCULATOR::printField");
+ return;
+
+}
+
+CORBA::Double CALCULATOR::convergenceCriteria(SALOME_MED::FIELDDOUBLE_ptr field)
+{
+ beginService( "CALCULATOR::convergenceCriteria");
+ BEGIN_OF("CALCULATOR::convergenceCriteria(SALOME_MED::FIELDDOUBLE_ptr field)");
+
+ double criteria=1;
+ static auto_ptr<FIELD<double> > fold(0);
+ auto_ptr<FIELD<double> > fnew (new FIELDClient<double> (field) );
+ if (fold.get() == NULL) // if old field is not set, set it and return 1
+ fold=fnew;
+ else
+ {
+ // if size of fields are not equal, return 1
+ const int size=fold->getNumberOfValues()*fold->getNumberOfComponents();
+ if ( size == fnew->getNumberOfValues()*fnew->getNumberOfComponents() )
+ {
+ MED_EN::medModeSwitch mode=fold->getvalue()->getMode(); // storage mode
+ const double* oldVal= fold->getValue(mode); // retrieve values
+ const double* newVal= fnew->getValue(mode);
+ criteria=0.0;
+ double ecart_rel=0.0;
+ for (unsigned i=0; i!=size; ++i) // compute criteria
+ {
+ if ( oldVal[i] != 0.0)
+ {
+ ecart_rel = std::abs( (oldVal[i]-newVal[i])/oldVal[i] );
+ if ( ecart_rel>criteria )
+ criteria=ecart_rel;
+ }
+ }
+
+ }
+ }
+
+ endService( "CALCULATOR::convergenceCriteria");
+ END_OF("CALCULATOR::convergenceCriteria(SALOME_MED::FIELDDOUBLE_ptr field1)");
+ return criteria;
+}
+
+
+
+extern "C"
+{
+ PortableServer::ObjectId * CALCULATOREngine_factory(
+ CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId * contId,
+ const char *instanceName,
+ const char *interfaceName)
+ {
+ MESSAGE("PortableServer::ObjectId * CALCULATOREngine_factory()");
+ SCRUTE(interfaceName);
+ CALCULATOR * myCALCULATOR
+ = new CALCULATOR(orb, poa, contId, instanceName, interfaceName);
+ return myCALCULATOR->getId() ;
+ }
+}
--- /dev/null
+#ifndef _CALCULATOR_HXX_
+#define _CALCULATOR_HXX_
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(CALCULATOR_Gen)
+#include CORBA_CLIENT_HEADER(MED)
+#include "SALOME_Component_i.hxx"
+
+class CALCULATOR:
+ public POA_CALCULATOR_ORB::CALCULATOR_Gen,
+ public Engines_Component_i
+{
+
+public:
+ CALCULATOR(CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId * contId,
+ const char *instanceName,
+ const char *interfaceName);
+ virtual ~CALCULATOR();
+
+ CORBA::Double convergenceCriteria(SALOME_MED::FIELDDOUBLE_ptr field);
+ CORBA::Double normMax(SALOME_MED::FIELDDOUBLE_ptr field1);
+ CORBA::Double normL2(SALOME_MED::FIELDDOUBLE_ptr field1);
+ CORBA::Double norm2(SALOME_MED::FIELDDOUBLE_ptr field1);
+ CORBA::Double normL1(SALOME_MED::FIELDDOUBLE_ptr field1);
+ SALOME_MED::FIELDDOUBLE_ptr applyLin(SALOME_MED::FIELDDOUBLE_ptr field1,CORBA::Double a,CORBA::Double b);
+ SALOME_MED::FIELDDOUBLE_ptr add(SALOME_MED::FIELDDOUBLE_ptr field1, SALOME_MED::FIELDDOUBLE_ptr field2)
+ throw ( SALOME::SALOME_Exception );
+ void printField(SALOME_MED::FIELDDOUBLE_ptr field);
+ void cloneField(SALOME_MED::FIELDDOUBLE_ptr field, SALOME_MED::FIELDDOUBLE_out clone1, SALOME_MED::FIELDDOUBLE_out clone2,
+ SALOME_MED::FIELDDOUBLE_out clone3, SALOME_MED::FIELDDOUBLE_out clone4);
+};
+
+
+extern "C"
+ PortableServer::ObjectId * CALCULATOREngine_factory(
+ CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId * contId,
+ const char *instanceName,
+ const char *interfaceName);
+
+
+#endif
--- /dev/null
+import salome
+import SALOME
+import SALOME_MED
+
+################ GET A MED FIELD FROM FILE pointe.med ###################
+#
+# This test program is based on the field named fieldcelldoublevector in
+# med file $MED_ROOT_DIR/share/salome/resources/pointe.med
+from os import environ
+filePath=environ["MED_ROOT_DIR"]
+filePath=filePath+"/share/salome/resources/"
+medFile=filePath+"pointe.med"
+fieldname = "fieldcelldouble"
+
+# Launch the Med Component and use it to load into memory the test field
+print "Launch the Med Component: "
+med_comp = salome.lcc.FindOrLoadComponent("FactoryServer", "MED")
+
+# Get a Corba field proxy on the distant field (located in the med_comp server).
+try:
+ studyname = salome.myStudyName
+ studynameId = salome.myStudyId
+ print "We are working in the study ",studyname," with the ID ",studynameId
+ print "Read field ",fieldname
+ fieldcell = med_comp.readFieldInFile(medFile,studyname,fieldname,-1,-1)
+ fieldcelldouble = fieldcell._narrow(SALOME_MED.FIELDDOUBLE)
+except SALOME.SALOME_Exception, ex:
+ print ex.details
+ print ex.details.type
+ print ex.details.text
+ print ex.details.sourceFile
+ print ex.details.lineNumber
+ raise
+
+print "Description of Field : "
+print fieldcelldouble
+print fieldcelldouble.getName()
+print fieldcelldouble.getDescription()
+print fieldcelldouble.getNumberOfComponents()
+#
+#
+############## Load Calculator Component and test it ###################
+#
+#
+print "Load Calculator Component "
+# we need to import CALCULATOR_ORB to get a typed object (to perform narrowing)
+import CALCULATOR_ORB
+calculator = salome.lcc.FindOrLoadComponent("FactoryServer", "CALCULATOR")
+#
+print "Appel cloneField : fieldcelldouble -> f1,f2,f3,f4"
+(f1,f2,f3,f4)=calculator.cloneField(fieldcelldouble) # fieldcelldouble is consumed
+#
+calculator.printField(f1)
+print "Add fields f2+f3"
+f_add=calculator.add(f2, f3)
+calculator.printField(f_add)
+
+#
+print "Apply linear function"
+f_lin=calculator.applyLin(f4,2.0,1.0)
+#
+print "Appel Norme Max "
+norme=calculator.normMax(f_lin)
+print " -> norme = ",norme
+#
+print "End of Calculator Test!"
--- /dev/null
+# source path
+top_srcdir=@top_srcdir@
+top_builddir=../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/idl:${MED_ROOT_DIR}/idl/salome
+
+@COMMENCE@
+
+# Libraries targets
+
+LIB = libCALCULATOREngine.la
+LIB_SRC = CALCULATOR.cxx
+LIB_SERVER_IDL = CALCULATOR_Gen.idl
+LIB_CLIENT_IDL = SALOME_Component.idl SALOME_Comm.idl SALOME_Exception.idl SALOMEDS.idl Logger.idl MED.idl SALOMEDS_Attributes.idl
+
+
+EXPORT_PYSCRIPTS = CALCULATOR_TEST.py
+
+OMNIORB_IDLCXXFLAGS+=-I${MED_ROOT_DIR}/idl/salome
+
+# additionnal information to compil and link file
+
+CPPFLAGS += -I${KERNEL_ROOT_DIR}/include/salome -I${MED_ROOT_DIR}/include/salome $(MED2_INCLUDES) $(HDF5_INCLUDES)
+# CXXFLAGS += -I${KERNEL_ROOT_DIR}/include/salome
+
+LDFLAGS+= -lSalomeContainer -lOpUtil -L${KERNEL_ROOT_DIR}/lib/salome $(MED2_LIBS) $(HDF5_LIBS) -L${MED_ROOT_DIR}/lib/salome -lMEDClientcmodule
+# -lmedmem -lMEDWrapper_V2_1 -lMEDWrapperBase
+
+MED.hh MEDSK.cc: MED.idl
+ omniidl -bcxx -Wbtp -I$(top_builddir)/idl -I${KERNEL_ROOT_DIR}/idl/salome $^
+
+
+
+# Executables targets
+
+@CONCLUDE@
+
--- /dev/null
+
+# Generated python file of Graph aNewDataFlow
+
+from SuperV import *
+
+# Graph creation of aNewDataFlow
+def DefaNewDataFlow() :
+ aNewDataFlow = Graph( 'aNewDataFlow' )
+ aNewDataFlow.SetName( 'aNewDataFlow' )
+ aNewDataFlow.SetAuthor( '' )
+ aNewDataFlow.SetComment( '' )
+ aNewDataFlow.Coords( 0 , 0 )
+
+ # Creation of Factory Nodes
+
+ normL2 = aNewDataFlow.FNode( 'CALCULATOR' , 'CALCULATOR_Gen' , 'normL2' )
+ normL2.SetName( 'normL2' )
+ normL2.SetAuthor( '' )
+ normL2.SetContainer( 'localhost/FactoryServer' )
+ normL2.SetComment( 'normL2 from CALCULATOR' )
+ normL2.Coords( 496 , 144 )
+ InormL2field = normL2.GetInPort( 'field' )
+ InormL2Gate = normL2.GetInPort( 'Gate' )
+ OnormL2return = normL2.GetOutPort( 'return' )
+ OnormL2Gate = normL2.GetOutPort( 'Gate' )
+
+ readFieldInFile = aNewDataFlow.FNode( 'MED' , 'MED' , 'readFieldInFile' )
+ readFieldInFile.SetName( 'readFieldInFile' )
+ readFieldInFile.SetAuthor( '' )
+ readFieldInFile.SetContainer( 'localhost/FactoryServer' )
+ readFieldInFile.SetComment( 'readFieldInFile from MED' )
+ readFieldInFile.Coords( 271 , 144 )
+ IreadFieldInFilefileName = readFieldInFile.GetInPort( 'fileName' )
+ IreadFieldInFilestudyName = readFieldInFile.GetInPort( 'studyName' )
+ IreadFieldInFilefieldName = readFieldInFile.GetInPort( 'fieldName' )
+ IreadFieldInFileordre = readFieldInFile.GetInPort( 'ordre' )
+ IreadFieldInFileiter = readFieldInFile.GetInPort( 'iter' )
+ IreadFieldInFileGate = readFieldInFile.GetInPort( 'Gate' )
+ OreadFieldInFilereturn = readFieldInFile.GetOutPort( 'return' )
+ OreadFieldInFileGate = readFieldInFile.GetOutPort( 'Gate' )
+
+ # Creation of InLine Nodes
+ Pyinit_parameter = []
+ Pyinit_parameter.append( '# ' )
+ Pyinit_parameter.append( '# init_parameter() ' )
+ Pyinit_parameter.append( '# ' )
+ Pyinit_parameter.append( '# this function initialize med files paths, field names ' )
+ Pyinit_parameter.append( '# ' )
+ Pyinit_parameter.append( '# returned arguments : ' )
+ Pyinit_parameter.append( '# ' )
+ Pyinit_parameter.append( '# - fromMedFile (string) : path of file containing fromfieldname ' )
+ Pyinit_parameter.append( '# - fromfieldname (string) : name of field ' )
+ Pyinit_parameter.append( '# - myStudyId (string) : name of study ' )
+ Pyinit_parameter.append( '# ' )
+ Pyinit_parameter.append( 'def init_parameter(): ' )
+ Pyinit_parameter.append( ' import batchmode_salome ' )
+ Pyinit_parameter.append( ' StudyName = batchmode_salome.myStudyName ' )
+ Pyinit_parameter.append( ' print "init_parameter : myStudyName = ", StudyName ' )
+ Pyinit_parameter.append( ' from os import environ ' )
+ Pyinit_parameter.append( ' filePath=environ["MED_ROOT_DIR"] ' )
+ Pyinit_parameter.append( ' filePath=filePath+"/share/salome/resources/" ' )
+ Pyinit_parameter.append( ' fromMedFile=filePath+"pointe.med" ' )
+ Pyinit_parameter.append( ' print "init_parameter : fromMedFile = ", fromMedFile ' )
+ Pyinit_parameter.append( ' fromfieldname="fieldcelldouble" ' )
+ Pyinit_parameter.append( ' return fromMedFile,fromfieldname,StudyName ' )
+ init_parameter = aNewDataFlow.INode( 'init_parameter' , Pyinit_parameter )
+ init_parameter.SetName( 'init_parameter' )
+ init_parameter.SetAuthor( '' )
+ init_parameter.SetComment( 'Compute Node' )
+ init_parameter.Coords( 6 , 147 )
+ Iinit_parameterGate = init_parameter.GetInPort( 'Gate' )
+ Oinit_parameterfromMedFile = init_parameter.OutPort( 'fromMedFile' , 'string' )
+ Oinit_parameterfromfieldname = init_parameter.OutPort( 'fromfieldname' , 'string' )
+ Oinit_parameterstudyId = init_parameter.OutPort( 'studyId' , 'string' )
+ Oinit_parameterGate = init_parameter.GetOutPort( 'Gate' )
+
+ # Creation of Links
+ Linit_parameterfromMedFilereadFieldInFilefileName = aNewDataFlow.Link( Oinit_parameterfromMedFile , IreadFieldInFilefileName )
+
+ Linit_parameterfromfieldnamereadFieldInFilefieldName = aNewDataFlow.Link( Oinit_parameterfromfieldname , IreadFieldInFilefieldName )
+
+ Linit_parameterstudyIdreadFieldInFilestudyName = aNewDataFlow.Link( Oinit_parameterstudyId , IreadFieldInFilestudyName )
+
+ LreadFieldInFilereturnnormL2field = aNewDataFlow.Link( OreadFieldInFilereturn , InormL2field )
+
+ # Input datas
+ IreadFieldInFileordre.Input( -1 )
+ IreadFieldInFileiter.Input( -1 )
+
+ # Output Ports of the graph
+ #OnormL2return = normL2.GetOutPort( 'return' )
+ return aNewDataFlow
+
+
+aNewDataFlow = DefaNewDataFlow()
--- /dev/null
+<!DOCTYPE SuperGraph>
+<supergraph>
+<dataflow>
+<info-list>
+<node>
+<component-name>?</component-name>
+ <interface-name>?</interface-name>
+ <node-name>aNewDataFlow</node-name>
+ <kind>1</kind>
+ <coupled-node>?</coupled-node>
+ <service>
+<service-name>aNewDataFlow</service-name>
+ <inParameter-list>
+<inParameter>
+<inParameter-type>long</inParameter-type>
+ <inParameter-name>readFieldInFile__ordre</inParameter-name> </inParameter>
+ <inParameter>
+<inParameter-type>long</inParameter-type>
+ <inParameter-name>readFieldInFile__iter</inParameter-name> </inParameter> </inParameter-list>
+ <outParameter-list>
+<outParameter>
+<outParameter-type>double</outParameter-type>
+ <outParameter-name>normL2__return</outParameter-name> </outParameter> </outParameter-list> </service>
+ <DataStream-list/>
+ <PyFunction-list/>
+ <creation-date>25/5/2005 - 11:50:2</creation-date>
+ <lastmodification-date>25/5/2005 - 13:49:58</lastmodification-date>
+ <editor-release>2.0</editor-release>
+ <author>?</author>
+ <container>?</container>
+ <comment>?</comment>
+ <x-position>0</x-position>
+ <y-position>0</y-position> </node> </info-list>
+ <node-list>
+<node>
+<component-name>CALCULATOR</component-name>
+ <interface-name>CALCULATOR_Gen</interface-name>
+ <node-name>normL2</node-name>
+ <kind>0</kind>
+ <coupled-node>?</coupled-node>
+ <service>
+<service-name>normL2</service-name>
+ <inParameter-list>
+<inParameter>
+<inParameter-type>FIELDDOUBLE</inParameter-type>
+ <inParameter-name>field</inParameter-name> </inParameter> </inParameter-list>
+ <outParameter-list>
+<outParameter>
+<outParameter-type>double</outParameter-type>
+ <outParameter-name>return</outParameter-name> </outParameter> </outParameter-list> </service>
+ <DataStream-list/>
+ <PyFunction-list/>
+ <creation-date>25/5/2005 - 11:51:15</creation-date>
+ <lastmodification-date>25/5/2005 - 11:51:15</lastmodification-date>
+ <editor-release>2.0</editor-release>
+ <author>?</author>
+ <container>localhost/FactoryServer</container>
+ <comment>normL2 from CALCULATOR</comment>
+ <x-position>496</x-position>
+ <y-position>144</y-position> </node>
+ <node>
+<component-name>?</component-name>
+ <interface-name>?</interface-name>
+ <node-name>init_parameter</node-name>
+ <kind>3</kind>
+ <coupled-node>?</coupled-node>
+ <service>
+<service-name>init_parameter_1</service-name>
+ <inParameter-list/>
+ <outParameter-list>
+<outParameter>
+<outParameter-type>string</outParameter-type>
+ <outParameter-name>fromMedFile</outParameter-name> </outParameter>
+ <outParameter>
+<outParameter-type>string</outParameter-type>
+ <outParameter-name>fromfieldname</outParameter-name> </outParameter>
+ <outParameter>
+<outParameter-type>string</outParameter-type>
+ <outParameter-name>studyId</outParameter-name> </outParameter> </outParameter-list> </service>
+ <DataStream-list/>
+ <PyFunction-list>
+<PyFunction>
+<FuncName>init_parameter</FuncName>
+ <PyFunc><![CDATA[# ]]></PyFunc>
+ <PyFunc><![CDATA[# init_parameter() ]]></PyFunc>
+ <PyFunc><![CDATA[# ]]></PyFunc>
+ <PyFunc><![CDATA[# this function initialize med files paths, field names ]]></PyFunc>
+ <PyFunc><![CDATA[# ]]></PyFunc>
+ <PyFunc><![CDATA[# returned arguments : ]]></PyFunc>
+ <PyFunc><![CDATA[# ]]></PyFunc>
+ <PyFunc><![CDATA[# - fromMedFile (string) : path of file containing fromfieldname ]]></PyFunc>
+ <PyFunc><![CDATA[# - fromfieldname (string) : name of field ]]></PyFunc>
+ <PyFunc><![CDATA[# - myStudyId (string) : name of study ]]></PyFunc>
+ <PyFunc><![CDATA[# ]]></PyFunc>
+ <PyFunc><![CDATA[def init_parameter(): ]]></PyFunc>
+ <PyFunc><![CDATA[ import batchmode_salome ]]></PyFunc>
+ <PyFunc><![CDATA[ StudyName = batchmode_salome.myStudyName ]]></PyFunc>
+ <PyFunc><![CDATA[ print "init_parameter : myStudyName = ", StudyName ]]></PyFunc>
+ <PyFunc><![CDATA[ from os import environ ]]></PyFunc>
+ <PyFunc><![CDATA[ filePath=environ["MED_ROOT_DIR"] ]]></PyFunc>
+ <PyFunc><![CDATA[ filePath=filePath+"/share/salome/resources/" ]]></PyFunc>
+ <PyFunc><![CDATA[ fromMedFile=filePath+"pointe.med" ]]></PyFunc>
+ <PyFunc><![CDATA[ print "init_parameter : fromMedFile = ", fromMedFile ]]></PyFunc>
+ <PyFunc><![CDATA[ fromfieldname="fieldcelldouble" ]]></PyFunc>
+ <PyFunc><![CDATA[ return fromMedFile,fromfieldname,StudyName ]]></PyFunc> </PyFunction> </PyFunction-list>
+ <creation-date>25/5/2005 - 11:57:16</creation-date>
+ <lastmodification-date>25/5/2005 - 11:57:16</lastmodification-date>
+ <editor-release>2.0</editor-release>
+ <author>?</author>
+ <container>?</container>
+ <comment>Compute Node</comment>
+ <x-position>6</x-position>
+ <y-position>147</y-position> </node>
+ <node>
+<component-name>MED</component-name>
+ <interface-name>MED</interface-name>
+ <node-name>readFieldInFile</node-name>
+ <kind>0</kind>
+ <coupled-node>?</coupled-node>
+ <service>
+<service-name>readFieldInFile</service-name>
+ <inParameter-list>
+<inParameter>
+<inParameter-type>string</inParameter-type>
+ <inParameter-name>fileName</inParameter-name> </inParameter>
+ <inParameter>
+<inParameter-type>string</inParameter-type>
+ <inParameter-name>studyName</inParameter-name> </inParameter>
+ <inParameter>
+<inParameter-type>string</inParameter-type>
+ <inParameter-name>fieldName</inParameter-name> </inParameter>
+ <inParameter>
+<inParameter-type>long</inParameter-type>
+ <inParameter-name>ordre</inParameter-name> </inParameter>
+ <inParameter>
+<inParameter-type>long</inParameter-type>
+ <inParameter-name>iter</inParameter-name> </inParameter> </inParameter-list>
+ <outParameter-list>
+<outParameter>
+<outParameter-type>FIELD</outParameter-type>
+ <outParameter-name>return</outParameter-name> </outParameter> </outParameter-list> </service>
+ <DataStream-list/>
+ <PyFunction-list/>
+ <creation-date>25/5/2005 - 11:57:28</creation-date>
+ <lastmodification-date>25/5/2005 - 11:57:28</lastmodification-date>
+ <editor-release>2.0</editor-release>
+ <author>?</author>
+ <container>localhost/FactoryServer</container>
+ <comment>readFieldInFile from MED</comment>
+ <x-position>271</x-position>
+ <y-position>144</y-position> </node> </node-list>
+ <link-list>
+<link>
+<fromnode-name>init_parameter</fromnode-name>
+ <fromserviceparameter-name>fromMedFile</fromserviceparameter-name>
+ <tonode-name>readFieldInFile</tonode-name>
+ <toserviceparameter-name>fileName</toserviceparameter-name>
+ <coord-list/> </link>
+ <link>
+<fromnode-name>init_parameter</fromnode-name>
+ <fromserviceparameter-name>fromfieldname</fromserviceparameter-name>
+ <tonode-name>readFieldInFile</tonode-name>
+ <toserviceparameter-name>fieldName</toserviceparameter-name>
+ <coord-list/> </link>
+ <link>
+<fromnode-name>init_parameter</fromnode-name>
+ <fromserviceparameter-name>studyId</fromserviceparameter-name>
+ <tonode-name>readFieldInFile</tonode-name>
+ <toserviceparameter-name>studyName</toserviceparameter-name>
+ <coord-list/> </link>
+ <link>
+<fromnode-name>readFieldInFile</fromnode-name>
+ <fromserviceparameter-name>return</fromserviceparameter-name>
+ <tonode-name>normL2</tonode-name>
+ <toserviceparameter-name>field</toserviceparameter-name>
+ <coord-list/> </link> </link-list>
+ <data-list>
+<data>
+<fromnode-name>aNewDataFlow</fromnode-name>
+ <fromserviceparameter-name>readFieldInFile__ordre</fromserviceparameter-name>
+ <tonode-name>readFieldInFile</tonode-name>
+ <toserviceparameter-name>ordre</toserviceparameter-name>
+ <data-value>
+<value-type>3</value-type>
+ <value>-1</value> </data-value>
+ <coord-list/> </data>
+ <data>
+<fromnode-name>aNewDataFlow</fromnode-name>
+ <fromserviceparameter-name>readFieldInFile__iter</fromserviceparameter-name>
+ <tonode-name>readFieldInFile</tonode-name>
+ <toserviceparameter-name>iter</toserviceparameter-name>
+ <data-value>
+<value-type>3</value-type>
+ <value>-1</value> </data-value>
+ <coord-list/> </data> </data-list> </dataflow></supergraph>
--- /dev/null
+#==============================================================================
+# File : Makefile.in
+# Created : ven déc 7 13:32:20 CET 2001
+# Author : Paul RASCLE, EDF
+# Project : SALOME
+# Copyright : EDF 2001
+# $Header$
+#==============================================================================
+
+# source path
+top_srcdir=@top_srcdir@
+top_builddir=..
+srcdir=@srcdir@
+VPATH=.:@srcdir@
+
+@COMMENCE@
+
+SUBDIRS = CALCULATOR
+
+@MODULE@