diff options
author | schnetter <schnetter@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 2004-01-19 14:22:04 +0000 |
---|---|---|
committer | schnetter <schnetter@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 2004-01-19 14:22:04 +0000 |
commit | a871263329e969b92a3835a06286df9ee2574e3d (patch) | |
tree | 173e1678f7e5cad0532c8c553aa0a004b35a9efe | |
parent | 539f0616473c60e35b88780ac7b96d4cba1ef6f9 (diff) |
Add (incomplete) Fortran 90 bindings for the flesh functions.
Also, detect Fortran 90 inter-module dependencies automatically.
git-svn-id: http://svn.cactuscode.org/flesh/trunk@3524 17b73243-c579-4c4c-a9d2-2d5706c11dac
-rwxr-xr-x | lib/make/configure | 11 | ||||
-rw-r--r-- | lib/make/configure.in | 9 | ||||
-rw-r--r-- | lib/make/force-rebuild | 4 | ||||
-rw-r--r-- | lib/make/make.config.defn.in | 20 | ||||
-rw-r--r-- | lib/make/make.config.rules.in | 2 | ||||
-rw-r--r-- | lib/sbin/CST | 5 | ||||
-rwxr-xr-x | lib/sbin/f_depend_modules.pl | 72 | ||||
-rw-r--r-- | src/include/cctk.F90 | 17 | ||||
-rw-r--r-- | src/include/cctk_ActiveThorns.F90 | 105 | ||||
-rw-r--r-- | src/include/cctk_Banner.F90 | 21 | ||||
-rw-r--r-- | src/include/cctk_Cache.F90 | 23 | ||||
-rw-r--r-- | src/include/cctk_Comm.F90 | 160 | ||||
-rw-r--r-- | src/include/cctk_CommandLine.F90 | 30 | ||||
-rw-r--r-- | src/include/cctk_Complex.F90 | 14 | ||||
-rw-r--r-- | src/include/cctk_Constants.F90 | 13 | ||||
-rw-r--r-- | src/include/cctk_Coord.F90 | 147 | ||||
-rw-r--r-- | src/include/make.code.defn | 20 | ||||
-rw-r--r-- | src/make.code.defn | 3 | ||||
-rw-r--r-- | src/make.code.deps | 1 |
19 files changed, 664 insertions, 13 deletions
diff --git a/lib/make/configure b/lib/make/configure index 4bd70a6d..ec34fd30 100755 --- a/lib/make/configure +++ b/lib/make/configure @@ -4920,6 +4920,15 @@ fi : ${F_DEPEND_OUT=' > $@'} +# How to generate F90 dependency info for modules + + +: ${F_DEPEND_MODULES='$(CCTK_HOME)/lib/sbin/f_depend_modules.pl'} + + + +: ${F_DEPEND_MODULES_OUT=' >> $@'} + # Postprocessing of object files. Most architectures don't need to do this at all. @@ -5243,6 +5252,8 @@ s%@F77_DEPEND@%$F77_DEPEND%g s%@F77_DEPEND_OUT@%$F77_DEPEND_OUT%g s%@F_DEPEND@%$F_DEPEND%g s%@F_DEPEND_OUT@%$F_DEPEND_OUT%g +s%@F_DEPEND_MODULES@%$F_DEPEND_MODULES%g +s%@F_DEPEND_MODULES_OUT@%$F_DEPEND_MODULES_OUT%g s%@C_POSTPROCESSING@%$C_POSTPROCESSING%g s%@CXX_POSTPROCESSING@%$CXX_POSTPROCESSING%g s%@F77_POSTPROCESSING@%$F77_POSTPROCESSING%g diff --git a/lib/make/configure.in b/lib/make/configure.in index e889850c..bd2dcee3 100644 --- a/lib/make/configure.in +++ b/lib/make/configure.in @@ -960,6 +960,15 @@ AC_SUBST(F_DEPEND_OUT) : ${F_DEPEND_OUT=' > $@'} +# How to generate F90 dependency info for modules +AC_SUBST(F_DEPEND_MODULES) + +: ${F_DEPEND_MODULES='$(CCTK_HOME)/lib/sbin/f_depend_modules.pl'} + +AC_SUBST(F_DEPEND_MODULES_OUT) + +: ${F_DEPEND_MODULES_OUT=' >> $@'} + # Postprocessing of object files. Most architectures don't need to do this at all. AC_SUBST(C_POSTPROCESSING) diff --git a/lib/make/force-rebuild b/lib/make/force-rebuild index c0cb471b..e48169e0 100644 --- a/lib/make/force-rebuild +++ b/lib/make/force-rebuild @@ -5,7 +5,7 @@ # @desc # Timestamp file for forcing rebuilds of configurations # @enddesc -# @version $Id: force-rebuild,v 1.10 2003-11-21 15:27:24 schnetter Exp $ +# @version $Id: force-rebuild,v 1.11 2004-01-19 14:22:04 schnetter Exp $ # @@*/ 6 March 2003: minor changes to CreateFunctionBindings.pl @@ -20,3 +20,5 @@ 19 November 2003: Change include mechanism for cctk_Functions.h. 21 November 2003: Allow vector scalars. 21 November 2003: Allow vector groups to have multiple variables. +19 Januar 2004: Compile Cactus and CactusBindings first so that other thorns + can access Fortran modules therein diff --git a/lib/make/make.config.defn.in b/lib/make/make.config.defn.in index 861ab176..0fd8f4bf 100644 --- a/lib/make/make.config.defn.in +++ b/lib/make/make.config.defn.in @@ -83,15 +83,17 @@ LIBNAME_SUFFIX = @LIBNAME_SUFFIX@ CACTUSLIBLINKLINE = @CACTUSLIBLINKLINE@ # Dependency file generation -C_DEPEND = @C_DEPEND@ -CXX_DEPEND = @CXX_DEPEND@ -F_DEPEND = @F_DEPEND@ -F77_DEPEND = @F77_DEPEND@ - -C_DEPEND_OUT = @C_DEPEND_OUT@ -CXX_DEPEND_OUT = @CXX_DEPEND_OUT@ -F_DEPEND_OUT = @F_DEPEND_OUT@ -F77_DEPEND_OUT = @F77_DEPEND_OUT@ +C_DEPEND = @C_DEPEND@ +CXX_DEPEND = @CXX_DEPEND@ +F77_DEPEND = @F77_DEPEND@ +F_DEPEND = @F_DEPEND@ +F_DEPEND_MODULES = @F_DEPEND_MODULES@ + +C_DEPEND_OUT = @C_DEPEND_OUT@ +CXX_DEPEND_OUT = @CXX_DEPEND_OUT@ +F77_DEPEND_OUT = @F77_DEPEND_OUT@ +F_DEPEND_OUT = @F_DEPEND_OUT@ +F_DEPEND_MODULES_OUT = @F_DEPEND_MODULES_OUT@ # Some compilers are very picky about the names of C++ files CXX_WORKING_NAME = @CXX_WORKING_NAME@ diff --git a/lib/make/make.config.rules.in b/lib/make/make.config.rules.in index 4228bd4a..823c9549 100644 --- a/lib/make/make.config.rules.in +++ b/lib/make/make.config.rules.in @@ -54,11 +54,13 @@ endef define F_DEPENDENCIES $(F_DEPEND) $(INC_DIRS:%=-I%) $(EXTRA_DEFINES:%=-D%) -DFCODE -DF90CODE $< $(F_DEPEND_OUT) $(DEPENDENCY_FIXER) + current_wd=`$(GET_WD)` ; cat $< | sed -e 's.//.(CCTK_AUTOMATICALLY_GENERATED_CONCATENATION_PROTECTION).g' | $(FPP) $(FPPFLAGS) $(INC_DIRS:%=-I%) $(EXTRA_DEFINES:%=-D%) -DFCODE -DF90CODE | sed -e 's.(CCTK_AUTOMATICALLY_GENERATED_CONCATENATION_PROTECTION).//.g' | $(PERL) $(F_DEPEND_MODULES) $< $(basename $(notdir $<)).F.o $(SRCDIR) $(USESTHORNS:%=$$current_wd/../%) $(F_DEPEND_MODULES_OUT) || { rm $@; exit 1; } endef define F90_DEPENDENCIES $(F_DEPEND) $(INC_DIRS:%=-I%) $(EXTRA_DEFINES:%=-D%) -DFCODE -DF90CODE $< $(F_DEPEND_OUT) $(DEPENDENCY_FIXER) + current_wd=`$(GET_WD)` ; cat $< | sed -e 's.//.(CCTK_AUTOMATICALLY_GENERATED_CONCATENATION_PROTECTION).g' | $(FPP) $(FPPFLAGS) $(INC_DIRS:%=-I%) $(EXTRA_DEFINES:%=-D%) -DFCODE -DF90CODE | sed -e 's.(CCTK_AUTOMATICALLY_GENERATED_CONCATENATION_PROTECTION).//.g' | $(PERL) $(F_DEPEND_MODULES) $< $(basename $(notdir $<)).F90.o $(SRCDIR) $(USESTHORNS:%=$$current_wd/../%) $(F_DEPEND_MODULES_OUT) || { rm $@; exit 1; } endef # No preprocessing, just create empty dependency file diff --git a/lib/sbin/CST b/lib/sbin/CST index d36a675c..e761ceb3 100644 --- a/lib/sbin/CST +++ b/lib/sbin/CST @@ -6,7 +6,7 @@ # @desc # Parses the the configuration files for thorns. # @enddesc -# @version $Header: /mnt/data2/cvs2svn/cvs-repositories/Cactus/lib/sbin/CST,v 1.59 2003-11-21 15:27:24 schnetter Exp $ +# @version $Header: /mnt/data2/cvs2svn/cvs-repositories/Cactus/lib/sbin/CST,v 1.60 2004-01-19 14:22:04 schnetter Exp $ #@@*/ # Global parameter to track the number of errors from the CST @@ -352,7 +352,8 @@ sub CreateThornLinkList # add this thorn to the thorn liblist # as well as any other thorns it requires (directly or indirectly) - push (@liblist, $thorn, RequiredThorns ($thorn, $thorn, $config)); + push (@liblist, $thorn, RequiredThorns ($thorn, $thorn, $config), + 'Cactus', 'CactusBindings'); } # remove duplicate entries from the list, only keeping the rightmost diff --git a/lib/sbin/f_depend_modules.pl b/lib/sbin/f_depend_modules.pl new file mode 100755 index 00000000..f226ae69 --- /dev/null +++ b/lib/sbin/f_depend_modules.pl @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# $Header$ + +# Create dependencies for Fortran 90 "use" and "include" statements + +my $srcfile = $ARGV[0]; +my $dest = $ARGV[1]; +my $srcdir = $ARGV[2]; +my @otherdirs = @ARGV[3..$#ARGV]; + +my @suffixes = (".f77", ".f", ".f90", ".F77", ".F", ".F90"); + +print "$dest:"; + +my %modules; + +my $line = 0; +while (<STDIN>) { + ++ $line; + if (/^\s*#\s*(\d+)/) { + # line number directive from C preprocessor + $line = $1 - 1; + } elsif (/^\s*include\s*['"]([^'"]+)['"]/i) { + # include statement + my $name = $1; + print " \\\n $srcdir/$name"; + } elsif (/^\s*module\s+(\w+)/i) { + # begin of a module + my $name = $1; + $modules{$name} = 1; + } elsif (/^\s*use\s+(\w+)/i) { + # use statement + my $name = $1; + my $found = 0; + if (! $found) { + # reference to a module in this file? + if ($modules{$name}) { + $found = 1; + } + } + if (! $found) { + # reference to a module in this thorn? + loop: foreach my $suffix (@suffixes) { + if (-e "$srcdir/$name$suffix") { + $found = 1; + print " \\\n $name$suffix.o"; + last loop; + } + } + } + if (! $found) { + # reference to a module in another thorn? + loop: foreach my $dir (@otherdirs) { + # note: we could also use the SUBDIRS from the make.code.defn here + foreach my $subdir (".", "include") { + foreach my $suffix (@suffixes) { + if (-e "$dir/$subdir/$name$suffix.o") { + $found = 1; + print " \\\n $dir/$subdir/$name$suffix.o"; + last loop; + } + } + } + } + } + if (! $found) { + print STDERR "$srcfile:$line: Warning: While tracing module depencencies: Source file for module $name not found\n"; + } + } +} + +print "\n"; diff --git a/src/include/cctk.F90 b/src/include/cctk.F90 new file mode 100644 index 00000000..b2309552 --- /dev/null +++ b/src/include/cctk.F90 @@ -0,0 +1,17 @@ +! $Header$ + +! Fortran 90 interface declarations for the flesh routines + +#include "cctk.h" + +module cctk + use cctk_ActiveThorns + use cctk_Banner + use cctk_Cache + use cctk_Comm + use cctk_CommandLine + use cctk_Complex + use cctk_Constants + use cctk_Coord + implicit none +end module cctk diff --git a/src/include/cctk_ActiveThorns.F90 b/src/include/cctk_ActiveThorns.F90 new file mode 100644 index 00000000..a0b2f0b1 --- /dev/null +++ b/src/include/cctk_ActiveThorns.F90 @@ -0,0 +1,105 @@ +! $Header$ + +! Fortran 90 interface declarations for the routines +! which have their C declarations in cctk_ActiveThorns.h + +#include "cctk.h" + +module cctk_ActiveThorns + implicit none + + interface + +! This routine has been made a function instead of a subroutine +! and is declared in cctk.h +! subroutine CCTK_IsThornActive (ierr, name) +! implicit none +! integer ierr +! character(*) name +! end subroutine CCTK_IsThornActive + + subroutine CCTK_ThornHandle (handle, name) + implicit none + CCTK_POINTER_TO_CONST handle + character(*) name + end subroutine CCTK_ThornHandle + + subroutine CCTK_IsThornActiveH (ierr, handle) + implicit none + integer ierr + CCTK_POINTER_TO_CONST handle + end subroutine CCTK_IsThornActiveH + + subroutine CCTK_IsThornCompiled (ierr, name) + implicit none + integer ierr + character(*) name + end subroutine CCTK_IsThornCompiled + + subroutine CCTK_IsImplementationActive (ierr, name) + implicit none + integer ierr + character(*) name + end subroutine CCTK_IsImplementationActive + + subroutine CCTK_IsImplementationCompiled (ierr, name) + implicit none + integer ierr + character(*) name + end subroutine CCTK_IsImplementationCompiled + + subroutine CCTK_ActivatingThorn (thorn, imp) + implicit none + character(*) thorn + character(*) imp + end subroutine CCTK_ActivatingThorn + + subroutine CCTK_ImpThornList (thornlist, imp) + implicit none + CCTK_POINTER thornlist + character(*) imp + end subroutine CCTK_ImpThornList + + subroutine CCTK_ThornImplementation (imp, thorn) + implicit none + character(*) imp + character(*) thorn + end subroutine CCTK_ThornImplementation + + subroutine CCTK_ImplementationThorn (thorn, imp) + implicit none + character(*) thorn + character(*) imp + end subroutine CCTK_ImplementationThorn + + subroutine CCTK_ImplementationRequires (implist, imp) + implicit none + CCTK_POINTER implist + character(*) imp + end subroutine CCTK_ImplementationRequires + + subroutine CCTK_NumCompiledThorns (num) + implicit none + integer num + end subroutine CCTK_NumCompiledThorns + + subroutine CCTK_NumCompiledImplementations (num) + implicit none + integer num + end subroutine CCTK_NumCompiledImplementations + + subroutine CCTK_CompiledThorn (thorn_name, thorn_index) + implicit none + character(*) thorn_name + integer thorn_index + end subroutine CCTK_CompiledThorn + + subroutine CCTK_CompiledImplementation (imp_name, imp_index) + implicit none + character(*) imp_name + integer imp_index + end subroutine CCTK_CompiledImplementation + + end interface + +end module cctk_ActiveThorns diff --git a/src/include/cctk_Banner.F90 b/src/include/cctk_Banner.F90 new file mode 100644 index 00000000..d930dc13 --- /dev/null +++ b/src/include/cctk_Banner.F90 @@ -0,0 +1,21 @@ +! $Header$ + +! Fortran 90 interface declarations for the routines +! which have their C declarations in cctk_Banner.h + +#include "cctk.h" + +module cctk_Banner + implicit none + + interface + + subroutine CCTK_RegisterBanner (ierr, banner) + implicit none + integer ierr + character(*) banner + end subroutine CCTK_RegisterBanner + + end interface + +end module cctk_Banner diff --git a/src/include/cctk_Cache.F90 b/src/include/cctk_Cache.F90 new file mode 100644 index 00000000..421d1dcd --- /dev/null +++ b/src/include/cctk_Cache.F90 @@ -0,0 +1,23 @@ +! $Header$ + +! Fortran 90 interface declarations for the routines +! which have their C declarations in cctk_Cache.h + +#include "cctk.h" + +module cctk_Cache + implicit none + + interface + + subroutine Util_CacheMalloc (pointer, index, size, realstart) + implicit none + CCTK_POINTER pointer + integer index + integer size + CCTK_POINTER realstart + end subroutine Util_CacheMalloc + + end interface + +end module cctk_Cache diff --git a/src/include/cctk_Comm.F90 b/src/include/cctk_Comm.F90 new file mode 100644 index 00000000..66aff156 --- /dev/null +++ b/src/include/cctk_Comm.F90 @@ -0,0 +1,160 @@ +! $Header$ + +! Fortran 90 interface declarations for the routines +! which have their C declarations in cctk_Comm.h + +#include "cctk.h" + +module cctk_Comm + implicit none + + interface + + subroutine CCTK_SyncGroup (ierr, GH, group) + implicit none + integer ierr + CCTK_POINTER_TO_CONST GH + character(*) group + end subroutine CCTK_SyncGroup + + subroutine CCTK_Barrier (ierr, GH) + implicit none + integer ierr + CCTK_POINTER_TO_CONST GH + end subroutine CCTK_Barrier + +! This routine has been made a function instead of a subroutine +! and is declared in cctk.h +! subroutine CCTK_MyProc (ierr, GH) +! implicit none +! integer ierr +! CCTK_POINTER_TO_CONST GH +! end subroutine CCTK_MyProc + +! This routine has been made a function instead of a subroutine +! and is declared in cctk.h +! subroutine CCTK_nProcs (ierr, GH) +! implicit none +! integer ierr +! CCTK_POINTER_TO_CONST GH +! end subroutine CCTK_nProcs + + subroutine CCTK_ParallelInit (ierr, GH) + implicit none + integer ierr + CCTK_POINTER_TO_CONST GH + end subroutine CCTK_ParallelInit + + subroutine CCTK_Exit (ierr, GH, retval) + implicit none + integer ierr + CCTK_POINTER GH + integer retval + end subroutine CCTK_Exit + + subroutine CCTK_Abort (ierr, GH, retval) + implicit none + integer ierr + CCTK_POINTER GH + integer retval + end subroutine CCTK_Abort + + subroutine CCTK_SetupGH (GH, config, convergence_level) + implicit none + CCTK_POINTER GH + CCTK_POINTER config + integer convergence_level + end subroutine CCTK_SetupGH + +! CCTK_ArrayGroupSizeB is not available from Fortran + + subroutine CCTK_QueryGroupStorageB (ierr, GH, group, groupname) + implicit none + integer ierr + CCTK_POINTER_TO_CONST GH + integer group + character(*) groupname + end subroutine CCTK_QueryGroupStorageB + + subroutine CCTK_GroupDynamicData (ierr, GH, group, data) + implicit none + integer ierr + CCTK_POINTER_TO_CONST GH + integer group + CCTK_POINTER data + end subroutine CCTK_GroupDynamicData + + subroutine CCTK_GroupStorageIncrease & + (ierr, GH, n_groups, groups, timelevels, status) + implicit none + integer ierr + CCTK_POINTER_TO_CONST GH + integer n_groups + integer groups(n_groups) + integer timelevels(n_groups) + integer status(n_groups) + end subroutine CCTK_GroupStorageIncrease + + subroutine CCTK_GroupStorageDecrease & + (ierr, GH, n_groups, groups, timelevels, status) + implicit none + integer ierr + CCTK_POINTER_TO_CONST GH + integer n_groups + integer groups(n_groups) + integer timelevels(n_groups) + integer status(n_groups) + end subroutine CCTK_GroupStorageDecrease + + subroutine CCTK_InterpGridArrays & + (ierr, & + GH, & + N_dims, & + local_interp_handle, & + param_table_handle, & + coord_system_handle, & + N_interp_points, & + interp_coords_type, & + interp_coords, & + N_input_arrays, & + input_array_indices, & + N_output_arrays, & + output_array_types, & + output_arrays) + implicit none + integer ierr + CCTK_POINTER_TO_CONST GH + integer N_dims + integer local_interp_handle + integer param_table_handle + integer coord_system_handle + integer N_interp_points + integer interp_coords_type + CCTK_POINTER_TO_CONST interp_coords(N_dims) + integer N_input_arrays + CCTK_INT input_array_indices(N_input_arrays) + integer N_output_arrays + CCTK_INT output_array_types(N_output_arrays) + CCTK_POINTER output_arrays(N_output_arrays) + end subroutine CCTK_InterpGridArrays + + subroutine CCTK_QueryGroupStorage (ierr, GH, groupname) + implicit none + integer ierr + CCTK_POINTER_TO_CONST GH + character(*) groupname + end subroutine CCTK_QueryGroupStorage + + subroutine CCTK_QueryGroupStorageI (ierr, GH, group) + implicit none + integer ierr + CCTK_POINTER_TO_CONST GH + integer group + end subroutine CCTK_QueryGroupStorageI + +! CCTK_ArrayGroupSize is not available from Fortran +! CCTK_ArrayGroupSizeI is not available from Fortran + + end interface + +end module cctk_Comm diff --git a/src/include/cctk_CommandLine.F90 b/src/include/cctk_CommandLine.F90 new file mode 100644 index 00000000..1fc65b0a --- /dev/null +++ b/src/include/cctk_CommandLine.F90 @@ -0,0 +1,30 @@ +! $Header$ + +! Fortran 90 interface declarations for the routines +! which have their C declarations in cctk_CommandLine.h + +#include "cctk.h" + +module cctk_CommandLine + implicit none + + interface + +! This subroutine has been renamed +! because it conflicts with the name of this module + subroutine CCTK_GetCommandLine (argc, outargv) + implicit none + integer argc + CCTK_POINTER outargv + end subroutine CCTK_GetCommandLine + + subroutine CCTK_ParameterFileName (ierr, filename, filenamelen) + implicit none + integer ierr + character(*) filename + integer filenamelen + end subroutine CCTK_ParameterFileName + + end interface + +end module cctk_CommandLine diff --git a/src/include/cctk_Complex.F90 b/src/include/cctk_Complex.F90 new file mode 100644 index 00000000..710347f6 --- /dev/null +++ b/src/include/cctk_Complex.F90 @@ -0,0 +1,14 @@ +! $Header$ + +! Fortran 90 interface declarations for the routines +! which have their C declarations in cctk_Complex.h + +#include "cctk.h" + +module cctk_Complex + implicit none + +! Fortran handles complex numbers just fine all by itself +! and does not need an additional library + +end module cctk_Complex diff --git a/src/include/cctk_Constants.F90 b/src/include/cctk_Constants.F90 new file mode 100644 index 00000000..20025dca --- /dev/null +++ b/src/include/cctk_Constants.F90 @@ -0,0 +1,13 @@ +! $Header$ + +! Fortran 90 interface declarations for the routines +! which have their C declarations in cctk_Constants.h + +#include "cctk.h" + +module cctk_Constants + implicit none + +! This file declares no routines + +end module cctk_Constants diff --git a/src/include/cctk_Coord.F90 b/src/include/cctk_Coord.F90 new file mode 100644 index 00000000..502399b5 --- /dev/null +++ b/src/include/cctk_Coord.F90 @@ -0,0 +1,147 @@ +! $Header$ + +! Fortran 90 interface declarations for the routines +! which have their C declarations in cctk_Coord.h + +#include "cctk.h" + +module cctk_Coord + implicit none + + interface + + subroutine CCTK_CoordDir (dir, name, systemname) + implicit none + integer dir + character(*) name + character(*) systemname + end subroutine CCTK_CoordDir + + subroutine CCTK_CoordIndex (ierr, dir, name, systemname) + implicit none + integer ierr + integer dir + character(*) name + character(*) systemname + end subroutine CCTK_CoordIndex + + subroutine CCTK_CoordName (name, namelen, dir, systemname) + implicit none + character(*) name + integer namelen + integer dir + character(*) systemname + end subroutine CCTK_CoordName + + subroutine CCTK_CoordRange & + (GH, coord_lower, coord_upper, coord_dir, coord_name, system_name) + implicit none + integer ierr + CCTK_POINTER_TO_CONST GH + CCTK_REAL coord_lower + CCTK_REAL coord_upper + integer coord_dir + character(*) coord_name + character(*) system_name + end subroutine CCTK_CoordRange + + subroutine CCTK_CoordRangePhysIndex & + (ierr, GH, lower, upper, coorddir, coordname, systemname) + implicit none + integer ierr + CCTK_POINTER_TO_CONST GH + integer lower + integer upper + integer coorddir + character(*) coordname + character(*) systemname + end subroutine CCTK_CoordRangePhysIndex + + subroutine CCTK_CoordRegisterData (ierr, dir, gv, name, systemname) + implicit none + integer ierr + integer dir + character(*) gv + character(*) name + character(*) systemname + end subroutine CCTK_CoordRegisterData + + subroutine CCTKi_CoordRegisterSystem & + (ierr, dim, implementation, systemname) + implicit none + integer ierr + integer dim + character(*) implementation + character(*) systemname + end subroutine CCTKi_CoordRegisterSystem + + subroutine CCTK_CoordSystemDim (dim, systemname) + implicit none + integer dim + character(*) systemname + end subroutine CCTK_CoordSystemDim + + subroutine CCTK_CoordSystemHandle (handle, systemname) + implicit none + integer handle + character(*) systemname + end subroutine CCTK_CoordSystemHandle + + subroutine CCTK_CoordSystemName (name, namelen, handle) + implicit none + character(*) name + integer namelen + integer handle + end subroutine CCTK_CoordSystemName + + subroutine CCTK_CoordLocalRange & + (GH, lower, upper, coord_dir, coord_name, system_name) + implicit none + integer ierr + CCTK_POINTER_TO_CONST GH + CCTK_REAL lower + CCTK_REAL upper + integer coord_dir + character(*) coord_name + character(*) system_name + end subroutine CCTK_CoordLocalRange + + subroutine CCTK_CoordRegisterRange & + (GH, coord_min, coord_max, coord_dir, coord_name, system_name) + implicit none + integer ierr + CCTK_POINTER_TO_CONST GH + CCTK_REAL coord_min + CCTK_REAL coord_max + integer coord_dir + character(*) coord_name + character(*) system_name + end subroutine CCTK_CoordRegisterRange + + subroutine CCTK_CoordRegisterRangePhysIndex & + (ierr, GH, coord_min, coord_max, coord_dir, coord_name, system_name) + implicit none + integer ierr + CCTK_POINTER_TO_CONST GH + integer coord_min + integer coord_max + integer coord_dir + character(*) coord_name + character(*) system_name + end subroutine CCTK_CoordRegisterRangePhysIndex + + subroutine CCTK_NumCoordSystems (num) + implicit none + integer num + end subroutine CCTK_NumCoordSystems + + subroutine CCTK_CoordSystemImplementation (imp, implen, handle) + implicit none + character(*) imp + integer implen + integer handle + end subroutine CCTK_CoordSystemImplementation + + end interface + +end module cctk_Coord diff --git a/src/include/make.code.defn b/src/include/make.code.defn new file mode 100644 index 00000000..fdb9a356 --- /dev/null +++ b/src/include/make.code.defn @@ -0,0 +1,20 @@ +# Source file for the src/include directory. +# +# $Header$ + +ifneq ($(strip $(F90)),none) + +SRCS=\ +cctk.F90\ +cctk_ActiveThorns.F90\ +cctk_Banner.F90\ +cctk_Cache.F90\ +cctk_Comm.F90\ +cctk_CommandLine.F90\ +cctk_Complex.F90\ +cctk_Constants.F90\ +cctk_Coord.F90 + +else +SRCS= +endif diff --git a/src/make.code.defn b/src/make.code.defn index 547c9093..aea5b22f 100644 --- a/src/make.code.defn +++ b/src/make.code.defn @@ -1,2 +1,3 @@ +# $Header$ SRCS = -SUBDIRS = IO comm util main schedule gnu +SUBDIRS = IO comm util main schedule gnu include diff --git a/src/make.code.deps b/src/make.code.deps index e69de29b..7a27f8ce 100644 --- a/src/make.code.deps +++ b/src/make.code.deps @@ -0,0 +1 @@ +# $Header$ |