For public variables one needs to use the implementation name. This makes things exchangeable; if one then uses another thorn for this implementation, the corresponding name does not need to be changed. For private variables one needs to use the thorn name. There is no one name (implementation/thorn) that works for both, unless of course thorn and implementation name are the same.
Cactus has historically been lenient here, and doesn't always enforce this difference. I'm surprised that it does so here.
Yes, please open a ticket.
-erik
On Wed, Nov 9, 2011 at 7:28 PM, Luca Baiotti baiotti@ile.osaka-u.ac.jp wrote:
Hi Erik,
The official syntax for variable names is to use the implementation name for public groups and the thorn name for private groups. Not all
actually why using the thorn name is allowed? In the UsersGuide there is mention only of implementation name + variable name. Where can I read about the official syntax you reported?
And were you suggesting that one should be able to use thorn name + variable name for all cases (private or public, array indexes or not)? I could open a Trac ticket for that.
Luca
errors are detected. I assume that the special code that handles vector indices for variable names doesn't allow using a thorn name for a public variable.
You could open a Trac ticket for this.
-erik
On Fri, Nov 4, 2011 at 4:10 AM, Luca Baiottibaiotti@ile.osaka-u.ac.jp wrote:
Hello,
the request for output of a variable in Carpet (CarpetIOBasic, CarpetIOScalar, CarpetIOASCII) can be done in a parfile as, e.g.,
IOASCII::out1D_vars = "THORN_NAME::VARIABLE_GROUP_NAME"
or
IOASCII::out1D_vars = "IMPLEMENTATION_NAME::VARIABLE_GROUP_NAME"
or
IOASCII::out1D_vars = "THORN_NAME::VARIABLE_NAME"
or
IOASCII::out1D_vars = "IMPLEMENTATION_NAME::VARIABLE_NAME"
Any of the above should work (correct me if I am wrong), but I found an exception:
When requesting output as
IOASCII::out1D_vars = "TestOutput::testoutput"
for a *public:* or *protected:* variable group of the type:
CCTK_REAL testoutput[nvar] type=GF TimeLevels=1 Dim=3 { output } ""
where nvar is an integer parameter and the thorn name is TestOutput and differs from the implementation name, Carpet complains that
WARNING[L1,P0] (Cactus): CCTK_TraverseString: invalid group/variable name 'TestOutput::testoutput' in traversed string 'TestOutput::testoutput' WARNING level 0 in thorn IOUtil processor 0 host mbaiotti2-2.local (line 140 of
/Users/baiotti/Cactus.fresh-checkout/arrangements/CactusBase/IOUtil/src/Utils.c): -> error while parsing parameter 'IOBasic::outInfo_vars'
For *private:* arrays of variables it works.
I attach an example thorn and parfile.
Comments?
Luca