diff --git a/examples/Makefile_serial b/examples/Makefile_serial index c8ae045..9d9dcdb 100644 --- a/examples/Makefile_serial +++ b/examples/Makefile_serial @@ -1,124 +1,133 @@ # # @file Makefile # # @brief Makefile for futils library examples # # @copyright # Copyright (©) 2021 EPFL (Ecole Polytechnique Fédérale de Lausanne) # SPC (Swiss Plasma Center) # # futils 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 3 of the License, or (at your option) # any later version. # # futils is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this program. If not, see . # # @authors # (in alphabetical order) +# @author Emmanuel Lanti # @author Trach-Minh Tran # -F90 = ifort -F90FLAGS = -g -CB -traceback -I../src/ -I${HDF5_serial}/include +FC = ifort +ifeq ($(FC), ifort) + FFLAGS = -g -check bounds -traceback +else ifeq ($(FC), gfortran) + FFLAGS = -g -fcheck=bounds -fbacktrace +endif + +HDF5_serial = $(HDF5_ROOT) +F90 = $(FC) +F90FLAGS = $(FFLAGS) -I../src/ -I${HDF5_serial}/include CC = cc CFLAGS = -O2 -I../src/mpiuni LDFLAGS = -L. -L${HDF5_serial}/lib LIBS = -lfutils -lhdf5_fortran -lhdf5 -lz -L../src -lmpiuni SERIAL = ex1 ex2 ex3 ex4 ex7 ex8 ex9 ex11 ex12 ex13 ex14 .SUFFIXES: .SUFFIXES: .o .c .f90 .f90.o: $(F90) $(F90FLAGS) -c $< all: $(SERIAL) ex5 ex6 lib: make -C ../src -f Makefile_serial touch lib ex1: ex1.o $(F90) $(LDFLAGS) -o $@ $< $(LIBS) ex2: ex2.o $(F90) $(LDFLAGS) -o $@ $< $(LIBS) ex3: ex3.o $(F90) $(LDFLAGS) -o $@ $< $(LIBS) ex4: ex4.o $(F90) $(LDFLAGS) -o $@ $< $(LIBS) ex5: ex5.o $(F90) $(LDFLAGS) -o $@ $< $(LIBS) ex6: ex6.o $(F90) $(LDFLAGS) -o $@ $< $(LIBS) ex7: ex7.o $(F90) $(LDFLAGS) -o $@ $< $(LIBS) ex8: ex8.o $(F90) $(LDFLAGS) -o $@ $< $(LIBS) ex9: ex9.o $(F90) $(LDFLAGS) -o $@ $< $(LIBS) ex10: ex10.o $(F90) $(LDFLAGS) -o $@ $< $(LIBS) ex11: ex11.o $(F90) $(LDFLAGS) -o $@ $< $(LIBS) ex12: ex12.o $(F90) $(LDFLAGS) -o $@ $< $(LIBS) ex13: ex13.o $(F90) $(LDFLAGS) -o $@ $< $(LIBS) ex14: ex14.o $(F90) $(LDFLAGS) -o $@ $< $(LIBS) testmem: testmem.o cutils.o $(F90) $(LDFLAGS) -o $@ $< cutils.o test_s: $(SERIAL) ex5 @for x in $(SERIAL); do \ echo === Running $$x ===;\ ./$$x ;\ echo ;\ done @echo === Running ex5 ===;\ ./ex5 < ex5.in ;\ echo ;\ ex1.o: lib ex2.o: lib ex3.o: lib ex4.o: lib ex5.o: lib ex6.o: lib ex7.o: lib ex8.o: lib ex9.o: lib ex10.o: lib ex11.o: lib ex12.o: lib ex13.o: lib ex14.o: lib clean: make -C ../src -f Makefile_serial clean rm -f *.o *~ a.out *.h5* distclean: clean make -C ../src -f Makefile_serial distclean rm -f lib rm -f $(SERIAL) ex5 ex6 *.mod TAGS diff --git a/src/Makefile_serial b/src/Makefile_serial index 3160a7c..3ce331f 100644 --- a/src/Makefile_serial +++ b/src/Makefile_serial @@ -1,46 +1,77 @@ +# +# @file Makefile_serial +# +# @brief Makefile for serial version of futils +# +# @copyright +# Copyright (©) 2021 EPFL (Ecole Polytechnique Fédérale de Lausanne) +# SPC (Swiss Plasma Center) +# +# futils 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 3 of the License, or (at your option) +# any later version. +# +# futils is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . +# +# @authors +# (in alphabetical order) +# @author Emmanuel Lanti +# @author Trach-Minh Tran +# PREFIX=$(HOME) -F90 = ifort -F90FLAGS = -g -CB -traceback -I${HDF5_serial}/include +FC = ifort +ifeq ($(FC), ifort) + FFLAGS = -g -check bounds -traceback +else ifeq ($(FC), gfortran) + FFLAGS = -g -fcheck=bounds -fbacktrace +endif + +HDF5_serial = $(HDF5_ROOT) +F90 = $(FC) +F90FLAGS = $(FFLAGS) -I${HDF5_serial}/include CC = cc CFLAGS = -O2 -Impiuni LDFLAGS = -L. -L${HDF5_serial}/lib LIBS = -lfutils -lhdf5_fortran -lhdf5 -lz -lgcc_s -lcrypt -lssl LIBS = -lfutils -lhdf5_fortran -lhdf5 -lz -lmpiuni .SUFFIXES: .SUFFIXES: .o .c .f90 .f90.o: $(F90) $(F90FLAGS) -c $< lib: libfutils.a getfile getfile: getfile.o $(F90) $(LDFLAGS) -o $@ $< $(LIBS) -libfutils.a: futils.o cutils.o buffer.o vis3d.o uniproc.o +libfutils.a: futils.o cutils.o buffer.o uniproc.o ar r $@ $? ranlib $@ make -C mpiuni lib futils.o: append.tpl zappend.tpl \ putarr.tpl cputarr.tpl \ getarr.tpl cgetarr.tpl $(F90) $(F90FLAGS) -Impiuni -c futils.f90 buffer.o: futils.o $(F90) $(F90FLAGS) -Impiuni -c buffer.f90 -vis3d.o: futils.o - $(F90) $(F90FLAGS) -Impiuni -c vis3d.f90 - getfile.o: libfutils.a clean: rm -f *.o *~ a.out make -C mpiuni clean distclean: clean - rm -f $(SERIAL) ex6 getfile *.h5 *.a *.mod + rm -f getfile *.a *.mod make -C mpiuni distclean diff --git a/src/mpiuni/Makefile b/src/mpiuni/Makefile index 06ddfef..9e709aa 100644 --- a/src/mpiuni/Makefile +++ b/src/mpiuni/Makefile @@ -1,48 +1,55 @@ # # @file Makefile # # @brief Makefile for mpiuni library # # @copyright # Copyright (©) 2021 EPFL (Ecole Polytechnique Fédérale de Lausanne) # SPC (Swiss Plasma Center) # # futils 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 3 of the License, or (at your option) # any later version. # # futils is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this program. If not, see . # # @authors # (in alphabetical order) +# @author Emmanuel Lanti # @author Trach-Minh Tran # FC = ifort -FFLAGS = -g -CB -traceback +ifeq ($(FC), ifort) + FFLAGS = -g -check bounds -traceback +else ifeq ($(FC), gfortran) + FFLAGS = -g -fcheck=bounds -fbacktrace +endif + F90 = $(FC) F90FLAGS = $(FFLAGS) -CC = icc +CC = gcc CFLAGS = -O2 -w .SUFFIXES: .o .c .f90 .f90.o: $(F90) $(F90FLAGS) -c $< lib: libmpiuni.a -libmpiuni.a: mpi_stubsf.o second.o +libmpiuni.a: mpi_stubsf.o mpi_mod.o second.o ar r $@ $? ranlib $@ cp -a $@ ../ clean: rm -f *.o *~ a.out + distclean: clean rm -f *.a diff --git a/src/mpiuni/mpi_mod.f90 b/src/mpiuni/mpi_mod.f90 new file mode 100644 index 0000000..ee1bb33 --- /dev/null +++ b/src/mpiuni/mpi_mod.f90 @@ -0,0 +1,425 @@ +! /* -*- Mode: Fortran; -*- */ +! +! (C) 2001 by Argonne National Laboratory. +! See COPYRIGHT in top-level directory. +! +! DO NOT EDIT +! This file created by buildiface +! +MODULE MPI + INTEGER MPI_SOURCE, MPI_TAG, MPI_ERROR + PARAMETER (MPI_SOURCE=3,MPI_TAG=4,MPI_ERROR=5) + INTEGER MPI_STATUS_SIZE + PARAMETER (MPI_STATUS_SIZE=5) + INTEGER MPI_STATUS_IGNORE(MPI_STATUS_SIZE) + INTEGER MPI_STATUSES_IGNORE(MPI_STATUS_SIZE,1) + INTEGER MPI_ERRCODES_IGNORE(1) + CHARACTER*1 MPI_ARGVS_NULL(1,1) + CHARACTER*1 MPI_ARGV_NULL(1) + INTEGER MPI_SUCCESS + PARAMETER (MPI_SUCCESS=0) + INTEGER MPI_ERR_OTHER + PARAMETER (MPI_ERR_OTHER=15) + INTEGER MPI_ERR_WIN + PARAMETER (MPI_ERR_WIN=45) + INTEGER MPI_ERR_FILE + PARAMETER (MPI_ERR_FILE=27) + INTEGER MPI_ERR_COUNT + PARAMETER (MPI_ERR_COUNT=2) + INTEGER MPI_ERR_SPAWN + PARAMETER (MPI_ERR_SPAWN=42) + INTEGER MPI_ERR_BASE + PARAMETER (MPI_ERR_BASE=46) + INTEGER MPI_ERR_RMA_CONFLICT + PARAMETER (MPI_ERR_RMA_CONFLICT=49) + INTEGER MPI_ERR_IN_STATUS + PARAMETER (MPI_ERR_IN_STATUS=17) + INTEGER MPI_ERR_INFO_KEY + PARAMETER (MPI_ERR_INFO_KEY=29) + INTEGER MPI_ERR_LOCKTYPE + PARAMETER (MPI_ERR_LOCKTYPE=47) + INTEGER MPI_ERR_OP + PARAMETER (MPI_ERR_OP=9) + INTEGER MPI_ERR_ARG + PARAMETER (MPI_ERR_ARG=12) + INTEGER MPI_ERR_READ_ONLY + PARAMETER (MPI_ERR_READ_ONLY=40) + INTEGER MPI_ERR_SIZE + PARAMETER (MPI_ERR_SIZE=51) + INTEGER MPI_ERR_BUFFER + PARAMETER (MPI_ERR_BUFFER=1) + INTEGER MPI_ERR_DUP_DATAREP + PARAMETER (MPI_ERR_DUP_DATAREP=24) + INTEGER MPI_ERR_UNSUPPORTED_DATAREP + PARAMETER (MPI_ERR_UNSUPPORTED_DATAREP=43) + INTEGER MPI_ERR_LASTCODE + PARAMETER (MPI_ERR_LASTCODE=1073741823) + INTEGER MPI_ERR_TRUNCATE + PARAMETER (MPI_ERR_TRUNCATE=14) + INTEGER MPI_ERR_DISP + PARAMETER (MPI_ERR_DISP=52) + INTEGER MPI_ERR_PORT + PARAMETER (MPI_ERR_PORT=38) + INTEGER MPI_ERR_INFO_NOKEY + PARAMETER (MPI_ERR_INFO_NOKEY=31) + INTEGER MPI_ERR_ASSERT + PARAMETER (MPI_ERR_ASSERT=53) + INTEGER MPI_ERR_FILE_EXISTS + PARAMETER (MPI_ERR_FILE_EXISTS=25) + INTEGER MPI_ERR_PENDING + PARAMETER (MPI_ERR_PENDING=18) + INTEGER MPI_ERR_COMM + PARAMETER (MPI_ERR_COMM=5) + INTEGER MPI_ERR_KEYVAL + PARAMETER (MPI_ERR_KEYVAL=48) + INTEGER MPI_ERR_NAME + PARAMETER (MPI_ERR_NAME=33) + INTEGER MPI_ERR_REQUEST + PARAMETER (MPI_ERR_REQUEST=19) + INTEGER MPI_ERR_GROUP + PARAMETER (MPI_ERR_GROUP=8) + INTEGER MPI_ERR_TOPOLOGY + PARAMETER (MPI_ERR_TOPOLOGY=10) + INTEGER MPI_ERR_TYPE + PARAMETER (MPI_ERR_TYPE=3) + INTEGER MPI_ERR_TAG + PARAMETER (MPI_ERR_TAG=4) + INTEGER MPI_ERR_INFO_VALUE + PARAMETER (MPI_ERR_INFO_VALUE=30) + INTEGER MPI_ERR_NOT_SAME + PARAMETER (MPI_ERR_NOT_SAME=35) + INTEGER MPI_ERR_RMA_SYNC + PARAMETER (MPI_ERR_RMA_SYNC=50) + INTEGER MPI_ERR_INFO + PARAMETER (MPI_ERR_INFO=28) + INTEGER MPI_ERR_NO_MEM + PARAMETER (MPI_ERR_NO_MEM=34) + INTEGER MPI_ERR_BAD_FILE + PARAMETER (MPI_ERR_BAD_FILE=22) + INTEGER MPI_ERR_FILE_IN_USE + PARAMETER (MPI_ERR_FILE_IN_USE=26) + INTEGER MPI_ERR_UNKNOWN + PARAMETER (MPI_ERR_UNKNOWN=13) + INTEGER MPI_ERR_UNSUPPORTED_OPERATION + PARAMETER (MPI_ERR_UNSUPPORTED_OPERATION=44) + INTEGER MPI_ERR_QUOTA + PARAMETER (MPI_ERR_QUOTA=39) + INTEGER MPI_ERR_AMODE + PARAMETER (MPI_ERR_AMODE=21) + INTEGER MPI_ERR_ROOT + PARAMETER (MPI_ERR_ROOT=7) + INTEGER MPI_ERR_RANK + PARAMETER (MPI_ERR_RANK=6) + INTEGER MPI_ERR_DIMS + PARAMETER (MPI_ERR_DIMS=11) + INTEGER MPI_ERR_NO_SUCH_FILE + PARAMETER (MPI_ERR_NO_SUCH_FILE=37) + INTEGER MPI_ERR_SERVICE + PARAMETER (MPI_ERR_SERVICE=41) + INTEGER MPI_ERR_INTERN + PARAMETER (MPI_ERR_INTERN=16) + INTEGER MPI_ERR_IO + PARAMETER (MPI_ERR_IO=32) + INTEGER MPI_ERR_ACCESS + PARAMETER (MPI_ERR_ACCESS=20) + INTEGER MPI_ERR_NO_SPACE + PARAMETER (MPI_ERR_NO_SPACE=36) + INTEGER MPI_ERR_CONVERSION + PARAMETER (MPI_ERR_CONVERSION=23) + INTEGER MPI_ERRORS_ARE_FATAL + PARAMETER (MPI_ERRORS_ARE_FATAL=1409286144) + INTEGER MPI_ERRORS_RETURN + PARAMETER (MPI_ERRORS_RETURN=1409286145) + INTEGER MPI_IDENT + PARAMETER (MPI_IDENT=0) + INTEGER MPI_CONGRUENT + PARAMETER (MPI_CONGRUENT=1) + INTEGER MPI_SIMILAR + PARAMETER (MPI_SIMILAR=2) + INTEGER MPI_UNEQUAL + PARAMETER (MPI_UNEQUAL=3) + INTEGER MPI_MAX + PARAMETER (MPI_MAX=1476395009) + INTEGER MPI_MIN + PARAMETER (MPI_MIN=1476395010) + INTEGER MPI_SUM + PARAMETER (MPI_SUM=1476395011) + INTEGER MPI_PROD + PARAMETER (MPI_PROD=1476395012) + INTEGER MPI_LAND + PARAMETER (MPI_LAND=1476395013) + INTEGER MPI_BAND + PARAMETER (MPI_BAND=1476395014) + INTEGER MPI_LOR + PARAMETER (MPI_LOR=1476395015) + INTEGER MPI_BOR + PARAMETER (MPI_BOR=1476395016) + INTEGER MPI_LXOR + PARAMETER (MPI_LXOR=1476395017) + INTEGER MPI_BXOR + PARAMETER (MPI_BXOR=1476395018) + INTEGER MPI_MINLOC + PARAMETER (MPI_MINLOC=1476395019) + INTEGER MPI_MAXLOC + PARAMETER (MPI_MAXLOC=1476395020) + INTEGER MPI_REPLACE + PARAMETER (MPI_REPLACE=1476395021) + INTEGER MPI_COMM_WORLD + PARAMETER (MPI_COMM_WORLD=1140850688) + INTEGER MPI_COMM_SELF + PARAMETER (MPI_COMM_SELF=1140850689) + INTEGER MPI_GROUP_EMPTY + PARAMETER (MPI_GROUP_EMPTY=1207959552) + INTEGER MPI_COMM_NULL + PARAMETER (MPI_COMM_NULL=67108864) + INTEGER MPI_WIN_NULL + PARAMETER (MPI_WIN_NULL=536870912) + INTEGER MPI_FILE_NULL + PARAMETER (MPI_FILE_NULL=0) + INTEGER MPI_GROUP_NULL + PARAMETER (MPI_GROUP_NULL=134217728) + INTEGER MPI_OP_NULL + PARAMETER (MPI_OP_NULL=402653184) + INTEGER MPI_DATATYPE_NULL + PARAMETER (MPI_DATATYPE_NULL=201326592) + INTEGER MPI_REQUEST_NULL + PARAMETER (MPI_REQUEST_NULL=738197504) + INTEGER MPI_ERRHANDLER_NULL + PARAMETER (MPI_ERRHANDLER_NULL=335544320) + INTEGER MPI_INFO_NULL + PARAMETER (MPI_INFO_NULL=469762048) + INTEGER MPI_TAG_UB + PARAMETER (MPI_TAG_UB=1681915906) + INTEGER MPI_HOST + PARAMETER (MPI_HOST=1681915908) + INTEGER MPI_IO + PARAMETER (MPI_IO=1681915910) + INTEGER MPI_WTIME_IS_GLOBAL + PARAMETER (MPI_WTIME_IS_GLOBAL=1681915912) + INTEGER MPI_UNIVERSE_SIZE + PARAMETER (MPI_UNIVERSE_SIZE=1681915914) + INTEGER MPI_LASTUSEDCODE + PARAMETER (MPI_LASTUSEDCODE=1681915916) + INTEGER MPI_APPNUM + PARAMETER (MPI_APPNUM=1681915918) + INTEGER MPI_WIN_BASE + PARAMETER (MPI_WIN_BASE=1711276034) + INTEGER MPI_WIN_SIZE + PARAMETER (MPI_WIN_SIZE=1711276036) + INTEGER MPI_WIN_DISP_UNIT + PARAMETER (MPI_WIN_DISP_UNIT=1711276038) + INTEGER MPI_MAX_ERROR_STRING + PARAMETER (MPI_MAX_ERROR_STRING=511) + INTEGER MPI_MAX_NAME_STRING + PARAMETER (MPI_MAX_NAME_STRING=62) + INTEGER MPI_MAX_PORT_NAME + PARAMETER (MPI_MAX_PORT_NAME=255) + INTEGER MPI_MAX_OBJECT_NAME + PARAMETER (MPI_MAX_OBJECT_NAME=127) + INTEGER MPI_MAX_INFO_KEY + PARAMETER (MPI_MAX_INFO_KEY=254) + INTEGER MPI_MAX_INFO_VAL + PARAMETER (MPI_MAX_INFO_VAL=1023) + INTEGER MPI_MAX_PROCESSOR_NAME + PARAMETER (MPI_MAX_PROCESSOR_NAME=128-1) + INTEGER MPI_MAX_DATAREP_STRING + PARAMETER (MPI_MAX_DATAREP_STRING=127) + INTEGER MPI_UNDEFINED, MPI_UNDEFINED_RANK + PARAMETER (MPI_UNDEFINED=(-32766)) + PARAMETER (MPI_UNDEFINED_RANK=(-32766)) + INTEGER MPI_KEYVAL_INVALID + PARAMETER (MPI_KEYVAL_INVALID=603979776) + INTEGER MPI_BSEND_OVERHEAD + PARAMETER (MPI_BSEND_OVERHEAD=59) + INTEGER MPI_PROC_NULL + PARAMETER (MPI_PROC_NULL=-1) + INTEGER MPI_ANY_SOURCE + PARAMETER (MPI_ANY_SOURCE=-2) + INTEGER MPI_ANY_TAG + PARAMETER (MPI_ANY_TAG=-1) + INTEGER MPI_ROOT + PARAMETER (MPI_ROOT=-3) + INTEGER MPI_GRAPH + PARAMETER (MPI_GRAPH=1) + INTEGER MPI_CART + PARAMETER (MPI_CART=2) + INTEGER MPI_VERSION + PARAMETER (MPI_VERSION=2) + INTEGER MPI_SUBVERSION + PARAMETER (MPI_SUBVERSION=0) + INTEGER MPI_LOCK_EXCLUSIVE + PARAMETER (MPI_LOCK_EXCLUSIVE=234) + INTEGER MPI_LOCK_SHARED + PARAMETER (MPI_LOCK_SHARED=235) + INTEGER MPI_COMPLEX + PARAMETER (MPI_COMPLEX=1275070494) + INTEGER MPI_DOUBLE_COMPLEX + PARAMETER (MPI_DOUBLE_COMPLEX=1275072546) + INTEGER MPI_LOGICAL + PARAMETER (MPI_LOGICAL=1275069469) + INTEGER MPI_REAL + PARAMETER (MPI_REAL=1275069468) + INTEGER MPI_DOUBLE_PRECISION + PARAMETER (MPI_DOUBLE_PRECISION=1275070495) + INTEGER MPI_INTEGER + PARAMETER (MPI_INTEGER=1275069467) + INTEGER MPI_2INTEGER + PARAMETER (MPI_2INTEGER=1275070496) + INTEGER MPI_2COMPLEX + PARAMETER (MPI_2COMPLEX=1275072548) + INTEGER MPI_2DOUBLE_PRECISION + PARAMETER (MPI_2DOUBLE_PRECISION=1275072547) + INTEGER MPI_2REAL + PARAMETER (MPI_2REAL=1275070497) + INTEGER MPI_2DOUBLE_COMPLEX + PARAMETER (MPI_2DOUBLE_COMPLEX=1275076645) + INTEGER MPI_CHARACTER + PARAMETER (MPI_CHARACTER=1275068698) + INTEGER MPI_BYTE + PARAMETER (MPI_BYTE=1275068685) + INTEGER MPI_UB + PARAMETER (MPI_UB=1275068433) + INTEGER MPI_LB + PARAMETER (MPI_LB=1275068432) + INTEGER MPI_PACKED + PARAMETER (MPI_PACKED=1275068687) + INTEGER MPI_INTEGER1 + PARAMETER (MPI_INTEGER1=1275068717) + INTEGER MPI_INTEGER2 + PARAMETER (MPI_INTEGER2=1275068975) + INTEGER MPI_INTEGER4 + PARAMETER (MPI_INTEGER4=1275069488) + INTEGER MPI_INTEGER8 + PARAMETER (MPI_INTEGER8=1275070513) + INTEGER MPI_INTEGER16 + PARAMETER (MPI_INTEGER16=MPI_DATATYPE_NULL) + INTEGER MPI_REAL4 + PARAMETER (MPI_REAL4=1275069479) + INTEGER MPI_REAL8 + PARAMETER (MPI_REAL8=1275070505) + INTEGER MPI_REAL16 + PARAMETER (MPI_REAL16=MPI_DATATYPE_NULL) + INTEGER MPI_COMPLEX8 + PARAMETER (MPI_COMPLEX8=1275070504) + INTEGER MPI_COMPLEX16 + PARAMETER (MPI_COMPLEX16=1275072554) + INTEGER MPI_COMPLEX32 + PARAMETER (MPI_COMPLEX32=MPI_DATATYPE_NULL) + INTEGER MPI_ADDRESS_KIND, MPI_OFFSET_KIND + PARAMETER (MPI_ADDRESS_KIND=4) + PARAMETER (MPI_OFFSET_KIND=8) + INTEGER MPI_COMBINER_NAMED + PARAMETER (MPI_COMBINER_NAMED=1) + INTEGER MPI_COMBINER_DUP + PARAMETER (MPI_COMBINER_DUP=2) + INTEGER MPI_COMBINER_CONTIGUOUS + PARAMETER (MPI_COMBINER_CONTIGUOUS=3) + INTEGER MPI_COMBINER_VECTOR + PARAMETER (MPI_COMBINER_VECTOR=4) + INTEGER MPI_COMBINER_HVECTOR_INTEGER + PARAMETER (MPI_COMBINER_HVECTOR_INTEGER=5) + INTEGER MPI_COMBINER_HVECTOR + PARAMETER (MPI_COMBINER_HVECTOR=6) + INTEGER MPI_COMBINER_INDEXED + PARAMETER (MPI_COMBINER_INDEXED=7) + INTEGER MPI_COMBINER_HINDEXED_INTEGER + PARAMETER (MPI_COMBINER_HINDEXED_INTEGER=8) + INTEGER MPI_COMBINER_HINDEXED + PARAMETER (MPI_COMBINER_HINDEXED=9) + INTEGER MPI_COMBINER_INDEXED_BLOCK + PARAMETER (MPI_COMBINER_INDEXED_BLOCK=10) + INTEGER MPI_COMBINER_STRUCT_INTEGER + PARAMETER (MPI_COMBINER_STRUCT_INTEGER=11) + INTEGER MPI_COMBINER_STRUCT + PARAMETER (MPI_COMBINER_STRUCT=12) + INTEGER MPI_COMBINER_SUBARRAY + PARAMETER (MPI_COMBINER_SUBARRAY=13) + INTEGER MPI_COMBINER_DARRAY + PARAMETER (MPI_COMBINER_DARRAY=14) + INTEGER MPI_COMBINER_F90_REAL + PARAMETER (MPI_COMBINER_F90_REAL=15) + INTEGER MPI_COMBINER_F90_COMPLEX + PARAMETER (MPI_COMBINER_F90_COMPLEX=16) + INTEGER MPI_COMBINER_F90_INTEGER + PARAMETER (MPI_COMBINER_F90_INTEGER=17) + INTEGER MPI_COMBINER_RESIZED + PARAMETER (MPI_COMBINER_RESIZED=18) + INTEGER MPI_MODE_NOCHECK + PARAMETER (MPI_MODE_NOCHECK=1024) + INTEGER MPI_MODE_NOSTORE + PARAMETER (MPI_MODE_NOSTORE=2048) + INTEGER MPI_MODE_NOPUT + PARAMETER (MPI_MODE_NOPUT=4096) + INTEGER MPI_MODE_NOPRECEDE + PARAMETER (MPI_MODE_NOPRECEDE=8192) + INTEGER MPI_MODE_NOSUCCEED + PARAMETER (MPI_MODE_NOSUCCEED=16384) + INTEGER MPI_THREAD_SINGLE + PARAMETER (MPI_THREAD_SINGLE=0) + INTEGER MPI_THREAD_FUNNELED + PARAMETER (MPI_THREAD_FUNNELED=1) + INTEGER MPI_THREAD_SERIALIZED + PARAMETER (MPI_THREAD_SERIALIZED=2) + INTEGER MPI_THREAD_MULTIPLE + PARAMETER (MPI_THREAD_MULTIPLE=3) + INTEGER MPI_MODE_RDONLY + PARAMETER (MPI_MODE_RDONLY=2) + INTEGER MPI_MODE_RDWR + PARAMETER (MPI_MODE_RDWR=8) + INTEGER MPI_MODE_WRONLY + PARAMETER (MPI_MODE_WRONLY=4) + INTEGER MPI_MODE_DELETE_ON_CLOSE + PARAMETER (MPI_MODE_DELETE_ON_CLOSE=16) + INTEGER MPI_MODE_UNIQUE_OPEN + PARAMETER (MPI_MODE_UNIQUE_OPEN=32) + INTEGER MPI_MODE_CREATE + PARAMETER (MPI_MODE_CREATE=1) + INTEGER MPI_MODE_EXCL + PARAMETER (MPI_MODE_EXCL=64) + INTEGER MPI_MODE_APPEND + PARAMETER (MPI_MODE_APPEND=128) + INTEGER MPI_MODE_SEQUENTIAL + PARAMETER (MPI_MODE_SEQUENTIAL=256) + INTEGER MPI_SEEK_SET + PARAMETER (MPI_SEEK_SET=600) + INTEGER MPI_SEEK_CUR + PARAMETER (MPI_SEEK_CUR=602) + INTEGER MPI_SEEK_END + PARAMETER (MPI_SEEK_END=604) + INTEGER MPI_ORDER_C + PARAMETER (MPI_ORDER_C=56) + INTEGER MPI_ORDER_FORTRAN + PARAMETER (MPI_ORDER_FORTRAN=57) + INTEGER MPI_DISTRIBUTE_BLOCK + PARAMETER (MPI_DISTRIBUTE_BLOCK=121) + INTEGER MPI_DISTRIBUTE_CYCLIC + PARAMETER (MPI_DISTRIBUTE_CYCLIC=122) + INTEGER MPI_DISTRIBUTE_NONE + PARAMETER (MPI_DISTRIBUTE_NONE=123) + INTEGER MPI_DISTRIBUTE_DFLT_DARG + PARAMETER (MPI_DISTRIBUTE_DFLT_DARG=-49767) + integer*8 MPI_DISPLACEMENT_CURRENT + PARAMETER (MPI_DISPLACEMENT_CURRENT=-54278278) + INTEGER MPI_BOTTOM, MPI_IN_PLACE + !$$$ EXTERNAL MPI_DUP_FN, MPI_NULL_DELETE_FN, MPI_NULL_COPY_FN + !$$$ EXTERNAL MPI_WTIME, MPI_WTICK + !$$$ EXTERNAL PMPI_WTIME, PMPI_WTICK + !$$$ EXTERNAL MPI_COMM_DUP_FN, MPI_COMM_NULL_DELETE_FN + !$$$ EXTERNAL MPI_COMM_NULL_COPY_FN + !$$$ EXTERNAL MPI_WIN_DUP_FN, MPI_WIN_NULL_DELETE_FN + !$$$ EXTERNAL MPI_WIN_NULL_COPY_FN + !$$$ EXTERNAL MPI_TYPE_DUP_FN, MPI_TYPE_NULL_DELETE_FN + !$$$ EXTERNAL MPI_TYPE_NULL_COPY_FN + !$$$ EXTERNAL MPI_CONVERSION_FN_NULL + DOUBLE PRECISION MPI_WTIME, MPI_WTICK + DOUBLE PRECISION PMPI_WTIME, PMPI_WTICK + + + COMMON /MPIPRIV1/ MPI_BOTTOM, MPI_IN_PLACE, MPI_STATUS_IGNORE + + COMMON /MPIPRIV2/ MPI_STATUSES_IGNORE, MPI_ERRCODES_IGNORE + SAVE /MPIPRIV1/,/MPIPRIV2/ + + COMMON /MPIPRIVC/ MPI_ARGVS_NULL, MPI_ARGV_NULL + SAVE /MPIPRIVC/ +END MODULE MPI