summaryrefslogtreecommitdiff
path: root/Dragon/src/KDRDRV.F
diff options
context:
space:
mode:
Diffstat (limited to 'Dragon/src/KDRDRV.F')
-rw-r--r--Dragon/src/KDRDRV.F164
1 files changed, 164 insertions, 0 deletions
diff --git a/Dragon/src/KDRDRV.F b/Dragon/src/KDRDRV.F
new file mode 100644
index 0000000..0aed297
--- /dev/null
+++ b/Dragon/src/KDRDRV.F
@@ -0,0 +1,164 @@
+*DECK KDRDRV
+ INTEGER FUNCTION KDRDRV(HMODUL,NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+*
+*-----------------------------------------------------------------------
+*
+*Purpose:
+* Code dependent operator driver for DRAGON.
+*
+*Copyright:
+* Copyright (C) 2002 Ecole Polytechnique de Montreal
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU Lesser General Public
+* License as published by the Free Software Foundation; either
+* version 2.1 of the License, or (at your option) any later version
+*
+*Author(s): A. Hebert
+*
+*Parameters: input/output
+* HMODUL name of the operator.
+* NENTRY number of LCM objects or files used by the operator.
+* HENTRY name of each LCM object or file.
+* IENTRY type of each LCM object or file:
+* =1 LCM memory object; =2 XSM file; =3 sequential binary file;
+* =4 sequential ascii file; =6 for HDF5 file.
+* JENTRY access of each LCM object or file:
+* =0 the LCM object or file is created;
+* =1 the LCM object or file is open for modifications;
+* =2 the LCM object or file is open in read-only mode.
+* KENTRY LCM object address or file unit number.
+*
+*Parameters: output
+* KDRDRV completion flag (=0: operator HMODUL exists; =1: does not
+* exists).
+*
+*-----------------------------------------------------------------------
+*
+ USE GANLIB
+*----
+* SUBROUTINE ARGUMENTS
+*----
+ CHARACTER HMODUL*(*),HENTRY(NENTRY)*12
+ INTEGER IENTRY(NENTRY),JENTRY(NENTRY)
+ TYPE(C_PTR) KENTRY(NENTRY)
+*----
+* LOCAL VARIABLES
+*----
+ REAL TBEG,TEND
+ DOUBLE PRECISION DMEMB,DMEMD
+ LOGICAL :: DRAMOD
+*
+ KDRDRV=0
+ DRAMOD=.TRUE.
+ CALL KDRCPU(TBEG)
+ CALL KDRMEM(DMEMB)
+ CALL XDRCRE(HMODUL,1)
+ IF(HMODUL.EQ.'GEO:') THEN
+ CALL GEO(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'SYBILT:') THEN
+ CALL SYBILT(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'EXCELT:') THEN
+ CALL EXCELT(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'NXT:') THEN
+ CALL NXT(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'PSP:') THEN
+ CALL PSP(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'TLM:') THEN
+ CALL TLM(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'MCCGT:') THEN
+ CALL MCCGT(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'LIB:') THEN
+ CALL LIB(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'SHI:') THEN
+ CALL SHI(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'MAC:') THEN
+ CALL MAC(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'ASM:') THEN
+ CALL ASM(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'FLU:') THEN
+ CALL FLU(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'EVO:') THEN
+ CALL EVO(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'EDI:') THEN
+ CALL EDI(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'INFO:') THEN
+ CALL INF(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'USS:') THEN
+ CALL USS(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'TONE:') THEN
+ CALL TONE(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'AUTO:') THEN
+ CALL AUTO(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'VDG:') THEN
+ CALL VDG(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'COMPO:') THEN
+ CALL COMPO(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'SNT:') THEN
+ CALL SNT(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'M2T:') THEN
+ CALL M2T(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'FMAC:') THEN
+ CALL FMAC(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'PSOUR:') THEN
+ CALL PSOUR(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'HEAT:') THEN
+ CALL HEAT(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'CHAB:') THEN
+ CALL CHAB(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'CPO:') THEN
+ CALL CPO(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'SAP:') THEN
+ CALL SAP(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+#if defined(HDF5_LIB)
+ ELSE IF(HMODUL.EQ.'APX:') THEN
+ CALL APX(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'MPO:') THEN
+ CALL MPO(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+#endif /* defined(HDF5_LIB) */
+ ELSE IF(HMODUL.EQ.'MC:') THEN
+ CALL MCT(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'T:') THEN
+ CALL TRA(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'DMAC:') THEN
+ CALL DMA(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'EPC:') THEN
+ CALL EPC(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'FMT:') THEN
+ CALL FMT(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'SPH:') THEN
+ CALL SPH(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'CFC:') THEN
+ CALL CFC(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'SENS:') THEN
+ CALL SEN(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'DUO:') THEN
+ CALL DUO(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'BREF:') THEN
+ CALL BREF(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'S2M:') THEN
+ CALL S2M(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'G2S:') THEN
+ CALL G2S(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'G2MC:') THEN
+ CALL G2MC(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'SALT:') THEN
+ CALL SALT(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'MRG: ') THEN
+ CALL MRG(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE IF(HMODUL.EQ.'CLM: ') THEN
+ CALL CLM(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ELSE
+ DRAMOD=.FALSE.
+ KDRDRV=KTRDRV(HMODUL,NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
+ ENDIF
+ IF(KDRDRV.EQ.0) CALL XDRCRE(HMODUL,-1)
+ IF(DRAMOD)THEN
+ CALL KDRCPU(TEND)
+ CALL KDRMEM(DMEMD)
+ WRITE(6,5000) HMODUL,(TEND-TBEG),REAL(DMEMD-DMEMB)
+ ENDIF
+ RETURN
+*
+ 5000 FORMAT('-->>MODULE ',A12,': TIME SPENT=',F13.3,' MEMORY USAGE=',
+ 1 1P,E10.3)
+ END