summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorschnetter <schnetter@17b73243-c579-4c4c-a9d2-2d5706c11dac>2008-02-29 16:51:19 +0000
committerschnetter <schnetter@17b73243-c579-4c4c-a9d2-2d5706c11dac>2008-02-29 16:51:19 +0000
commit0fc165bf1925c246ce3c0fda94340c9a88026581 (patch)
tree529d76a4b5ab1126f88f516e48e3275d0f34e1e6 /lib
parent81a6e3b529c6416c526b1da9fca8f110790b16c7 (diff)
Check the dimension and distribution type of grid scalars and the
distribution type of grid functions git-svn-id: http://svn.cactuscode.org/flesh/trunk@4465 17b73243-c579-4c4c-a9d2-2d5706c11dac
Diffstat (limited to 'lib')
-rw-r--r--lib/sbin/interface_parser.pl67
1 files changed, 62 insertions, 5 deletions
diff --git a/lib/sbin/interface_parser.pl b/lib/sbin/interface_parser.pl
index 0e049860..4e5f3afb 100644
--- a/lib/sbin/interface_parser.pl
+++ b/lib/sbin/interface_parser.pl
@@ -933,9 +933,16 @@ sub parse_interface_ccl
$interface_data_ref->{"\U$thorn GROUP $current_group\E GTYPE"} = "SCALAR";
}
- if(! $interface_data_ref->{"\U$thorn GROUP $current_group\E DIM"})
+ if (! $interface_data_ref->{"\U$thorn GROUP $current_group\E DIM"})
{
- $interface_data_ref->{"\U$thorn GROUP $current_group\E DIM"} = 3;
+ if ($interface_data_ref->{"\U$thorn GROUP $current_group\E GTYPE"} eq 'SCALAR')
+ {
+ $interface_data_ref->{"\U$thorn GROUP $current_group\E DIM"} = 0;
+ }
+ else
+ {
+ $interface_data_ref->{"\U$thorn GROUP $current_group\E DIM"} = 3;
+ }
}
if(! $interface_data_ref->{"\U$thorn GROUP $current_group\E TIMELEVELS"})
@@ -958,11 +965,61 @@ sub parse_interface_ccl
$interface_data_ref->{"\U$thorn GROUP $current_group\E COMPACT"} = 0;
}
- # Override defaults for scalars
- if($interface_data_ref->{"\U$thorn GROUP $current_group\E GTYPE"} eq "SCALAR")
+ if ($interface_data_ref->{"\U$thorn GROUP $current_group\E GTYPE"} eq "SCALAR")
{
+ my $dim = $interface_data_ref->{"\U$thorn GROUP $current_group\E DIM"};
+ if ($dim && $dim ne '0')
+ {
+ my $message = "Inconsistent GROUP DIM $dim for SCALAR group $current_group of thorn $thorn";
+ my $hint = "The only allowed group dimension for scalar groups is '0'";
+ &CST_error (0, $message, $hint, __LINE__, __FILE__);
+ if ($data_ref->[$line_number+1] =~ m:\{:)
+ {
+ &CST_error (1, "Skipping interface block in $thorn", '',
+ __LINE__, __FILE__);
+ ++ $line_number until ($data_ref->[$line_number] =~ m:\}:);
+ }
+ next;
+ }
$interface_data_ref->{"\U$thorn GROUP $current_group\E DIM"} = 0;
- $interface_data_ref->{"\U$thorn GROUP $current_group\E DISTRIB"} = "CONSTANT";
+
+ my $distrib = $interface_data_ref->{"\U$thorn GROUP $current_group\E DISTRIB"};
+ if ($distrib && $distrib ne 'CONSTANT')
+ {
+ my $message = "Inconsistent GROUP DISTRIB $distrib for SCALAR group $current_group of thorn $thorn";
+ my $hint = "The only allowed group distribution for scalar groups is 'CONSTANT'";
+ &CST_error (0, $message, $hint, __LINE__, __FILE__);
+ if ($data_ref->[$line_number+1] =~ m:\{:)
+ {
+ &CST_error (1, "Skipping interface block in $thorn", '',
+ __LINE__, __FILE__);
+ ++ $line_number until ($data_ref->[$line_number] =~ m:\}:);
+ }
+ next;
+ }
+ $interface_data_ref->{"\U$thorn GROUP $current_group\E DISTRIB"} =
+ "CONSTANT";
+ }
+
+ # Override defaults for grid functions
+ if ($interface_data_ref->{"\U$thorn GROUP $current_group\E GTYPE"} eq "GF")
+ {
+ my $distrib = $interface_data_ref->{"\U$thorn GROUP $current_group\E DISTRIB"};
+ if ($distrib && $distrib ne 'DEFAULT')
+ {
+ my $message = "Inconsistent GROUP DISTRIB $distrib for GF group $current_group of thorn $thorn";
+ my $hint = "The only allowed group distribution for grid function groups is 'DEFAULT'";
+ &CST_error (0, $message, $hint, __LINE__, __FILE__);
+ if ($data_ref->[$line_number+1] =~ m:\{:)
+ {
+ &CST_error (1, "Skipping interface block in $thorn", '',
+ __LINE__, __FILE__);
+ ++ $line_number until ($data_ref->[$line_number] =~ m:\}:);
+ }
+ next;
+ }
+ $interface_data_ref->{"\U$thorn GROUP $current_group\E DISTRIB"} =
+ "DEFAULT";
}
# Check that it is a known group type