Partial outputs of SimNET. "could not unroll graph!"


I am solving a 3-dimensional linear elasticity problem. When declaring a solver class, you have to specify 3 displacement components and 6 components of the stress tensor as output. Is it possible to restrict ourselves to only a part of the stress tensor components (for example, 3)

At the moment I have something like this:

elasticity_net = self.arch.make_node(name='elasticity_net',
                                     inputs=['x', 'y', 'z'],
                                     outputs=['u', 'v', 'w',
                                              'sigma_xx', 'sigma_yy', 'sigma_xy',
                                              'sigma_zz', 'sigma_xz', 'sigma_yz'])

But I would like to see something like that:

elasticity_net = self.arch.make_node(name='elasticity_net',
                                     inputs=['x', 'y', 'z'],
                                     outputs=[ 'sigma_xx', 'sigma_yy', 'sigma_xy'])

An error occurs “could not unroll graph!”. What am I doing wrong?

This is because the 3d linear elasticity equations include the the entire 6 stress components and without some of these the equations are not complete. Based on the 3d equations, the network requires to compute sigma_zz, sigma_xz, sigma_yz but you are not specifying these components anywhere and therefore you are getting the graph unrolling error.