From: DUC ANH HOANG Date: Thu, 5 Sep 2024 12:24:06 +0000 (+0200) Subject: compile homard fortran on Windows X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=c0f9f1d43610d2d03a4d3c0c4bd3f449899e43f1;p=modules%2Fhomard.git compile homard fortran on Windows --- diff --git a/src/tool/CMakeLists.txt b/src/tool/CMakeLists.txt index 3899de10..675db2f0 100644 --- a/src/tool/CMakeLists.txt +++ b/src/tool/CMakeLists.txt @@ -44,9 +44,20 @@ SET(_HT_libs 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) @@ -54,6 +65,18 @@ FUNCTION(HT_BUILD_LIBRARY dir) 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() @@ -66,5 +89,5 @@ SET(_link_LIBRARIES # 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}) diff --git a/src/tool/Dependance_Machine_C/dmaboc.c b/src/tool/Dependance_Machine_C/dmaboc.c new file mode 100644 index 00000000..7afa4665 --- /dev/null +++ b/src/tool/Dependance_Machine_C/dmaboc.c @@ -0,0 +1,51 @@ +/* __________________________________________________________________________ *. +/* */ +/* 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 + +/* %%%%%%%%%%%%%%%%% 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 %%%%%%%%%%%%%%%%%%% */ + +} + diff --git a/src/tool/Dependance_Machine_C/dmalmc.c b/src/tool/Dependance_Machine_C/dmalmc.c new file mode 100644 index 00000000..7c04f42a --- /dev/null +++ b/src/tool/Dependance_Machine_C/dmalmc.c @@ -0,0 +1,79 @@ +/* __________________________________________________________________________ */ +/* */ +/* 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 +#include +#include + +/* %%%%%%%%%%%%%%%%% 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 ; + } + +} + diff --git a/src/tool/Dependance_Machine_C/dmdate.c b/src/tool/Dependance_Machine_C/dmdate.c new file mode 100644 index 00000000..7f691bda --- /dev/null +++ b/src/tool/Dependance_Machine_C/dmdate.c @@ -0,0 +1,54 @@ +/* __________________________________________________________________________ */ +/* */ +/* 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 +#include + +/* %%%%%%%%%%%%%%%%% 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 ) ; + +} + diff --git a/src/tool/Dependance_Machine_C/dmflsc.c b/src/tool/Dependance_Machine_C/dmflsc.c new file mode 100644 index 00000000..08e310b7 --- /dev/null +++ b/src/tool/Dependance_Machine_C/dmflsc.c @@ -0,0 +1,58 @@ +/* __________________________________________________________________________ */ +/* */ +/* 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 + +/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */ +/* 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 %%%%%%%%%%%%%%%%%%% */ + +} + diff --git a/src/tool/Dependance_Machine_C/dminfc.h b/src/tool/Dependance_Machine_C/dminfc.h new file mode 100644 index 00000000..5c3b13a0 --- /dev/null +++ b/src/tool/Dependance_Machine_C/dminfc.h @@ -0,0 +1,23 @@ +/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */ +/* 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 */ +/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */ diff --git a/src/tool/Dependance_Machine_C/dmlibc.c b/src/tool/Dependance_Machine_C/dmlibc.c new file mode 100644 index 00000000..ad713ff7 --- /dev/null +++ b/src/tool/Dependance_Machine_C/dmlibc.c @@ -0,0 +1,45 @@ +/* __________________________________________________________________________ */ +/* */ +/* 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 +#include + +/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */ +/* 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 ) ; +} + diff --git a/src/tool/Dependance_Machine_C/dmloca.c b/src/tool/Dependance_Machine_C/dmloca.c new file mode 100644 index 00000000..c3fb2a39 --- /dev/null +++ b/src/tool/Dependance_Machine_C/dmloca.c @@ -0,0 +1,39 @@ +/* __________________________________________________________________________ */ +/* */ +/* 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 ; +} + diff --git a/src/tool/Dependance_Machine_C/dmmacc.c b/src/tool/Dependance_Machine_C/dmmacc.c new file mode 100644 index 00000000..edc103ae --- /dev/null +++ b/src/tool/Dependance_Machine_C/dmmacc.c @@ -0,0 +1,142 @@ +/* __________________________________________________________________________ */ +/* */ +/* 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 + +/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */ +/* Retourne le nom de la machine, son système, etc. */ +/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */ + +/* %%%%%%%%%%%%%%%%% début de zone à préprocesser %%%%%%%%%%%%%%%%%% */ +#ifdef _POSIX +#include /* Pour le nom de la machine d'execution */ +#endif +/* %%%%%%%%%%%%%%%%%% fin de zone à préprocesser %%%%%%%%%%%%%%%%%%% */ + +#include + +/* %%%%%%%%%%%%%%%%% 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 %%%%%%%%%%%%%%%%%%% */ + + +} + diff --git a/src/tool/Dependance_Machine_C/dmport.h b/src/tool/Dependance_Machine_C/dmport.h new file mode 100644 index 00000000..5929847a --- /dev/null +++ b/src/tool/Dependance_Machine_C/dmport.h @@ -0,0 +1,49 @@ +/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */ +/* 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 diff --git a/src/tool/Dependance_Machine_C/dmprmc.c b/src/tool/Dependance_Machine_C/dmprmc.c new file mode 100644 index 00000000..2aa0b9f6 --- /dev/null +++ b/src/tool/Dependance_Machine_C/dmprmc.c @@ -0,0 +1,57 @@ +/* __________________________________________________________________________ */ +/* */ +/* 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 ; + + +} + diff --git a/src/tool/Dependance_Machine_C/dmralc.c b/src/tool/Dependance_Machine_C/dmralc.c new file mode 100644 index 00000000..777e657f --- /dev/null +++ b/src/tool/Dependance_Machine_C/dmralc.c @@ -0,0 +1,53 @@ +/* __________________________________________________________________________ */ +/* */ +/* 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 +#include + +/* %%%%%%%%%%%%%%%%% 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 ; + } + +} + diff --git a/src/tool/Dependance_Machine_C/dmsepc.c b/src/tool/Dependance_Machine_C/dmsepc.c new file mode 100644 index 00000000..84cf8d06 --- /dev/null +++ b/src/tool/Dependance_Machine_C/dmsepc.c @@ -0,0 +1,53 @@ +/* __________________________________________________________________________ */ +/* */ +/* 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 %%%%%%%%%%%%%%%%%%% */ + +} + diff --git a/src/tool/Dependance_Machine_C/dmsizc.c b/src/tool/Dependance_Machine_C/dmsizc.c new file mode 100644 index 00000000..35594ea6 --- /dev/null +++ b/src/tool/Dependance_Machine_C/dmsizc.c @@ -0,0 +1,56 @@ +/* __________________________________________________________________________ */ +/* */ +/* 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 + +} + diff --git a/src/tool/Dependance_Machine_C/dmtemc.c b/src/tool/Dependance_Machine_C/dmtemc.c new file mode 100644 index 00000000..42bba2f5 --- /dev/null +++ b/src/tool/Dependance_Machine_C/dmtemc.c @@ -0,0 +1,70 @@ +/* __________________________________________________________________________ */ +/* */ +/* 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 +#include +#endif + +#include + +#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 %%%%%%%%%%%%%%%%%%% */ + +} + diff --git a/src/tool/Dependance_Machine_fortran/dmabor.F b/src/tool/Dependance_Machine_fortran/dmabor.F new file mode 100644 index 00000000..b2c6bdd6 --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmabor.F @@ -0,0 +1,56 @@ + 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 diff --git a/src/tool/Dependance_Machine_fortran/dmalme.F b/src/tool/Dependance_Machine_fortran/dmalme.F new file mode 100644 index 00000000..06f3fb22 --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmalme.F @@ -0,0 +1,65 @@ + 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 diff --git a/src/tool/Dependance_Machine_fortran/dmcpch.F b/src/tool/Dependance_Machine_fortran/dmcpch.F new file mode 100644 index 00000000..70fb3d84 --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmcpch.F @@ -0,0 +1,159 @@ + 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 diff --git a/src/tool/Dependance_Machine_fortran/dmflsh.F b/src/tool/Dependance_Machine_fortran/dmflsh.F new file mode 100644 index 00000000..f5377785 --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmflsh.F @@ -0,0 +1,55 @@ + 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 diff --git a/src/tool/Dependance_Machine_fortran/dmftmp.F b/src/tool/Dependance_Machine_fortran/dmftmp.F new file mode 100644 index 00000000..9c7ee326 --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmftmp.F @@ -0,0 +1,138 @@ + 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 diff --git a/src/tool/Dependance_Machine_fortran/dmindf.F b/src/tool/Dependance_Machine_fortran/dmindf.F new file mode 100644 index 00000000..d7238e4c --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmindf.F @@ -0,0 +1,66 @@ + 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 diff --git a/src/tool/Dependance_Machine_fortran/dmjohe.F b/src/tool/Dependance_Machine_fortran/dmjohe.F new file mode 100644 index 00000000..3979da6e --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmjohe.F @@ -0,0 +1,270 @@ + 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 diff --git a/src/tool/Dependance_Machine_fortran/dmlibe.F b/src/tool/Dependance_Machine_fortran/dmlibe.F new file mode 100644 index 00000000..f381c4d1 --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmlibe.F @@ -0,0 +1,60 @@ + 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 diff --git a/src/tool/Dependance_Machine_fortran/dmloci.F b/src/tool/Dependance_Machine_fortran/dmloci.F new file mode 100644 index 00000000..c9b45fd0 --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmloci.F @@ -0,0 +1,63 @@ + 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 diff --git a/src/tool/Dependance_Machine_fortran/dmlocr.F b/src/tool/Dependance_Machine_fortran/dmlocr.F new file mode 100644 index 00000000..fa3882a8 --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmlocr.F @@ -0,0 +1,64 @@ + 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 diff --git a/src/tool/Dependance_Machine_fortran/dmlocs.F b/src/tool/Dependance_Machine_fortran/dmlocs.F new file mode 100644 index 00000000..ccb870a2 --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmlocs.F @@ -0,0 +1,64 @@ + 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 diff --git a/src/tool/Dependance_Machine_fortran/dmmach.F b/src/tool/Dependance_Machine_fortran/dmmach.F new file mode 100644 index 00000000..7ae51bb4 --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmmach.F @@ -0,0 +1,204 @@ + 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 diff --git a/src/tool/Dependance_Machine_fortran/dmnfcv.F b/src/tool/Dependance_Machine_fortran/dmnfcv.F new file mode 100644 index 00000000..848751a1 --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmnfcv.F @@ -0,0 +1,89 @@ + 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 diff --git a/src/tool/Dependance_Machine_fortran/dmoubs.F b/src/tool/Dependance_Machine_fortran/dmoubs.F new file mode 100644 index 00000000..08fd50c6 --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmoubs.F @@ -0,0 +1,80 @@ + 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 diff --git a/src/tool/Dependance_Machine_fortran/dmoufs.F b/src/tool/Dependance_Machine_fortran/dmoufs.F new file mode 100644 index 00000000..4a05decb --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmoufs.F @@ -0,0 +1,80 @@ + 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 diff --git a/src/tool/Dependance_Machine_fortran/dmprma.F b/src/tool/Dependance_Machine_fortran/dmprma.F new file mode 100644 index 00000000..884f499f --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmprma.F @@ -0,0 +1,72 @@ + 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 diff --git a/src/tool/Dependance_Machine_fortran/dmralo.F b/src/tool/Dependance_Machine_fortran/dmralo.F new file mode 100644 index 00000000..6b40cb00 --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmralo.F @@ -0,0 +1,81 @@ + 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 diff --git a/src/tool/Dependance_Machine_fortran/dmsepf.F b/src/tool/Dependance_Machine_fortran/dmsepf.F new file mode 100644 index 00000000..0ec2dfb0 --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmsepf.F @@ -0,0 +1,55 @@ + 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 diff --git a/src/tool/Dependance_Machine_fortran/dmsize.F b/src/tool/Dependance_Machine_fortran/dmsize.F new file mode 100644 index 00000000..335c4767 --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmsize.F @@ -0,0 +1,72 @@ + 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 diff --git a/src/tool/Dependance_Machine_fortran/dmtemp.F b/src/tool/Dependance_Machine_fortran/dmtemp.F new file mode 100644 index 00000000..3226baf7 --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmtemp.F @@ -0,0 +1,94 @@ + 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 diff --git a/src/tool/Dependance_Machine_fortran/dmunit.F b/src/tool/Dependance_Machine_fortran/dmunit.F new file mode 100644 index 00000000..41caeb24 --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmunit.F @@ -0,0 +1,60 @@ + 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 diff --git a/src/tool/Dependance_Machine_fortran/dmvaen.F b/src/tool/Dependance_Machine_fortran/dmvaen.F new file mode 100644 index 00000000..62d3047d --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmvaen.F @@ -0,0 +1,182 @@ + 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 diff --git a/src/tool/Dependance_Machine_fortran/dmze10.F b/src/tool/Dependance_Machine_fortran/dmze10.F new file mode 100644 index 00000000..8321b71b --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmze10.F @@ -0,0 +1,77 @@ + 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 diff --git a/src/tool/Dependance_Machine_fortran/dmzero.F b/src/tool/Dependance_Machine_fortran/dmzero.F new file mode 100644 index 00000000..36743232 --- /dev/null +++ b/src/tool/Dependance_Machine_fortran/dmzero.F @@ -0,0 +1,61 @@ + 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 diff --git a/src/tool/FC.h b/src/tool/FC.h index 58a10956..ab90adde 100644 --- a/src/tool/FC.h +++ b/src/tool/FC.h @@ -1,3 +1,4 @@ /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */ /* Clone de l'include FC necessaire a cmake pour gerer l'interface Fortran/C */ /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */ +#define FortranCInterface_GLOBAL(name, NAME) name##_