ES_MED
Utilitaire
Gestion_MTU
- Dependance_Machine
+ #Dependance_Machine
)
+SET (_DMC
+ Dependance_Machine_C
+ )
+
+SET (_DMF
+ Dependance_Machine_fortran
+ )
+IF (WIN32)
+ ADD_DEFINITIONS(-Dextern_stdcall)
+ENDIF (WIN32)
+
FUNCTION(HT_BUILD_LIBRARY dir)
FILE(GLOB _f_sources LIST_DIRECTORIES false ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/*.F)
FILE(GLOB _c_sources LIST_DIRECTORIES false ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/*.c)
ADD_LIBRARY (${dir} STATIC ${_f_sources} ${_c_sources})
ENDFUNCTION()
+FILE(GLOB _c_sources LIST_DIRECTORIES false ${CMAKE_CURRENT_SOURCE_DIR}/${_DMC}/*.c)
+INCLUDE_DIRECTORIES(Includes_Generaux ${CMAKE_CURRENT_SOURCE_DIR})
+ADD_LIBRARY (${_DMC} STATIC ${_c_sources})
+
+set_target_properties(${_DMC} PROPERTIES COMPILE_FLAGS "/MT" )
+
+FILE(GLOB _f_sources LIST_DIRECTORIES false ${CMAKE_CURRENT_SOURCE_DIR}/${_DMF}/*.F)
+INCLUDE_DIRECTORIES(Includes_Generaux ${CMAKE_CURRENT_SOURCE_DIR})
+ADD_LIBRARY (${_DMF} STATIC ${_f_sources})
+
+TARGET_LINK_LIBRARIES(${_DMF} ${_DMC})
+
FOREACH(_HT_lib ${_HT_libs})
HT_BUILD_LIBRARY(${_HT_lib})
ENDFOREACH()
# Main executable
ADD_EXECUTABLE(homard homard.f)
-TARGET_LINK_LIBRARIES(homard ${_HT_libs} ${_link_LIBRARIES})
+TARGET_LINK_LIBRARIES(homard ${_HT_libs} ${_link_LIBRARIES} ${_DMC} ${_DMF} )
INSTALL(TARGETS homard EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_BINS})
--- /dev/null
+/* __________________________________________________________________________ *.
+/* */
+/* H O M A R D */
+/* */
+/* Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D */
+/* */
+/* Version originale enregistrée le 18 juin 1996 sous le numéro 96036 auprès */
+/* des huissiers de justice Simart et Lavoir à Clamart */
+/* Version 11.2 enregistrée le 13 février 2015 sous le numéro 2015/014 auprès */
+/* des huissiers de justice Lavoir, Silinski & Cherqui-Abrahmi à Clamart */
+/* */
+/* HOMARD est une marque déposée d'Electricite de France */
+/* */
+/* Copyright EDF 1997 */
+/* Copyright EDF 1998 */
+/* Copyright EDF 1999 */
+/* Copyright EDF 2021 */
+/* __________________________________________________________________________ */
+
+#include "dminfc.h"
+#include "dmport.h"
+#include "FC.h"
+#include <stdlib.h>
+
+/* %%%%%%%%%%%%%%%%% début de zone à préprocesser %%%%%%%%%%%%%%%%%% */
+#ifdef _POSIX
+void dmaboc_(INTGR *codret)
+#else
+#ifdef extern_stdcall
+extern void __stdcall DMABOC(INTGR *codret)
+#else
+void FortranCInterface_GLOBAL(dmaboc, DMABOC)(INTGR *codret)
+#endif
+#endif
+/* %%%%%%%%%%%%%%%%%% fin de zone à préprocesser %%%%%%%%%%%%%%%%%%% */
+
+{
+
+/* %%%%%%%%%%%%%%%%% début de zone à préprocesser %%%%%%%%%%%%%%%%%% */
+#ifdef _POSIX
+ *codret = 0 ;
+ abort() ;
+
+#else
+ *codret = 1 ;
+
+#endif
+/* %%%%%%%%%%%%%%%%%% fin de zone à préprocesser %%%%%%%%%%%%%%%%%%% */
+
+}
+
--- /dev/null
+/* __________________________________________________________________________ */
+/* */
+/* H O M A R D */
+/* */
+/* Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D */
+/* */
+/* Version originale enregistrée le 18 juin 1996 sous le numéro 96036 auprès */
+/* des huissiers de justice Simart et Lavoir à Clamart */
+/* Version 11.2 enregistrée le 13 février 2015 sous le numéro 2015/014 auprès */
+/* des huissiers de justice Lavoir, Silinski & Cherqui-Abrahmi à Clamart */
+/* */
+/* HOMARD est une marque déposée d'Electricite de France */
+/* */
+/* Copyright EDF 1997 */
+/* Copyright EDF 1998 */
+/* Copyright EDF 2014 */
+/* Copyright EDF 2021 */
+/* __________________________________________________________________________ */
+
+// long est en général de la taille des adresses gérées par le processeur (taille des pointeurs).
+// machines 64bits => long=64bits
+// machines 32bits => long=32bits
+
+// 1) ad_mem est un pointeur (32/64 bits fonction de la machine) sur une variable fortran
+// dont la taille doit être celle des pointeurs de la machine (car cette variable stocke un pointeur C)
+// Le type long (C) est correct pour stocker les pointeurs sur machines 32/64 bits. Cependant il faut faire attention à ce que la taille de la variable fortran corresponde aux caractéristiques de la machine.
+// En effet, sur machine 32bits certains fortrans sont capables de gérer des integer*8 en 64bits ce qui ne correspondrait pas à la taille d'un long sur machine 32 bits. (cf détection configuration autoconf med)
+// 2) size est le nombre d'éléments de type INTGR (entiers 32/64 bits) que l'on veut allouer.
+// size pourrait être de type int (C) / integer*4 (F) mais en général si l'on a besoin d'entier 64bits pour stoker des grandeurs on a aussi besoin de dénombrer un grand nombre d'éléments.
+// C'est la raison pour laquelle on a le type INTGR (C) <=> INTEGER*4 ou INTEGER*8 <=> INTEGER avec option gfortran -fdefault-integer-8 (F)
+
+#include "dminfc.h"
+#include "dmport.h"
+#include "FC.h"
+#include <stdlib.h>
+#include <stdio.h>
+#include <malloc.h>
+
+/* %%%%%%%%%%%%%%%%% début de zone à préprocesser %%%%%%%%%%%%%%%%%% */
+#ifdef _POSIX
+void dmalmc_( long * const ad_mem, const INTGR * const size )
+#else
+#ifdef extern_stdcall
+extern void __stdcall DMALMC( long * const ad_mem, const INTGR * const size )
+#else
+void FortranCInterface_GLOBAL(dmalmc, DMALMC)(long * const ad_mem, const INTGR * const size)
+#endif
+#endif
+/* %%%%%%%%%%%%%%%%%% fin de zone à préprocesser %%%%%%%%%%%%%%%%%%% */
+
+{
+
+ if ( *size == 0 )
+ { printf(" demande d allocation d une taille nulle\n") ; }
+
+ if ( *size >= 0 )
+ {
+#ifdef _DEBUG_HOMARD_
+ printf ("demande de %d octets\n",*size*sizeof(int));
+#endif
+
+ // p_intgr est un pointeur sur des entiers de taille sizeof(INTGR)
+ INTGR * p_intgr = malloc( *size * sizeof(INTGR) ) ;
+ // On renvoie la valeur de notre pointeur alloué dans la variable Fortran *ad_mem
+ (*ad_mem) = (long) p_intgr;
+
+#ifdef _DEBUG_HOMARD_
+ printf ("==> ad_mem = %d\n",*ad_mem);
+#endif
+ }
+
+ else
+ {
+ printf(" demande d allocation d une taille negative\n") ;
+ *ad_mem = 0 ;
+ }
+
+}
+
--- /dev/null
+/* __________________________________________________________________________ */
+/* */
+/* H O M A R D */
+/* */
+/* Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D */
+/* */
+/* Version originale enregistrée le 18 juin 1996 sous le numéro 96036 auprès */
+/* des huissiers de justice Simart et Lavoir à Clamart */
+/* Version 11.2 enregistrée le 13 février 2015 sous le numéro 2015/014 auprès */
+/* des huissiers de justice Lavoir, Silinski & Cherqui-Abrahmi à Clamart */
+/* */
+/* HOMARD est une marque déposée d'Electricite de France */
+/* */
+/* Copyright EDF 1997 */
+/* Copyright EDF 1998 */
+/* Copyright EDF 1999 */
+/* Copyright EDF 2021 */
+/* __________________________________________________________________________ */
+
+#include "dminfc.h"
+#include "dmport.h"
+#include "FC.h"
+#include <string.h>
+#include <time.h>
+
+/* %%%%%%%%%%%%%%%%% début de zone à préprocesser %%%%%%%%%%%%%%%%%% */
+#ifdef _POSIX
+void dmdate_( char *ladate, LNSTRF bidon )
+#else
+#ifdef extern_stdcall
+extern void __stdcall DMDATE( char *ladate, LNSTRF bidon )
+#else
+void FortranCInterface_GLOBAL(dmdate, DMDATE)(char *ladate, LNSTRF bidon)
+#endif
+#endif
+/* %%%%%%%%%%%%%%%%%% fin de zone à préprocesser %%%%%%%%%%%%%%%%%%% */
+
+/* time renvoie le nombre de secondes écoulées depuis le 1er janvier 1970 à 0h */
+/* ctime convertit ce nombre en une chaine de 26 caractères */
+/* sous la forme 'day mon dd hh:mm:ss yyyy\n\0' */
+/* 123456789012345678901234 5 6 */
+/* ex : 'Thu Jul 19 9:42:23 1994' */
+/* On renvoie alors les 24 premiers caractères utiles. */
+{
+
+ char *c ;
+ time_t t ;
+
+ t = time( (time_t *)0 ) ;
+ c = ctime(&t) ;
+ strncpy(ladate, c, (size_t)24 ) ;
+
+}
+
--- /dev/null
+/* __________________________________________________________________________ */
+/* */
+/* H O M A R D */
+/* */
+/* Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D */
+/* */
+/* Version originale enregistrée le 18 juin 1996 sous le numéro 96036 auprès */
+/* des huissiers de justice Simart et Lavoir à Clamart */
+/* Version 11.2 enregistrée le 13 février 2015 sous le numéro 2015/014 auprès */
+/* des huissiers de justice Lavoir, Silinski & Cherqui-Abrahmi à Clamart */
+/* */
+/* HOMARD est une marque déposée d'Electricite de France */
+/* */
+/* Copyright EDF 1997 */
+/* Copyright EDF 1998 */
+/* Copyright EDF 1999 */
+/* Copyright EDF 2021 */
+/* __________________________________________________________________________ */
+
+#include "dminfc.h"
+#include "dmport.h"
+#include "FC.h"
+#include <stdio.h>
+
+/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
+/* Ce programme vide les buffers des entrees-sorties */
+/* . avec stdout comme argument, seul le buffer de la sortie standard (print fortran) est vide. */
+/* . avec 0 comme argument, les buffers de toutes les sorties sont vides. */
+/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
+
+/* %%%%%%%%%%%%%%%%% début de zone à préprocesser %%%%%%%%%%%%%%%%%% */
+#ifdef _POSIX
+void dmflsc_(INTGR *codret)
+#else
+#ifdef extern_stdcall
+extern void __stdcall DMFLSC(INTGR *codret)
+#else
+void FortranCInterface_GLOBAL(dmflsc, DMFLSC)(INTGR *codret)
+#endif
+#endif
+/* %%%%%%%%%%%%%%%%%% fin de zone à préprocesser %%%%%%%%%%%%%%%%%%% */
+
+{
+/* fflush(stdout) ; */
+
+/* %%%%%%%%%%%%%%%%% début de zone à préprocesser %%%%%%%%%%%%%%%%%% */
+#ifdef _POSIX
+ *codret = fflush(0) ;
+
+#else
+ _flushall() ;
+ *codret = 0 ;
+
+#endif
+/* %%%%%%%%%%%%%%%%%% fin de zone à préprocesser %%%%%%%%%%%%%%%%%%% */
+
+}
+
--- /dev/null
+/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
+/* Commentaires sur les dépendances aux machines */
+/* 1. Les programmes C ne sont appelés que par les programmes */
+/* fortran du répertoire Dependance_Machine */
+/* 2. Les programmes en dm...c sont appelés par dm.... */
+/* 3. Les dépendances des source_c pour les arguments : */
+/* _POSIX, extern_stdcall, autres */
+/* 4. Les autres dépendances des source_c sont : */
+/* . Le programme d'abort (dmaboc) */
+/* _POSIX, autres */
+/* . Le vidage des buffers (dmflsc) */
+/* _POSIX, autres */
+/* . Le vidage des buffers (dmflsc) */
+/* _POSIX, autres */
+/* . Les caractéristiques des machines (dmmacc) */
+/* _POSIX, autres */
+/* . La précision des machines (dmprmc) */
+/* _USE_64_BITS, autres */
+/* . Le caractère de séparation des répertoires (dmsepc) */
+/* _POSIX, autres */
+/* . Le temps système (dmtemc) */
+/* CLK_TCK, _POSIX */
+/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
--- /dev/null
+/* __________________________________________________________________________ */
+/* */
+/* H O M A R D */
+/* */
+/* Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D */
+/* */
+/* Version originale enregistrée le 18 juin 1996 sous le numéro 96036 auprès */
+/* des huissiers de justice Simart et Lavoir à Clamart */
+/* Version 11.2 enregistrée le 13 février 2015 sous le numéro 2015/014 auprès */
+/* des huissiers de justice Lavoir, Silinski & Cherqui-Abrahmi à Clamart */
+/* */
+/* HOMARD est une marque déposée d'Electricite de France */
+/* */
+/* Copyright EDF 1997 */
+/* Copyright EDF 1998 */
+/* Copyright EDF 1999 */
+/* Copyright EDF 2021 */
+/* __________________________________________________________________________ */
+
+#include "dminfc.h"
+#include "dmport.h"
+#include "FC.h"
+#include <stdlib.h>
+#include <malloc.h>
+
+/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
+/* Libération de la mémoire associée à malloc */
+/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
+
+/* %%%%%%%%%%%%%%%%% début de zone à préprocesser %%%%%%%%%%%%%%%%%% */
+#ifdef _POSIX
+void dmlibc_( long **iad_mem )
+#else
+#ifdef extern_stdcall
+extern void __stdcall DMLIBC( long **iad_mem )
+#else
+void FortranCInterface_GLOBAL(dmlibc, DMLIBC)(long **iad_mem)
+#endif
+#endif
+/* %%%%%%%%%%%%%%%%%% fin de zone à préprocesser %%%%%%%%%%%%%%%%%%% */
+
+{
+ free( *iad_mem ) ;
+}
+
--- /dev/null
+/* __________________________________________________________________________ */
+/* */
+/* H O M A R D */
+/* */
+/* Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D */
+/* */
+/* Version originale enregistrée le 18 juin 1996 sous le numéro 96036 auprès */
+/* des huissiers de justice Simart et Lavoir à Clamart */
+/* Version 11.2 enregistrée le 13 février 2015 sous le numéro 2015/014 auprès */
+/* des huissiers de justice Lavoir, Silinski & Cherqui-Abrahmi à Clamart */
+/* */
+/* HOMARD est une marque déposée d'Electricite de France */
+/* */
+/* Copyright EDF 1997 */
+/* Copyright EDF 1998 */
+/* Copyright EDF 1999 */
+/* Copyright EDF 2021 */
+/* __________________________________________________________________________ */
+
+#include "dminfc.h"
+#include "dmport.h"
+#include "FC.h"
+
+/* %%%%%%%%%%%%%%%%% début de zone à préprocesser %%%%%%%%%%%%%%%%%% */
+#ifdef _POSIX
+void dmloca_( void *a, INTGR *iad )
+#else
+#ifdef extern_stdcall
+extern void __stdcall DMLOCA( void *a, INTGR *iad )
+#else
+void FortranCInterface_GLOBAL(dmloca, DMLOCA)(void *a, INTGR *iad)
+#endif
+#endif
+/* %%%%%%%%%%%%%%%%%% fin de zone à préprocesser %%%%%%%%%%%%%%%%%%% */
+
+{
+ *iad = (long) a ;
+}
+
--- /dev/null
+/* __________________________________________________________________________ */
+/* */
+/* H O M A R D */
+/* */
+/* Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D */
+/* */
+/* Version originale enregistrée le 18 juin 1996 sous le numéro 96036 auprès */
+/* des huissiers de justice Simart et Lavoir à Clamart */
+/* Version 11.2 enregistrée le 13 février 2015 sous le numéro 2015/014 auprès */
+/* des huissiers de justice Lavoir, Silinski & Cherqui-Abrahmi à Clamart */
+/* */
+/* HOMARD est une marque déposée d'Electricite de France */
+/* */
+/* Copyright EDF 1997 */
+/* Copyright EDF 1998 */
+/* Copyright EDF 1999 */
+/* Copyright EDF 2021 */
+/* __________________________________________________________________________ */
+
+#include "dminfc.h"
+#include "dmport.h"
+#include "FC.h"
+#include <string.h>
+
+/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
+/* Retourne le nom de la machine, son système, etc. */
+/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
+
+/* %%%%%%%%%%%%%%%%% début de zone à préprocesser %%%%%%%%%%%%%%%%%% */
+#ifdef _POSIX
+#include <sys/utsname.h> /* Pour le nom de la machine d'execution */
+#endif
+/* %%%%%%%%%%%%%%%%%% fin de zone à préprocesser %%%%%%%%%%%%%%%%%%% */
+
+#include <stdio.h>
+
+/* %%%%%%%%%%%%%%%%% début de zone à préprocesser %%%%%%%%%%%%%%%%%% */
+
+#ifdef _POSIX
+void dmmacc_( char *nodeno, INTGR *nodelg, char *machno, INTGR *machlg, char *systno, INTGR *systlg, char *releno, INTGR *relelg, char *versno, INTGR *verslg, LNSTRF nodebi, LNSTRF machbi, LNSTRF systbi, LNSTRF relebi, LNSTRF versbi )
+#else
+#ifdef extern_stdcall
+extern void __stdcall DMMACC( char *nodeno, LNSTRF nodebi, INTGR *nodelg, char *machno, LNSTRF machbi, INTGR *machlg, char *systno, LNSTRF systbi, INTGR *systlg, char *releno, LNSTRF relebi, INTGR *relelg, char *versno, LNSTRF versbi, INTGR *verslg )
+#else
+void FortranCInterface_GLOBAL(dmmacc, DMMACC)(char *nodeno, INTGR *nodelg, char *machno, INTGR *machlg, char *systno, INTGR *systlg, char *releno, INTGR *relelg, char *versno, INTGR *verslg)
+#endif
+#endif
+/* %%%%%%%%%%%%%%%%%% fin de zone à préprocesser %%%%%%%%%%%%%%%%%%% */
+
+{
+ int lg ;
+
+/* %%%%%%%%%%%%%%%%% début de zone à préprocesser %%%%%%%%%%%%%%%%%% */
+#ifdef _POSIX
+
+ struct utsname myname ;
+
+ lg = fflush(0) ;
+
+ if ( uname ( &myname ) != -1 ) {
+
+ lg = (int)strlen(myname.nodename) ;
+ if ( *nodelg > lg ) *nodelg = lg ;
+ strncpy (nodeno,myname.nodename, (size_t)*nodelg ) ;
+
+ lg = (int)strlen(myname.machine) ;
+ if ( *machlg > lg ) *machlg = lg ;
+ strncpy (machno,myname.machine, (size_t)*machlg ) ;
+
+ lg = (int)strlen(myname.sysname) ;
+ if ( *systlg > lg ) *systlg = lg ;
+ strncpy (systno,myname.sysname, (size_t)*systlg ) ;
+
+ lg = (int)strlen(myname.release) ;
+ if ( *relelg > lg ) *relelg = lg ;
+ strncpy (releno,myname.release, (size_t)*relelg ) ;
+
+ lg = (int)strlen(myname.version) ;
+ if ( *verslg > lg ) *verslg = lg ;
+ strncpy (versno,myname.version, (size_t)*verslg ) ;
+
+ }
+
+ else {
+
+ if ( *nodelg > 7 ) *nodelg = 7 ;
+ strncpy (nodeno,"inconnu", (size_t)*nodelg ) ;
+ if ( *machlg > 1 ) *machlg = 1 ;
+ strncpy (machno," ", (size_t)*machlg ) ;
+ if ( *systlg > 4 ) *systlg = 4 ;
+ strncpy (systno,"Unix", (size_t)*systlg ) ;
+ if ( *relelg > 1 ) *relelg = 1 ;
+ strncpy (releno," ", (size_t)*relelg ) ;
+ if ( *verslg > 1 ) *verslg = 1 ;
+ strncpy (versno," ", (size_t)*verslg ) ;
+ }
+
+#else
+
+
+ char *nodename, *machine, *sysname, *release, *version;
+
+ nodename=getenv("COMPUTERNAME");
+ if ( nodename == NULL ) {
+ nodename="inconnu";
+ }
+ lg = (int)strlen(nodename) ;
+ if ( *nodelg > lg ) *nodelg = lg ;
+ strncpy (nodeno,nodename, (size_t)*nodelg ) ;
+
+ machine=getenv ("CPU");
+ if ( machine == NULL ) {
+ machine="inconnu";
+ }
+ lg = (int)strlen(machine) ;
+ if ( *machlg > lg ) *machlg = lg ;
+ strncpy (machno,machine, (size_t)*machlg ) ;
+
+ sysname=getenv ("OS");
+ if ( sysname == NULL ) {
+ sysname="inconnu";
+ }
+ lg = (int)strlen(sysname) ;
+ if ( *systlg > lg ) *systlg = lg ;
+ strncpy (systno,sysname, (size_t)*systlg ) ;
+
+ release="inconnu";
+ lg = (int)strlen(release) ;
+ if ( *relelg > lg ) *relelg = lg ;
+ strncpy (releno,release, (size_t)*relelg ) ;
+
+ version="inconnu";
+ lg = (int)strlen(version) ;
+ if ( *verslg > lg ) *verslg = lg ;
+ strncpy (versno,version, (size_t)*verslg ) ;
+
+#endif
+/* %%%%%%%%%%%%%%%%%% fin de zone à préprocesser %%%%%%%%%%%%%%%%%%% */
+
+
+}
+
--- /dev/null
+/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
+/* include (langage C ou C++) pour portage des routines */
+/* "dependance_machine" */
+/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
+
+#ifndef dmport_h
+#define dmport_h
+
+#if defined(__unix__)
+#define _POSIX
+#warning "-------- definition de _POSIX --------"
+#endif
+
+#if defined __LP64__ || defined __MINGW64__
+#define _USE_64_BITS
+#warning "-------- definition de _USE_64_BITS --------"
+#endif
+
+
+/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
+/* Correspondance entre les entiers fortran et les entiers C : */
+/* Utile par exemple sur machine DEC, quand les pointeurs sont sur */
+/* 64 bits et qu'on utilise une option du compilateur fortran qui */
+/* force tous les entiers fortran a 64 bits */
+/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
+#define DOUBLE double
+
+#ifdef _USE_64_BITS
+#warning "-------- passage par ifdef _USE_64_BITS --------"
+ typedef long INTGR ;
+ #define INTEGER_NB_CHIFFRES_SIGNIFICATIFS 19
+#else
+#pragma message ( "-------- passage par else de ifdef _USE_64_BITS --------" )
+ typedef int INTGR ;
+ #define INTEGER_NB_CHIFFRES_SIGNIFICATIFS 9
+#endif
+
+
+/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
+/* Longueur des chaines de caractères fortran (telles que passées */
+/* comme arguments cachés par les compilateurs fortran) */
+/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
+#ifdef _USE_64_BITS
+ typedef long LNSTRF ;
+#else
+ typedef int LNSTRF ;
+#endif
+//
+#endif
--- /dev/null
+/* __________________________________________________________________________ */
+/* */
+/* H O M A R D */
+/* */
+/* Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D */
+/* */
+/* Version originale enregistrée le 18 juin 1996 sous le numéro 96036 auprès */
+/* des huissiers de justice Simart et Lavoir à Clamart */
+/* Version 11.2 enregistrée le 13 février 2015 sous le numéro 2015/014 auprès */
+/* des huissiers de justice Lavoir, Silinski & Cherqui-Abrahmi à Clamart */
+/* */
+/* HOMARD est une marque déposée d'Electricite de France */
+/* */
+/* Copyright EDF 1997 */
+/* Copyright EDF 1998 */
+/* Copyright EDF 1999 */
+/* Copyright EDF 2021 */
+/* __________________________________________________________________________ */
+
+#include "dminfc.h"
+#include "dmport.h"
+#include "FC.h"
+
+/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
+/* Retourne la précision machine */
+/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
+
+/* %%%%%%%%%%%%%%%%% début de zone à préprocesser %%%%%%%%%%%%%%%%%% */
+#ifdef _POSIX
+void dmprmc_( DOUBLE *epsima, INTGR *nbchii )
+#else
+#ifdef extern_stdcall
+extern void __stdcall DMPRMC( DOUBLE *epsima, INTGR *nbchii )
+#else
+void FortranCInterface_GLOBAL(dmprmc, DMPRMC)(DOUBLE *epsima, INTGR *nbchii)
+#endif
+#endif
+/* %%%%%%%%%%%%%%%%%% fin de zone à préprocesser %%%%%%%%%%%%%%%%%%% */
+
+{
+
+/* %%%%%%%%%%%%%%%%% début de zone à préprocesser %%%%%%%%%%%%%%%%%% */
+#ifdef _USE_64_BITS
+ *epsima = 1.e-31;
+
+#else
+ *epsima = 1.e-15;
+
+#endif
+/* %%%%%%%%%%%%%%%%%% fin de zone à préprocesser %%%%%%%%%%%%%%%%%%% */
+
+/* printf (". INTEGER_NB_CHIFFRES_SIGNIFICATIFS : %d\n", INTEGER_NB_CHIFFRES_SIGNIFICATIFS); */
+ *nbchii = INTEGER_NB_CHIFFRES_SIGNIFICATIFS ;
+
+
+}
+
--- /dev/null
+/* __________________________________________________________________________ */
+/* */
+/* H O M A R D */
+/* */
+/* Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D */
+/* */
+/* Version originale enregistrée le 18 juin 1996 sous le numéro 96036 auprès */
+/* des huissiers de justice Simart et Lavoir à Clamart */
+/* Version 11.2 enregistrée le 13 février 2015 sous le numéro 2015/014 auprès */
+/* des huissiers de justice Lavoir, Silinski & Cherqui-Abrahmi à Clamart */
+/* */
+/* HOMARD est une marque déposée d'Electricite de France */
+/* */
+/* Copyright EDF 1997 */
+/* Copyright EDF 1998 */
+/* Copyright EDF 1999 */
+/* Copyright EDF 2021 */
+/* __________________________________________________________________________ */
+
+#include "dminfc.h"
+#include "dmport.h"
+#include "FC.h"
+#include <stdlib.h>
+#include <malloc.h>
+
+/* %%%%%%%%%%%%%%%%% début de zone à préprocesser %%%%%%%%%%%%%%%%%% */
+#ifdef _POSIX
+void dmralc_( INTGR *iad_mem, INTGR *size )
+#else
+#ifdef extern_stdcall
+extern void __stdcall DMRALC( INTGR *iad_mem, INTGR *size )
+#else
+void FortranCInterface_GLOBAL(dmralc, DMRALC)(INTGR *iad_mem, INTGR *size)
+#endif
+#endif
+/* %%%%%%%%%%%%%%%%%% fin de zone à préprocesser %%%%%%%%%%%%%%%%%%% */
+
+{
+ void *adret ;
+
+ adret = realloc( (void *) *iad_mem, (size_t) *size ) ;
+
+ if ( adret != NULL )
+ {
+ *iad_mem = (INTGR) adret ;
+ }
+ else
+ {
+ *iad_mem = 0 ;
+ }
+
+}
+
--- /dev/null
+/* __________________________________________________________________________ */
+/* */
+/* H O M A R D */
+/* */
+/* Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D */
+/* */
+/* Version originale enregistrée le 18 juin 1996 sous le numéro 96036 auprès */
+/* des huissiers de justice Simart et Lavoir à Clamart */
+/* Version 11.2 enregistrée le 13 février 2015 sous le numéro 2015/014 auprès */
+/* des huissiers de justice Lavoir, Silinski & Cherqui-Abrahmi à Clamart */
+/* */
+/* HOMARD est une marque déposée d'Electricite de France */
+/* */
+/* Copyright EDF 1997 */
+/* Copyright EDF 1998 */
+/* Copyright EDF 1999 */
+/* Copyright EDF 2021 */
+/* __________________________________________________________________________ */
+
+#include "dminfc.h"
+#include "dmport.h"
+#include "FC.h"
+
+/* but : retourne le caractère séparateur de répertoires */
+
+/* %%%%%%%%%%%%%%%%% début de zone à préprocesser %%%%%%%%%%%%%%%%%% */
+#ifdef _POSIX
+void dmsepc_( char *slash, LNSTRF bidon )
+#else
+#ifdef extern_stdcall
+extern void __stdcall DMSEPC( char *slash, LNSTRF bidon )
+#else
+void FortranCInterface_GLOBAL(dmsepc, DMSEPC)(char *slash, LNSTRF bidon)
+#endif
+#endif
+/* %%%%%%%%%%%%%%%%%% fin de zone à préprocesser %%%%%%%%%%%%%%%%%%% */
+
+{
+
+/* %%%%%%%%%%%%%%%%% début de zone à préprocesser %%%%%%%%%%%%%%%%%% */
+#ifdef _POSIX
+
+ slash[0] = '/' ;
+
+#else
+
+ slash[0] = '\\' ;
+
+#endif
+/* %%%%%%%%%%%%%%%%%% fin de zone à préprocesser %%%%%%%%%%%%%%%%%%% */
+
+}
+
--- /dev/null
+/* __________________________________________________________________________ */
+/* */
+/* H O M A R D */
+/* */
+/* Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D */
+/* */
+/* Version originale enregistrée le 18 juin 1996 sous le numéro 96036 auprès */
+/* des huissiers de justice Simart et Lavoir à Clamart */
+/* Version 11.2 enregistrée le 13 février 2015 sous le numéro 2015/014 auprès */
+/* des huissiers de justice Lavoir, Silinski & Cherqui-Abrahmi à Clamart */
+/* */
+/* HOMARD est une marque déposée d'Electricite de France */
+/* */
+/* Copyright EDF 1997 */
+/* Copyright EDF 1998 */
+/* Copyright EDF 1999 */
+/* Copyright EDF 2021 */
+/* __________________________________________________________________________ */
+
+#include "dminfc.h"
+#include "dmport.h"
+#include "FC.h"
+
+/* %%%%%%%%%%%%%%%%% début de zone à préprocesser %%%%%%%%%%%%%%%%%% */
+#ifdef _POSIX
+void dmsizc_( INTGR *tentie, INTGR *treel, INTGR *tchain )
+#else
+#ifdef extern_stdcall
+extern void __stdcall DMSIZC( INTGR *tentie, INTGR *treel, INTGR *tchain )
+#else
+void FortranCInterface_GLOBAL(dmsizc, DMSIZC)(INTGR *tentie, INTGR *treel, INTGR *tchain)
+#endif
+#endif
+/* %%%%%%%%%%%%%%%%%% fin de zone à préprocesser %%%%%%%%%%%%%%%%%%% */
+
+{
+/* malloc fonctionne en octets */
+ *tentie = sizeof(INTGR) ;
+ *treel = 8 ;
+ *tchain = 8 ;
+
+#ifdef _DEBUG_HOMARD_
+ printf ("Dans dmsizc, tailles en octets :\n");
+ printf (". Entiers : %d\n", *tentie);
+ printf (". Reels : %d\n", *treel);
+ printf (". Chaine : %d\n", *tchain);
+ printf (". taille de INTGR : %d\n", sizeof(INTGR));
+ printf (". taille de int : %d\n", sizeof(int));
+ printf (". taille de int* : %d\n", sizeof(int*));
+ printf (". taille de long : %d\n", sizeof(long));
+ printf (". taille de tentie : %d\n", sizeof(*tentie));
+
+#endif
+
+}
+
--- /dev/null
+/* __________________________________________________________________________ */
+/* */
+/* H O M A R D */
+/* */
+/* Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D */
+/* */
+/* Version originale enregistrée le 18 juin 1996 sous le numéro 96036 auprès */
+/* des huissiers de justice Simart et Lavoir à Clamart */
+/* Version 11.2 enregistrée le 13 février 2015 sous le numéro 2015/014 auprès */
+/* des huissiers de justice Lavoir, Silinski & Cherqui-Abrahmi à Clamart */
+/* */
+/* HOMARD est une marque déposée d'Electricite de France */
+/* */
+/* Copyright EDF 1997 */
+/* Copyright EDF 1998 */
+/* Copyright EDF 1999 */
+/* Copyright EDF 2021 */
+/* __________________________________________________________________________ */
+
+#include "dminfc.h"
+#include "dmport.h"
+#include "FC.h"
+
+/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
+/* Retourne les temps user et système écoulés depuis le début */
+/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
+
+#ifdef _POSIX
+#include <sys/times.h>
+#include <unistd.h>
+#endif
+
+#include <time.h>
+
+#ifdef CLK_TCK
+#define CLOCKS_PER_SEC_VALUE CLK_TCK
+#else
+#define CLOCKS_PER_SEC_VALUE sysconf(_SC_CLK_TCK)
+#endif
+
+/* %%%%%%%%%%%%%%%%% début de zone à préprocesser %%%%%%%%%%%%%%%%%% */
+#ifdef _POSIX
+void dmtemc_( DOUBLE *tuser, DOUBLE *tsyst )
+#else
+#ifdef extern_stdcall
+extern void __stdcall DMTEMC( DOUBLE *tuser, DOUBLE *tsyst )
+#else
+void FortranCInterface_GLOBAL(dmtemc, DMTEMC)(DOUBLE *tuser, DOUBLE *tsyst)
+#endif
+#endif
+/* %%%%%%%%%%%%%%%%%% fin de zone à préprocesser %%%%%%%%%%%%%%%%%%% */
+
+{
+
+/* %%%%%%%%%%%%%%%%% début de zone à préprocesser %%%%%%%%%%%%%%%%%% */
+#ifdef _POSIX
+ struct tms temps;
+ times (&temps);
+ *tuser=(DOUBLE)temps.tms_utime/(DOUBLE)CLOCKS_PER_SEC_VALUE;
+ *tsyst=(DOUBLE)temps.tms_stime/(DOUBLE)CLOCKS_PER_SEC_VALUE;
+
+#else
+ *tuser=(DOUBLE)clock()/CLOCKS_PER_SEC_VALUE;
+ *tsyst=(DOUBLE)0.;
+
+#endif
+/* %%%%%%%%%%%%%%%%%% fin de zone à préprocesser %%%%%%%%%%%%%%%%%%% */
+
+}
+
--- /dev/null
+ subroutine dmabor
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine : ABORt
+c - - ----
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+c 0.4. ==> variables locales
+c
+ integer codret
+c
+c====
+c 1. vidage des buffers
+c====
+c
+ call dmflsh ( codret )
+c
+c====
+c 2. appel de la fonction C equivalente
+c====
+c
+ call dmaboc ( codret )
+c
+ stop
+c
+ end
--- /dev/null
+ subroutine dmalme ( adress, taille, codret )
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine : ALlocation de MEmoire
+c - - -- --
+c ______________________________________________________________________
+c
+c but : alloue une place memoire de taille donnee
+c ______________________________________________________________________
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . adress . s . 1 . adresse de depart de la zone allouee .
+c . taille . e . 1 . taille voulue .
+c . codret . s . 1 . code retour : 0 si tout va bien, 1 sinon .
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+ integer adress, taille, codret
+c
+c 0.4. ==> variables locales
+c ______________________________________________________________________
+c
+c====
+c 1. appel de la fonction C equivalente
+c====
+c
+ call dmalmc ( adress, taille )
+c
+ if ( adress.eq.0 ) then
+ codret = 1
+ else
+ codret = 0
+ endif
+c
+ end
--- /dev/null
+ subroutine dmcpch ( chain1, long1, chain2, long2 )
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine : CoPie de CHaine de caracteres
+c - - - - --
+c ______________________________________________________________________
+c
+c
+c but : copie "prudente" de la chaine 1 dans la chaine 2
+c
+c . les eventuels caracteres non imprimables sont remplaces .
+c par des blancs ... sauf ceux en debut et fin de chaine, .
+c qui sont elimines. .
+c
+c dependance machine : code ASCII
+c ( blanc = 32, et
+c non imprimable <==> code < 32 ...
+c ... sauf que les TAB (code 9) sont remplaces
+c par un blanc chacun )
+c ______________________________________________________________________
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . chain1 . e . char * . chaine "source" .
+c . long1 . e . 1 . longueur utile de la chaine "source" .
+c . chain2 . s . char * . chaine "cible" .
+c . long2 . s . 1 . longueur utile de la chaine "cible" .
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+ integer long1, long2
+ character*(*) chain1, chain2
+c
+c 0.4. ==> variables locales
+c
+ integer long, iaux, deb, fin, dern0, deb1, p0
+c
+c 0.5. ==> initialisations
+c ______________________________________________________________________
+c
+c====
+c 1.
+c====
+c
+ long = 0
+ deb = 0
+ deb1 = 0
+ dern0 = 0
+ p0 = -1
+c
+ do 1 iaux = 1, min( len(chain1), long1 )
+ if ( ichar(chain1(iaux:iaux)).gt.32 ) then
+ if ( deb.eq.0 ) then
+ deb = iaux
+ endif
+ fin = iaux
+ p0 = 0
+ if ( long.lt.len(chain2) ) then
+ if ( deb1.eq.0 ) then
+ deb1 = iaux
+ endif
+ long = long + 1
+ chain2(long:long) = chain1(iaux:iaux)
+ endif
+ else if ( ichar(chain1(iaux:iaux)).eq.32 .or.
+ > ichar(chain1(iaux:iaux)).eq.9 ) then
+ if ( deb.eq.0 ) then
+ deb = iaux
+ endif
+ if ( long.lt.len(chain2) ) then
+ long = long + 1
+ chain2(long:long) = ' '
+ endif
+ else
+c
+c non imprimables:
+c
+ if ( deb.gt.0 .and. long.lt.len(chain2) ) then
+ long = long + 1
+ chain2(long:long) = ' '
+ endif
+ dern0 = iaux
+ if ( p0.eq.0 ) then
+ p0 = iaux
+ endif
+ endif
+ 1 continue
+c
+c On complete eventuellement avec des blancs :
+c (mais qui ne seront pas comptes dans long2)
+c
+ do 10 iaux = long+1, len(chain2)
+ chain2(iaux:iaux) = ' '
+ 10 continue
+c
+c Bilan :
+c
+ if ( deb1.gt.0 ) then
+c
+c Il y a au moins un caractere imprimable et non blanc, qui a pu
+c etre copie de la chaine source chain1 vers la cible chain2 :
+c (deb1 est le premier de ceux-ci dans chain1)
+c
+ if ( dern0.lt.fin ) then
+ long2 = long
+ else
+c
+c Apres le dernier caractere imprimable et non blanc de chain1 (fin),
+c on a trouve : des blancs eventuels, puis un premier caractere non
+c imprimable (p0), puis eventuellement des blancs ou non impr.
+c puis enfin un dernier caractere non impr. (dern0, >= p0),
+c puis des blancs eventuels.
+c
+c deb pointe sur le premier caractere "utile" (blanc ou imprimable)
+c de chaine1 (deb<=deb1<=fin)
+c p0-1 serait le dernier caractere "utile" de chaine1 (fin<=p0-1)
+c
+ long2 = min( max(0,len(chain2)) , p0-deb )
+c
+ endif
+c
+ else
+c
+c chaine "source" vide, ou entierement blanche(+caracteres non impr.) :
+c
+ long2 = 0
+c
+ endif
+c
+ end
--- /dev/null
+ subroutine dmflsh ( codret )
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine : FLuSH des buffers
+c - - ----
+c ______________________________________________________________________
+c
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . codret . s . 1 . code de retour .
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+ integer codret
+c
+c 0.4. ==> variables locales
+c 0.5. ==> initialisations
+c
+c===
+c 1. appel de la fonction C equivalente
+c===
+c
+ call dmflsc ( codret )
+c
+ end
--- /dev/null
+ subroutine dmftmp ( nomdep , lnomde , nomfic , lnomfi )
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine - Fichier TeMPoraire
+c - - - - --
+c ______________________________________________________________________
+c
+c on determine un nom de fichier dont on est sur qu'il n'existe pas.
+c Ce fichier doit se trouver dans le meme repertoire qu'un fichier
+c de depart pour pouvoir faire du renommage par la suite.
+c
+c "renomme" un fichier (trouve un nouveau nom, nomfic, a partir
+c du nom de depart nomdep)
+c ______________________________________________________________________
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . nomdep . e . ch . ancien nom du fichier .
+c . lnomde . e . e . longueur de l'ancien nom du fichier .
+c . nomfic . s . ch . nouveau nom du fichier .
+c . lnomfi . s . e . . longueur du nouveau nom du fichier .
+c . ulsort . e . 1 . unite logique de la liste standard .
+c . langue . e . 1 . langue des messages .
+c . . . . 1 : francais, 2 : anglais .
+c . codret . s . 1 . code de retour .
+c . . . . 0 : pas de probleme .
+c . . . . 1 : probleme .
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+ character*(*) nomdep, nomfic
+c
+ integer lnomde, lnomfi
+c
+c 0.4. ==> variables locales
+c
+ integer iaux, jaux, lnomd
+c
+ character*4 fmt
+c
+ logical old
+c
+c 0.5. ==> initialisations
+c ______________________________________________________________________
+c
+c====
+c 1. on concatene une chaine de caracteres jusqu'a trouver un fichier
+c qui n'existe pas.
+c====
+c
+ lnomd = min( max(0,lnomde), max(0,len(nomdep)) )
+ do 1 iaux = 1, len(nomfic)
+ nomfic(iaux:iaux) = ' '
+ 1 continue
+c
+ if ( lnomd.lt.len(nomfic) ) then
+ if ( lnomd.gt.0 ) then
+ nomfic(1:lnomd) = nomdep( 1 : lnomd )
+ endif
+ jaux = lnomd + 1
+ else
+ lnomfi = 0
+ goto 12
+ endif
+c
+ do 11 , iaux = 1 , 999999
+c
+ if ( iaux.le.9 ) then
+ fmt = '(I1)'
+ lnomfi = lnomd + 1
+ elseif ( iaux.le.99 ) then
+ fmt = '(I2)'
+ lnomfi = lnomd + 2
+ elseif ( iaux.le.999 ) then
+ fmt = '(I3)'
+ lnomfi = lnomd + 3
+ elseif ( iaux.le.9999 ) then
+ fmt = '(I4)'
+ lnomfi = lnomd + 4
+ elseif ( iaux.le.99999 ) then
+ fmt = '(I5)'
+ lnomfi = lnomd + 5
+ else
+ fmt = '(I6)'
+ lnomfi = lnomd + 6
+ endif
+c
+ if ( lnomfi.le.len(nomfic) ) then
+c
+ write ( nomfic(jaux:lnomfi) , fmt ) iaux
+c
+ inquire (file=nomfic(1:lnomfi),exist=old)
+c
+ if ( .not.old ) then
+ goto 12
+ endif
+c
+ else
+ lnomfi = 0
+ goto 12
+ endif
+c
+ 11 continue
+c
+ lnomfi = 0
+c
+ 12 continue
+c
+ end
--- /dev/null
+ subroutine dmindf ( iindef, rindef, sindef )
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine : valeurs INDeFinies
+c - - --- -
+c ______________________________________________________________________
+c
+c affecte les valeurs indefinies
+c ______________________________________________________________________
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . iindef . s . 1 . valeur indefinie entiere .
+c . rindef . s . 1 . valeur indefinie double precision reelle .
+c . sindef . s . c8 . valeur indefinie caractere .
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+ integer iindef
+c
+ double precision rindef
+c
+ character*8 sindef
+c
+c 0.4. ==> variables locales
+c
+c====
+c 1. On met une tres grande valeur, reconnaissble
+c====
+c
+ iindef = 17891792
+c
+ rindef = 1848.1871d12
+c
+ sindef = 'INDEFINI'
+c
+ end
--- /dev/null
+ subroutine dmjohe ( numann, nummoi, numjou, numjos,
+ > numheu, nummin, numsec )
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine : JOur et HEure
+c - - -- --
+c ______________________________________________________________________
+c
+c
+c retourne la date et l'heure
+c ______________________________________________________________________
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . numann . s . 1 . numero de l'annee .
+c . nummoi . s . 1 . numero du mois .
+c . numjou . s . 1 . numero du jour (1-->31) .
+c . numjos . s . 1 . numero du jour symbolique (0-->7) .
+c . . . . 0 : rien n'est fourni par la machine .
+c . . . . 1-->7 : numero du jour dans la semaine .
+c . numheu . s . 1 . numero de l'heure .
+c . nummin . s . 1 . numero des minutes .
+c . numsec . s . 1 . numero des secondes .
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+cgn character*6 nompro
+cgn parameter ( nompro = 'DMJOHE' )
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+ integer numann, nummoi, numjou, numjos
+ integer numheu, nummin, numsec
+c
+c 0.4. ==> variables locales
+c
+ integer iaux
+c
+ character*24 tampon
+ character*8 chjour, heurus
+ character*4 nomann
+ character*3 tabday (7)
+ character*3 tabmon (12)
+ character*3 nomjou, nommoi
+c
+c====
+c 1. les constantes
+c====
+c 1.1. ==> nom des jours
+c
+ tabday (1) = 'Mon'
+ tabday (2) = 'Tue'
+ tabday (3) = 'Wed'
+ tabday (4) = 'Thu'
+ tabday (5) = 'Fri'
+ tabday (6) = 'Sat'
+ tabday (7) = 'Sun'
+c
+c 1.2. ==> nom des mois
+c
+ tabmon (1) = 'Jan'
+ tabmon (2) = 'Feb'
+ tabmon (3) = 'Mar'
+ tabmon (4) = 'Apr'
+ tabmon (5) = 'May'
+ tabmon (6) = 'Jun'
+ tabmon (7) = 'Jul'
+ tabmon (8) = 'Aug'
+ tabmon (9) = 'Sep'
+ tabmon (10) = 'Oct'
+ tabmon (11) = 'Nov'
+ tabmon (12) = 'Dec'
+c
+c====
+c 2. determination de la date et de l'heure de passage du calcul
+c====
+c
+ chjour = '07/19/94'
+ heurus = '09:42:23'
+ tampon = 'Thu Jul 19 9:42:23 1994'
+ nomann = '1994'
+c
+c sur machine UNIX ou WINDOWS de base
+c 1234567890123456789012345678
+c 'day mon dd hh:mm:ss yyyy'
+c ex : 'Thu Jul 19 9:42:23 1994'
+c====
+c
+c 2.1. ==> appel a la fonction machine
+c
+ call dmdate ( tampon )
+c
+c 2.2. ==> archivage sous forme standard
+c
+ nomann = tampon(21:24)
+ nommoi = tampon(5:7)
+ nomjou = tampon(1:3)
+ chjour(4:5) = tampon(9:10)
+c
+ heurus = tampon(12:19)
+c
+c====
+c 3. decodage commun a toutes les machines
+c====
+c
+ if ( index('0123456789',nomann(3:3)).gt.0 .and.
+ > index('0123456789',nomann(4:4)).gt.0 ) then
+c
+ read ( nomann(3:4) , fmt='(i2)' ) numann
+c
+ if (nomann(1:2).eq.'19') then
+ numann = numann + 1900
+ else
+ numann = numann + 2000
+ endif
+ else
+ numann = 1970
+ endif
+c
+ if ( chjour(4:4).eq.' ' ) then
+ chjour(4:4) = '0'
+ endif
+ if ( index('0123',chjour(4:4)).gt.0 .and.
+ > index('0123456789',chjour(5:5)).gt.0 ) then
+c
+ read ( chjour(4:5) , fmt='(i2)' ) numjou
+c
+ if ( numjou.le.0 .or. numjou.gt.31 ) then
+ numjou = 1
+ endif
+ else if ( chjour(5:5).eq.' ' .and.
+ > index('123456789',chjour(4:4)).gt.0 ) then
+c
+ read ( chjour(4:4) , fmt='(i1)' ) numjou
+c
+ else
+ numjou = 1
+ endif
+c
+c apres la date, on s'occupe maintenant de l'heure :
+c
+ if ( heurus(1:1).eq.' ' ) then
+ heurus(1:1) = '0'
+ endif
+ if ( index('012',heurus(1:1)).gt.0 .and.
+ > index('0123456789',heurus(2:2)).gt.0 ) then
+c
+ read ( heurus(1:2),fmt='(i2)' ) numheu
+c
+ if (numheu.gt.23) then
+ numheu = 0
+ endif
+c
+ else if ( heurus(2:2).eq.' ' .and.
+ > index('0123456789',heurus(1:1)).gt.0 ) then
+c
+ read ( heurus(1:1),fmt='(i1)' ) numheu
+c
+ else
+c
+ numheu = 0
+c
+ endif
+c
+ if ( index(' 012345',heurus(4:4)).gt.0 .and.
+ > index('0123456789',heurus(5:5)).gt.0 ) then
+c
+ read ( heurus(4:5),fmt='(i2)' ) nummin
+c
+ if (nummin.gt.59) then
+ nummin = 0
+ endif
+c
+ else if ( heurus(5:5).eq.' ' .and.
+ > index('0123456789',heurus(4:4)).gt.0 ) then
+c
+ read ( heurus(4:4),fmt='(i1)' ) nummin
+c
+ else
+c
+ nummin = 0
+c
+ endif
+c
+ if ( index(' 012345',heurus(7:7)).gt.0 .and.
+ > index('0123456789',heurus(8:8)).gt.0 ) then
+c
+ read ( heurus(7:8),fmt='(i2)' ) numsec
+c
+ if (numsec.gt.59) then
+ numsec = 0
+ endif
+c
+ else if ( heurus(8:8).eq.' ' .and.
+ > index('0123456789',heurus(7:7)).gt.0 ) then
+c
+ read ( heurus(7:7),fmt='(i1)' ) numsec
+c
+ else
+c
+ numsec = 0
+c
+ endif
+c
+c====
+c 4. decodages specifiques
+c . nummoi = numero du mois
+c . numjos = numero du jour dans la semaine
+c====
+c
+ nummoi = 0
+ do 41 , iaux = 1 , 12
+ if ( nommoi .eq. tabmon(iaux) ) then
+ nummoi = iaux
+ endif
+ 41 continue
+c
+ numjos = 0
+ do 42 , iaux = 1 , 7
+ if ( nomjou .eq. tabday(iaux) ) then
+ numjos = iaux
+ endif
+ 42 continue
+c
+ if (numjou.gt.28 .and. nummoi.gt.1) then
+ if (nummoi.eq.2 .and. mod(numann,4).ne.0) then
+ nummoi = 0
+ else if (nummoi.eq.2 .and. mod(numann,4).eq.0) then
+ if (numjou.gt.29) then
+ nummoi = 0
+ endif
+ else if (nummoi.eq.4 .or. nummoi.eq.6) then
+ if (numjou.gt.30) then
+ nummoi = 0
+ endif
+ else if (nummoi.eq.9 .or. nummoi.eq.11) then
+ if (numjou.gt.30) then
+ nummoi = 0
+ endif
+ endif
+ endif
+c
+ end
--- /dev/null
+ subroutine dmlibe ( iad, err )
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine : LIBEration de place memoire
+c - - ----
+c ______________________________________________________________________
+c
+c
+c but : libere une place memoire demarrant a iad
+c ______________________________________________________________________
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . iad . e . 1 . adresse de depart de la zone allouee .
+c . err . s . 1 . code d'erreur .
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+ integer iad,err
+c
+c 0.4. ==> variables locales
+c ______________________________________________________________________
+c
+c====
+c 1. appel de la fonction C equivalente
+c====
+c
+ call dmlibc ( iad )
+ err = 0
+c
+ end
--- /dev/null
+ subroutine dmloci (var,iad)
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine : LOCalisation en memoire - entIer
+c - - --- -
+c ______________________________________________________________________
+c
+c Ce programme retourne l'adresse en machine ou est la variable var.
+c Il utilise la fonction machine loc qui est une extension par
+c rapport au fortran 77 ansi.
+c Si cette extension n'est pas disponible, on reactivera la
+c fonction C dmloca qui joue sur la facon de passer les arguments :
+c par adresse / par valeur.
+c ______________________________________________________________________
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . iad . s . 1 . adresse de depart de la zone allouee .
+c . var . e . 1 . .
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+ integer var, iad
+c
+c 0.4. ==> variables locales
+c ______________________________________________________________________
+c
+c====
+c 1. appel du programme ad-hoc
+c====
+c
+ iad = loc(var)
+c
+ end
--- /dev/null
+ subroutine dmlocr (var,iad)
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine : LOCalisation en memoire - Reel
+c - - --- -
+c ______________________________________________________________________
+c
+c Ce programme retourne l'adresse en machine ou est la variable var.
+c Il utilise la fonction machine loc qui est une extension par
+c rapport au fortran 77 ansi.
+c Si cette extension n'est pas disponible, on reactivera la
+c fonction C dmloca qui joue sur la facon de passer les arguments :
+c par adresse / par valeur.
+c ______________________________________________________________________
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . iad . s . 1 . adresse de depart de la zone allouee .
+c . var . e . 1 . .
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+ double precision var
+ integer iad
+c
+c 0.4. ==> variables locales
+c ______________________________________________________________________
+c
+c====
+c 1. appel du programme ad-hoc
+c====
+c
+ iad = loc(var)
+c
+ end
--- /dev/null
+ subroutine dmlocs (var,iad)
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine : LOCalisation en memoire - String
+c - - --- -
+c ______________________________________________________________________
+c
+c Ce programme retourne l'adresse en machine ou est la variable var.
+c Il utilise la fonction machine loc qui est une extension par
+c rapport au fortran 77 ansi.
+c Si cette extension n'est pas disponible, on reactivera la
+c fonction C dmloca qui joue sur la facon de passer les arguments :
+c par adresse / par valeur.
+c ______________________________________________________________________
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . iad . s . 1 . adresse de depart de la zone allouee .
+c . var . e . 1 . .
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+ character*8 var
+ integer iad
+c
+c 0.4. ==> variables locales
+c ______________________________________________________________________
+c
+c====
+c 1. appel du programme ad-hoc
+c====
+c
+ iad = loc(var)
+c
+ end
--- /dev/null
+ subroutine dmmach ( nomare, nomais, typmac,
+ > noarch, systre, systve,
+ > lgcar )
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine : caracteristiques de la MACHine
+c - - ----
+c ______________________________________________________________________
+c
+c retourne le type de machine sur laquelle a lieu le calcul
+c ______________________________________________________________________
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . nomare . s . char* . nom reseau de la machine .
+c . nomais . s . char* . nom de la machine isolee .
+c . typmac . s . char* . type de la machine .
+c . noarch . s . char* . nom de l'architecture systeme .
+c . systre . s . char* . release du systeme .
+c . systve . s . char* . version du systeme .
+c . lgcar . s . 6 . longueurs de chacune des chaines de caract..
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+ integer nbcar
+ parameter ( nbcar = 6 )
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+ character*(*) nomare
+ character*(*) nomais
+ character*(*) typmac
+ character*(*) noarch
+ character*(*) systre
+ character*(*) systve
+c
+ integer lgcar(nbcar)
+c
+c 0.4. ==> variables locales
+#ifdef _DEBUG_HOMARD_
+ integer enstul, sostul
+#endif
+c
+ integer iaux, jaux
+ integer luname(nbcar)
+ integer lgcloc(nbcar)
+ character*255 uname(nbcar)
+c
+c 0.5. ==> initialisations
+c
+c===
+c 1. nom et numero de la machine
+c===
+c
+c 1.1. ==> on suppose que l'on ignore tout
+c
+ lgcloc(1) = len(nomare)
+ lgcloc(2) = len(nomais)
+ lgcloc(3) = len(typmac)
+ lgcloc(4) = len(noarch)
+ lgcloc(5) = len(systre)
+ lgcloc(6) = len(systve)
+c
+ nomare = ' '
+ nomais = ' '
+ typmac = ' '
+ noarch = ' '
+ systre = ' '
+ systve = ' '
+c
+ do 11 , iaux = 1 , nbcar
+ lgcar(iaux) = 1
+ 11 continue
+c
+c 1.2. ==> preparation de l'appel a dmmacc : on met la chaine a blanc
+c jaux est la taille (nombre de caracteres) de chaque element
+c du tableau uname. 256 semblerait etre une bonne valeur,
+c preconisee sous unix, ...
+c mais ftnchek rale au dela de 255 (portabilite).
+c
+ jaux = len (uname(1))
+c
+ do 121 , iaux = 1, jaux
+ uname(1)(iaux:iaux) = ' '
+ 121 continue
+ luname(1) = jaux
+c
+ do 122 , iaux = 2, nbcar
+ uname(iaux) = uname(1)
+ luname(iaux) = luname(1)
+ 122 continue
+c
+c 1.3. ==> appel de la fonction C equivalente
+c argument 1 = nomare
+c argument 2 = typmac
+c argument 3 = noarch
+c argument 4 = systre
+c argument 5 = systve
+c
+ call dmmacc ( uname(1), luname(1), uname(2), luname(2),
+ > uname(3), luname(3), uname(4), luname(4),
+ > uname(5), luname(5) )
+c
+c====
+c 2. transfert dans les bonnes variables
+c====
+c 2.1. ==> nettoyage eventuel (caracteres non impr.)
+c
+ do 21 , iaux = 1, nbcar
+ call dmcpch ( uname(iaux), luname(iaux),
+ > uname(iaux), luname(iaux) )
+ 21 continue
+c
+c 2.2. ==> transfert
+c 2.2.1. ==> argument 1 = nomare
+c
+ if ( luname(1).gt.0 ) then
+ iaux = min(luname(1),lgcloc(1))
+ nomare(1:iaux) = uname(1)(1:iaux)
+ lgcar(1) = iaux
+ endif
+ if ( luname(1).gt.0 ) then
+ do 22 , iaux = 1 , lgcar(1)
+ if ( nomare(iaux:iaux).eq.'.' ) then
+ lgcar(2) = iaux-1
+ goto 221
+ endif
+ nomais(iaux:iaux) = nomare(iaux:iaux)
+ 22 continue
+ lgcar(2) = lgcar(1)
+ 221 continue
+ endif
+c
+c 2.2.2. ==> argument 2 = typmac
+c
+ if ( luname(2).gt.0 ) then
+ iaux = min(luname(2),lgcloc(2))
+ typmac(1:iaux) = uname(2)(1:iaux)
+ lgcar(3) = iaux
+ endif
+c
+c 2.2.3. ==> argument 2 = noarch
+c
+ if ( luname(3).gt.0 ) then
+ iaux = min(luname(3),lgcloc(3))
+ noarch(1:iaux) = uname(3)(1:iaux)
+ lgcar(4) = iaux
+ endif
+c
+c 2.2.4. ==> argument 4 = systre
+c
+ if ( luname(4).gt.0 ) then
+ iaux = min(luname(4),lgcloc(4))
+ systre(1:iaux) = uname(4)(1:iaux)
+ lgcar(5) = iaux
+ endif
+c
+c 2.2.5. ==> argument 5 = systve
+c
+ if ( luname(5).gt.0 ) then
+ iaux = min(luname(5),lgcloc(5))
+ systve(1:iaux) = uname(5)(1:iaux)
+ lgcar(6) = iaux
+ endif
+c
+#ifdef _DEBUG_HOMARD_
+ call dmunit ( enstul, sostul )
+ write(sostul,*) 'Dans dmmach :'
+ write(sostul,*) 'nom reseau = ', nomare
+ write(sostul,*) 'nom isole = ', nomais
+ write(sostul,*) 'typmac = ', typmac
+ write(sostul,*) 'architecture = ', noarch
+ write(sostul,*) 'release = ', systre
+ write(sostul,*) 'version = ', systve
+#endif
+c
+ end
--- /dev/null
+ subroutine dmnfcv ( nfichi, lfichi )
+c
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine : Nom de Fichier ConVerti
+c - - - - - -
+c ______________________________________________________________________
+c
+c REMARQUE : en fait on ne fait RIEN
+c il faudrait traiter le probleme en C pour Windows
+c
+c but : convertit un nom de fichier UNIX en un nom de fichier
+c acceptable par le systeme d'exploitation utilise.
+c autrement dit, sous WINDOWS, change les / en \ , et .
+c ailleurs (sous UNIX, en particulier), ne fait RIEN .
+c ______________________________________________________________________
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . nfichi . es . char * . nom de fichier .
+c . lfichi . e . 1 . longueur de ce nom .
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+ integer lfichi
+ character*(*) nfichi
+c
+c 0.4. ==> variables locales
+c
+ integer iaux
+c
+ character*1 slash
+c
+ character*1 slashu
+ parameter ( slashu = '/' )
+c
+c 0.5. ==> initialisations
+c ______________________________________________________________________
+c
+c====
+c 1. Recherche du caractere de separation pour la machine courante
+c====
+c
+ call dmsepf ( slash )
+c
+c====
+c 2. Substitution le cas echeant
+c====
+c
+ if ( slash.ne.slashu ) then
+c
+ do 21 , iaux = 1 , lfichi
+ if ( nfichi(iaux:iaux).eq.slashu ) then
+ nfichi(iaux:iaux) = slash
+ endif
+ 21 continue
+c
+ endif
+c
+ end
--- /dev/null
+ subroutine dmoubs ( nuroul , nomfic, lnomfi,
+ > ulmess, codret )
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine - OUverture en Binaire Sequentiel
+c - - -- - -
+c ______________________________________________________________________
+c
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . nuroul . e . 1 . numero de l'unite logique attribuee .
+c . nomfic . e . ch<200 . nom du fichier a ouvrir .
+c . lnomfi . e . 1 . longueur du nom du fichier a ouvrir .
+c . ulmess . e . 1 . numero d'unite logique des messages .
+c . codret . s . 1 . code de retour : 0 si c'est bon .
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+ integer nuroul, lnomfi, codret, ulmess
+c
+ character*(*) nomfic
+c
+c 0.4. ==> variables locales
+c
+c 0.5. ==> initialisations
+c
+c===
+c 1. pas de differences entre les machines
+c===
+c
+ open ( unit=nuroul, err=10, file=nomfic(1:lnomfi),
+ > access='SEQUENTIAL', form='UNFORMATTED',
+ > status='UNKNOWN', iostat=codret )
+c
+ goto 11
+c
+ 10 continue
+ if ( codret.eq.0 ) then
+ codret = -1
+ endif
+c
+ 11 continue
+c
+ if ( codret.ne.0 ) then
+ write(ulmess,*) 'Ouverture du fichier :'
+ write(ulmess,*) nomfic(1:lnomfi)
+ write(ulmess,*) 'Code retour dans dmoubs : ',codret
+ endif
+c
+ end
--- /dev/null
+ subroutine dmoufs ( nuroul , nomfic, lnomfi,
+ > ulmess, codret )
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine - OUverture en Formate Sequentiel
+c - - -- - -
+c ______________________________________________________________________
+c
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . nuroul . e . 1 . numero de l'unite logique attribuee .
+c . nomfic . e . ch<200 . nom du fichier a ouvrir .
+c . lnomfi . e . 1 . longueur du nom du fichier a ouvrir .
+c . ulmess . e . 1 . numero d'unite logique des messages .
+c . codret . s . 1 . code de retour : 0 si c'est bon .
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+ integer nuroul, lnomfi, codret, ulmess
+c
+ character*(*) nomfic
+c
+c 0.4. ==> variables locales
+c
+c 0.5. ==> initialisations
+c
+c===
+c 1. pas de differences entre les machines
+c===
+c
+ open ( unit=nuroul, err=10, file=nomfic(1:lnomfi),
+ > access='SEQUENTIAL', form='FORMATTED',
+ > status='UNKNOWN', iostat=codret )
+c
+ goto 11
+c
+ 10 continue
+ if ( codret.eq.0 ) then
+ codret = -1
+ endif
+c
+ 11 continue
+c
+ if ( codret.ne.0 ) then
+ write(ulmess,*) 'Ouverture du fichier :'
+ write(ulmess,*) nomfic(1:lnomfi)
+ write(ulmess,*) 'Code retour dans dmoufs : ',codret
+ endif
+c
+ end
--- /dev/null
+ subroutine dmprma ( epsima, dmxent, nbchii )
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine : PRecision MAchine
+c - - -- --
+c ______________________________________________________________________
+c
+c retourne la precision machine
+c ______________________________________________________________________
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . epsima . s . dp . la precision de la machine .
+c . dmxent . s . dp . plus grand entier, exprime en double .
+c . nbchii . s . i . nombre de chiffres significatifs des entier.
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+ integer nbchii
+c
+ double precision epsima, dmxent
+c
+c 0.4. ==> variables locales
+c
+c 0.5. ==> initialisations
+c
+c====
+c 1. appel de la fonction generique
+c====
+c
+ call dmprmc ( epsima, nbchii )
+cgn print *,epsima
+cgn print *,nbchii
+c
+c====
+c 2. plus grand entier, exprime en double
+c====
+c
+ dmxent = 10.d0**nbchii
+cgn print *,dmxent
+cgn print *,int(dmxent)
+c
+ end
--- /dev/null
+ subroutine dmralo ( adress, taille, codret )
+c
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine : ReALlOcation
+c - - - -- -
+c ______________________________________________________________________
+c
+c but : re-alloue une place memoire demarrant a adress,
+c a la nouvelle taille
+c Attention : l'adresse de depart peut etre MODIFIEE, meme si la
+c nouvelle taille est plus petite que l'ancienne.
+c Le contenu, lui, est conserve.
+c ______________________________________________________________________
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . adress . es . 1 . adresse de depart de la zone allouee .
+c . taille . e . 1 . nouvelle taille de la zone allouee .
+c . codret . s . 1 . code d'erreur ( 0 : tout va bien ) .
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+ integer adress, taille, codret
+c
+c 0.4. ==> variables locales
+c ______________________________________________________________________
+c
+c Precautions generales d'emploi:
+c - la taille finale doit etre strictement positive
+c (sinon, ce serait une desallocation complete: cf. dmlibe)
+c - l'adresse de depart doit correspondre (en entree) a une
+c adresse de depart d'une zone allouee (cf. dmalme) ou
+c re-allouee...
+c
+ if ( taille.gt.0 ) then
+c
+ call dmralc ( adress, taille )
+c
+ if ( adress.eq.0 ) then
+ codret = 1
+ else
+ codret = 0
+ endif
+c
+ else
+c
+ codret = -1
+c
+ endif
+c
+ end
--- /dev/null
+ subroutine dmsepf ( slash )
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine : SEParateur Fichiers
+c - - --- -
+c ______________________________________________________________________
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . slash . s . char* . separateur des noms de fichiers .
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+ character*(*) slash
+c
+c 0.4. ==> variables locales
+c
+c 0.5. ==> initialisations
+c
+c===
+c 1. appel de la fonction C equivalente
+c===
+c
+ call dmsepc ( slash )
+c
+ end
--- /dev/null
+ subroutine dmsize ( tentie , treel, tchain )
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine : SIZE des variables selon leurs types
+c - - ----
+c ______________________________________________________________________
+c
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . tentie . s . 1 . tailles des entiers en octets .
+c . treel . s . 1 . tailles des reels en octets .
+c . tchain . s . 1 . tailles des chaines en octets .
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+#ifdef _DEBUG_HOMARD_
+ character*6 nompro
+ parameter ( nompro = 'DMSIZE' )
+#endif
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+ integer tentie , treel, tchain
+c
+c 0.4. ==> variables locales
+c 0.5. ==> initialisations
+c
+c===
+c 1. appel de la fonction C equivalente
+c===
+c
+#ifdef _DEBUG_HOMARD_
+ write (*,*) 'Appel de DMSIZC par ', nompro
+#endif
+ call dmsizc ( tentie , treel, tchain )
+c
+#ifdef _DEBUG_HOMARD_
+ write (*,*) 'Dans ', nompro,', apres dmsizc, tailles en octets :'
+ write (*,*) ' Entier : ', tentie
+ write (*,*) ' Reel : ', treel
+ write (*,*) ' Chaine : ', tchain
+#endif
+c
+ end
--- /dev/null
+ subroutine dmtemp ( tuser, tsyst )
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine : TEMPs de calcul
+c - - ----
+c ______________________________________________________________________
+c
+c
+c retourne les temps user et systeme ecoules depuis le dernier appel
+c ______________________________________________________________________
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . tuser . s . 1 . temps user depuis le dernier appel .
+c . tsyst . s . 1 . temps systeme .................... .
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+ double precision tuser, tsyst
+c
+c 0.4. ==> variables locales
+c
+ logical prem
+c
+ double precision tuser0, tsyst0
+ double precision tuser1, tsyst1
+c
+c 0.5. ==> initialisations
+c
+ data prem / .true. /
+c
+c===
+c 1. appel de la fonction C equivalente
+c===
+c
+ call dmtemc ( tuser, tsyst )
+c
+c 1.1 ==> Archivage du depart
+c
+ if ( prem ) then
+c
+ tuser0 = tuser
+ tsyst0 = tsyst
+c
+ tuser = 0.d0
+ tsyst = 0.0d0
+c
+ prem = .false.
+c
+ else
+c
+c 1.2. ==> Difference
+c
+ tuser1 = tuser
+ tsyst1 = tsyst
+c
+ tuser = tuser - tuser0
+ tsyst = tsyst - tsyst0
+c
+ tuser0 = tuser1
+ tsyst0 = tsyst1
+c
+ endif
+c
+ end
--- /dev/null
+ subroutine dmunit ( enstul, sostul )
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine : UNITes logiques d'entree et de sortie standard
+c - - ----
+c ______________________________________________________________________
+c
+c but : retourne les numeros d'entree et de sortie standard sur
+c la machine concernee
+c ______________________________________________________________________
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . enstul . s . 1 . entree standard : numero de l'unite logique.
+c . sostul . s . 1 . sortie standard : numero de l'unite logique.
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+ integer enstul, sostul
+c
+c 0.4. ==> variables locales
+c
+c====
+c 1. affectation
+c====
+c
+ enstul = 5
+c
+ sostul = 6
+c
+ end
--- /dev/null
+ subroutine dmvaen ( nomvar, lgnova, nomuti, lgnout,
+ > ulsort, langue, codret )
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine - decodage d'une VAriable d'ENvironnement
+c - - -- --
+c ______________________________________________________________________
+c
+c
+c but : decode les variables d'environnement
+c ______________________________________________________________________
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . nomvar . e . char* . nom de la variable a decoder .
+c . lgnova . e . i . longueur reelle de nomvar .
+c . nomuti . s . char* . nom utilisable pour cette variable .
+c . lgnout . s . i . longueur reelle de nomuti .
+c . ulsort . e . 1 . unite logique de la liste standard .
+c . langue . e . 1 . langue des messages .
+c . . . . 1 : francais, 2 : anglais .
+c . codret . s . 1 . code de retour .
+c . . . . 0 : pas de probleme .
+c . . . . 1 : impossible de decoder la variable .
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+ character*6 nompro
+ parameter ( nompro = 'DMVAEN' )
+c
+#include "nblang.h"
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+ character*(*) nomvar, nomuti
+c
+ integer lgnova, lgnout
+ integer ulsort, langue, codret
+c
+c 0.4. ==> variables locales
+c
+ integer iaux, lgmax
+c
+ integer nbmess
+ parameter ( nbmess = 10 )
+ character*80 texte(nblang,nbmess)
+c
+c 0.5. ==> initialisations
+c
+ parameter ( lgmax = 200 )
+c ______________________________________________________________________
+c
+c====
+c 1. messages
+c====
+c
+#include "impr01.h"
+c
+#ifdef _DEBUG_HOMARD_
+ write (ulsort,texte(langue,1)) 'Entree', nompro
+ call dmflsh (iaux)
+#endif
+c
+ texte(1,4) = '(''Variable d''''environnement :'')'
+ texte(1,5) = '(''Impossible de la decoder.'')'
+ texte(1,6) = '(''Valeur interpretee :'')'
+c
+ texte(2,4) = '(''Environment variable :'')'
+ texte(2,5) = '(''It cannot be uncoded.'')'
+ texte(2,6) = '(''It is equal to :'')'
+c
+c====
+c 2. appel a la fonction machine
+c====
+c
+ lgnout = 0
+c
+ do 2 iaux = 1 , len(nomuti)
+ nomuti(iaux:iaux) = ' '
+ 2 continue
+c
+c 2.1. ==> attention a la taille maximale ...
+c
+ if ( lgnova.le.0 .or. lgnova.gt.len(nomvar) ) then
+c
+ codret = 1
+c
+ else
+c
+c 2.2. ==> appel a la fonction standard ailleurs et
+c comptage du nombre de lettres effectives
+c
+c NB: sous WINDOWS + Visual Fortran 6.0, l'appel a getenv impose
+c le rajout de la bibliotheque Dfport.lib
+c pour que l'edition des liens se passe bien.
+c
+ call getenv ( nomvar(1:lgnova) , nomuti )
+c
+ do 221 , iaux = 1 , min(lgmax,len(nomuti))
+ if ( nomuti(iaux:iaux).eq.' ' ) then
+ codret = 0
+ goto 222
+ endif
+ lgnout = lgnout + 1
+ 221 continue
+c
+ codret = 1
+c
+ 222 continue
+c
+c nettoyage eventuel:
+c
+ call dmcpch( nomuti, lgnout, nomuti, lgnout )
+c
+ endif
+c
+c====
+c 3. la fin
+c====
+c
+#ifdef _DEBUG_HOMARD_
+ iaux = -1
+#else
+ iaux = 0
+#endif
+c
+ if ( codret.ne.iaux ) then
+ write (ulsort,texte(langue,1)) 'Sortie', nompro
+ write (ulsort,texte(langue,2)) codret
+ write (ulsort,texte(langue,4))
+ if (min(lgnova,len(nomvar)).ge.1) then
+ write (ulsort,*) nomvar( 1 : min(lgnova,len(nomvar)) )
+ else
+ write (ulsort,*)
+ endif
+ if ( codret.eq.1 ) then
+ write (ulsort,texte(langue,5))
+ else
+ if ( iaux.eq.-1 ) then
+ write (ulsort,texte(langue,6))
+ if (lgnout.ge.1) then
+ write (ulsort,*) nomuti(1:lgnout)
+ else
+ write (ulsort,*)
+ endif
+ endif
+ endif
+ endif
+c
+#ifdef _DEBUG_HOMARD_
+ write (ulsort,texte(langue,1)) 'Sortie', nompro
+ call dmflsh (iaux)
+#endif
+c
+ end
--- /dev/null
+ subroutine dmze10 ( vinfpo, zero, pd10vi, pd10ze )
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine : ZEros en puissance de 10
+c - - -- --
+c ______________________________________________________________________
+c
+c
+c retourne la plus petite et la plus grande valeur possible
+c et leurs puissances de 10 associees : x = 0.abc*10**n
+c exemple : avec x = 1.e9, on a x = 0.1*10**10, donc n = 10
+c avec x = 1.e-40, on a x = 0.1*10**-39, donc n = -39
+c ______________________________________________________________________
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . vinfpo . s . dp . plus grande valeur positive possible .
+c . zero . s . dp . le zero de la machine .
+c . pd10vi . s . i . la puissance de 10 associee a vinfpo .
+c . pd10ze . s . i . la puissance de 10 associee a zero .
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+ double precision vinfpo, zero
+ integer pd10vi, pd10ze
+c
+c 0.4. ==> variables locales
+c
+c 0.5. ==> initialisations
+c
+c====
+c 1. les valeurs extremes
+c===
+c
+c 1.1. ==> le maximum
+c
+ vinfpo = 1.d29
+ pd10vi = 30
+c
+c 1.2. ==> le minimum : l'inverse du maximum
+c
+ zero = 1.d0 / vinfpo
+c
+c 1.3. ==> les puissances de 10 associees
+c
+ pd10ze = 2 - pd10vi
+c
+ end
--- /dev/null
+ subroutine dmzero ( vinfpo, zero )
+c ______________________________________________________________________
+c
+c H O M A R D
+c
+c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
+c
+c Version originale enregistree le 18 juin 1996 sous le numero 96036
+c aupres des huissiers de justice Simart et Lavoir a Clamart
+c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
+c aupres des huissiers de justice
+c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
+c
+c HOMARD est une marque deposee d'Electricite de France
+c
+c Copyright EDF 1996
+c Copyright EDF 1998
+c Copyright EDF 2002
+c Copyright EDF 2020
+c ______________________________________________________________________
+c Dependance Machine : ZEROs machine
+c - - ----
+c ______________________________________________________________________
+c
+c retourne la plus petite et la plus grande valeur possible
+c ______________________________________________________________________
+c . . . . .
+c . nom . e/s . taille . description .
+c .____________________________________________________________________.
+c . vinfpo . s . dp . plus grande valeur positive possible .
+c . zero . s . dp . le zero de la machine .
+c ______________________________________________________________________
+c
+c====
+c 0. declarations et dimensionnement
+c====
+c
+c 0.1. ==> generalites
+c
+ implicit none
+ save
+c
+c 0.2. ==> communs
+c
+c 0.3. ==> arguments
+c
+ double precision vinfpo, zero
+c
+c 0.4. ==> variables locales
+c
+ integer pd10vi, pd10ze
+c
+c 0.5. ==> initialisations
+c
+c====
+c 1. appel de la fonction generique
+c====
+c
+ call dmze10 ( vinfpo, zero, pd10vi, pd10ze )
+c
+ end
/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
/* Clone de l'include FC necessaire a cmake pour gerer l'interface Fortran/C */
/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
+#define FortranCInterface_GLOBAL(name, NAME) name##_