def stress_invariants(s):
s = np.asarray(s)<EOL>if s.shape == (<NUM_LIT:6>,):<EOL><INDENT>s = s.reshape(<NUM_LIT:1>,-<NUM_LIT:1>)<EOL><DEDENT>elif s.shape == (<NUM_LIT:3>,<NUM_LIT:3>):<EOL><INDENT>s = s.reshape(<NUM_LIT:1>,-<NUM_LIT:1>,-<NUM_LIT:1>)<EOL><DEDENT>if len(s.shape) == <NUM_LIT:3>:<EOL><INDENT>s = np.transpose([s[:,<NUM_LIT:0>,<NUM_LIT:0>],s[:,<NUM_LIT:1>,<NUM_LIT:1>],s[:,<NUM_LIT:2>,<NUM_LIT:2>],<EOL>(s[:,<NUM_LIT:0>,<NUM_LIT:1>]+s[:,<NUM_LIT:1>,<NUM_LIT:0>])/<NUM_LIT:2>,<EOL>(s[:,<NUM_LIT:1>,<NUM_LIT:2>]+s[:,<NUM_LIT:2>,<NUM_LIT:1>])/<NUM_LIT:2>,<EOL>(s[:,<NUM_LIT:2>,<NUM_LIT:0>]+s[:,<NUM_LIT:0>,<NUM_LIT:2>])/<NUM_LIT:2>])<EOL><DEDENT>I1 = s[:,<NUM_LIT:0>]+s[:,<NUM_LIT:1>]+s[:,<NUM_LIT:2>]<EOL>I2 = s[:,<NUM_LIT:0>]*s[:,<NUM_LIT:1>]+s[:,<NUM_LIT:1>]*s[:,<NUM_LIT:2>]+s[:,<NUM_LIT:2>]*s[:,<NUM_LIT:0>]-s[:,<NUM_LIT:3>]**<NUM_LIT:2>-s[:,<NUM_LIT:4>]**<NUM_LIT:2>-s[:,<NUM_LIT:5>]**<NUM_LIT:2><EOL>I3 = s[:,<NUM_LIT:0>]*s[:,<NUM_LIT:1>]*s[:,<NUM_LIT:2>]+<NUM_LIT:2>*s[:,<NUM_LIT:3>]*s[:,<NUM_LIT:4>]*s[:,<NUM_LIT:5>]-s[:,<NUM_LIT:3>]**<NUM_LIT:2>*s[:,<NUM_LIT:2>]-s[:,<NUM_LIT:4>]**<NUM_LIT:2>*s[:,<NUM_LIT:0>]-s[:,<NUM_LIT:5>]**<NUM_LIT:2>*s[:,<NUM_LIT:1>]<EOL>J2 = I1**<NUM_LIT:2>/<NUM_LIT:3>-I2<EOL>J3 = <NUM_LIT:2>*I1**<NUM_LIT:3>/<NUM_LIT>-I1*I2/<NUM_LIT:3>+I3<EOL>return -I1/<NUM_LIT:3>, np.sqrt(<NUM_LIT:2>*J2/<NUM_LIT:3>), J3<EOL>
Receives a list of stress tensors and returns the three invariants.
       Return hydrostatic pressure, octahedral shear stress and J3