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