summaryrefslogtreecommitdiff
path: root/lib/sbin
diff options
context:
space:
mode:
authorgoodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac>1998-12-03 16:47:35 +0000
committergoodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac>1998-12-03 16:47:35 +0000
commit91171f3ad715d9c8ed3917126fda2447733e8c47 (patch)
treeb4515ef2b370a825a4d3f9e28894c928794350cd /lib/sbin
parentabf72263cadff01dd677bb2ae460b72c24853850 (diff)
Created functions to create the gridfuncs.
git-svn-id: http://svn.cactuscode.org/flesh/trunk@36 17b73243-c579-4c4c-a9d2-2d5706c11dac
Diffstat (limited to 'lib/sbin')
-rw-r--r--lib/sbin/GridFuncStuff.pl110
-rw-r--r--lib/sbin/config_parser.pl12
2 files changed, 120 insertions, 2 deletions
diff --git a/lib/sbin/GridFuncStuff.pl b/lib/sbin/GridFuncStuff.pl
new file mode 100644
index 00000000..9f3350b8
--- /dev/null
+++ b/lib/sbin/GridFuncStuff.pl
@@ -0,0 +1,110 @@
+#! /usr/bin/perl
+
+sub CreateGroups
+{
+ local(%interface_database) = @_;
+ local(@interfaces);
+ local(%thorns);
+ local(@group_initialisers);
+ local(@indata);
+
+
+ @interfaces = split(" ", $interface_database{"IMPLEMENTATIONS"});
+
+ foreach $interface (@interfaces)
+ {
+ @indata = &create_interface_group_initialisers($interface, %interface_database);
+
+ push(@group_initialisers, @indata);
+
+ foreach $thorn (split(" ",$interface_database{"IMPLEMENTATION \U$interface\E THORNS"}))
+ {
+ $thorns{"\U$thorn\E"} = 1;
+ }
+ }
+
+ foreach $thorn (keys %thorns)
+ {
+
+ @indata = &create_thorn_group_initialisers($thorn, "PRIVATE", %interface_database);
+
+ push(@group_initialisers, @indata);
+
+ }
+
+ @group_initialisers = &sort_groups(@group_initialisers);
+
+ return @group_initialisers;
+}
+
+sub create_interface_group_initialisers
+{
+ local($interface, %interface_database) = @_;
+ local($thorn);
+ local(@definitions);
+ local(@indata);
+
+
+ $interface_database{"IMPLEMENTATION \U$interface\E THORNS"} =~ m:([^ ]+):;
+
+ $thorn = $1;
+
+ @indata = &create_thorn_group_initialisers($thorn, "PUBLIC", %interface_database);
+
+ push(@definitions, @indata);
+
+ @indata = &create_thorn_group_initialisers($thorn, "PROTECTED", %interface_database);
+
+ push(@definitions, @indata);
+
+ return @definitions;
+
+}
+
+sub create_thorn_group_initialisers
+{
+ local($thorn, $block, %interface_database) = @_;
+ local(@definitions);
+ local($base_name);
+ local($group);
+ local($variable,@variables);
+ if($block eq "PRIVATE")
+ {
+ $base_name = "thorn:$thorn";
+ }
+ else
+ {
+ $base_name = $interface_database{"\U$thorn\E IMPLEMENTS"};
+ }
+
+ foreach $group (split(" ", $interface_database{"\U$thorn $block GROUPS"}))
+ {
+ @variables = split(" ", $interface_database{"\U$thorn GROUP $group\E"});
+
+ $line = " CCTK_CreateGroup(\"\U$base_name:$group\E\",\n"
+ . " \"" . $interface_database{"\U$thorn GROUP $group\E GTYPE"} . "\",\n"
+ . " \"" . $interface_database{"\U$thorn GROUP $group\E VTYPE"} . "\",\n"
+ . " ". scalar(@variables);
+ foreach $variable (@variables)
+ {
+ $line .= ",\n \"\U$variable\E\"";
+ }
+
+ $line .= ");\n\n";
+
+ push(@definitions, $line);
+ }
+
+ return @definitions;
+
+
+}
+
+sub sort_groups
+{
+ local(@group_initialisers) = @_;
+
+ return @group_initialisers;
+}
+
+1;
diff --git a/lib/sbin/config_parser.pl b/lib/sbin/config_parser.pl
index 73e9d95b..4bec9d0e 100644
--- a/lib/sbin/config_parser.pl
+++ b/lib/sbin/config_parser.pl
@@ -39,6 +39,7 @@ require "lib/sbin/parameter_parser.pl";
require "lib/sbin/interface_parser.pl";
require "lib/sbin/create_c_stuff.pl";
require "lib/sbin/create_fortran_stuff.pl";
+require "lib/sbin/GridFuncStuff.pl";
%thorns = &create_thorn_list;
@@ -48,7 +49,7 @@ require "lib/sbin/create_fortran_stuff.pl";
#&print_parameter_database(%parameter_database);
-&print_interface_database(%interface_database);
+#&print_interface_database(%interface_database);
@implementations = (keys %thorns);
@@ -78,7 +79,14 @@ require "lib/sbin/create_fortran_stuff.pl";
-foreach $line (@subroutine)
+#foreach $line (@subroutine)
+#{
+# print "$line\n";
+#}
+
+@GFstuff = &CreateGroups(%interface_database);
+
+foreach $line (@GFstuff)
{
print "$line\n";
}