changes with MOOSE parser causing errors

40 views
Skip to first unread message

Jackson Harter

unread,
Sep 11, 2017, 12:59:10 PM9/11/17
to moose-users
Dear all,

Something in a recent MOOSE update seems like it changed the way I read in values from external files using shell syntax (is this the right terminology?) to replace values in my input blocks, i.e.,


[AuxVariables]
  [./source]
    initial_condition = ${source}
  [../]
  [./temp]
    initial_condition = ${temp}
  [../]

...

[]


The error shows as

*** ERROR ***

non-field node 'AuxVariables/source' has no value to retrieve



Stack frames: 6

0: 0   libmesh_opt.0.dylib                 0x0000000111336322 libMesh::print_trace(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) + 1506

1: 1   libmoose-opt.0.dylib                0x000000011015b409 moose::internal::mooseErrorRaw(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) + 969

2: 2   libmoose-opt.0.dylib                0x000000011014b7c1 void mooseError<char const*>(char const*&&) + 337

3: 3   libmoose-opt.0.dylib                0x000000011014b652 MooseApp::run() + 338

4: 4   marmot-opt                          0x000000010fd5c562 main + 114

5: 5   libdyld.dylib                       0x00007fff9a8fb5ad start + 1

application called MPI_Abort(MPI_COMM_WORLD, 1) - process 0

[unset]: write_line error; fd=-1 buf=:cmd=abort exitcode=1

:

system msg for write_line failure : Bad file descriptor



I was able to get around this today this by replacing the shell syntax with numerical values, but the work I'm doing right now relies heavily on a large amount of external data to be read by input files, and writing lots of explicit input files is not something I want to / plan on doing.

Is there some new, different syntax to use? I was able to trace the source of my problem to:

parse.cc 
184 #define valthrow() throw Error("non-field node '" + fullpath() + "' has no value to retrieve")
...
221 #undef valthrow

and Parser.h

97        if (curr == nullptr)
98          errors.push_back(
99              errormsg(_fname, n, "no variable '", var, "' found for substitution expression"));

but I am still a C++ noob (I have no idea what a non-field node is..) and was hoping for some suggestions or advice.


Thanks!

Jackson
Screen Shot 2017-09-11 at 10.57.31.png

princessandsuperman

unread,
Sep 11, 2017, 1:05:33 PM9/11/17
to moose-users
This has to do with the replacement semantics discovering the "source" header before it finds a "source" field/parameter for the replacement.  Could you provide the rest of the input file for context?  At a minimum, we should improve the MOOSE error to be more useful.  But depending on what the rest of your input says, we may want to tweak the parser variable expansion behavior a bit.

Jackson Harter

unread,
Sep 11, 2017, 7:35:41 PM9/11/17
to moose-users
Reply all
Reply to author
Forward
0 new messages