parsing error in outflow jacobian
Summary
Parsing of outflow jacobian fails when the expression contains a species variable. (It works if the expression is just a number)
Steps to reproduce
Run this model: abx.ini grid.msh
What is the current bug behaviour?
00:00:00.045 Transmission condition: c1 - c1
00:00:00.045 Transmission condition: c1 - c2
00:00:00.045 Setup expression (B_c1): B_c2_o^2*1e-06*-0.2
00:00:00.045 Adding variable: B_c2_o
00:00:00.045 Setup self jacobian expression (dB_c1__dB_c1_i): 0
00:00:00.045 Setup cross jacobian expression (dB_c1__dA_c2_o): 0
00:00:00.045 Setup cross jacobian expression (dB_c1__dB_c2_o): 2*B_c2_o*1e-06*-0.2
00:00:00.045 Evaluating muParser expression failed:
00:00:00.045 Parsed expression: 2*B_c2_o*1e-06*-0.2
00:00:00.045 Token: B_c2_o
00:00:00.045 Error position: 2
00:00:00.045 Error code: 1
00:00:00.045 Error message: Unexpected token "B_c2_o" found at position 2.
Relevant logs, screenshots, files...?
Expand to see logs
00:00:00.004 ModelBase constructed 00:00:00.004 Setting up multi-compartment diffusion-reaction model 00:00:00.004 Setup grid function space 00:00:00.005 Create a sub model for compartment 0 00:00:00.005 ModelBase constructed 00:00:00.005 Setting up diffusion-reaction model for c1 compartment 00:00:00.005 Setup domain grid function space 00:00:00.005 Create a finite element map 00:00:00.005 Setup grid function space for component B_c1 00:00:00.006 Setup domian power grid function space 00:00:00.006 No. of components 1 00:00:00.006 ModelDiffusionReaction constructed 00:00:00.006 ModelDiffusionReaction deconstructed 00:00:00.006 ModelBase deconstructed 00:00:00.006 Create a sub model for compartment 1 00:00:00.006 ModelBase constructed 00:00:00.006 Setting up diffusion-reaction model for c2 compartment 00:00:00.006 Setup domain grid function space 00:00:00.006 Create a finite element map 00:00:00.006 Setup grid function space for component A_c2 00:00:00.007 Create a finite element map 00:00:00.007 Setup grid function space for component B_c2 00:00:00.008 Setup domian power grid function space 00:00:00.008 No. of components 2 00:00:00.008 ModelDiffusionReaction constructed 00:00:00.008 ModelDiffusionReaction deconstructed 00:00:00.008 ModelBase deconstructed 00:00:00.008 Create a sub model for compartment 2 00:00:00.008 ModelBase constructed 00:00:00.008 Setting up diffusion-reaction model for c3 compartment 00:00:00.008 Setup domain grid function space 00:00:00.008 Create a finite element map 00:00:00.008 Setup grid function space for component A_c3 00:00:00.009 Create a finite element map 00:00:00.009 Setup grid function space for component B_c3 00:00:00.010 Setup domian power grid function space 00:00:00.010 No. of components 2 00:00:00.010 ModelDiffusionReaction constructed 00:00:00.010 ModelDiffusionReaction deconstructed 00:00:00.010 ModelBase deconstructed 00:00:00.010 Setup coefficient vector 00:00:00.016 initialize parser with constant variables 00:00:00.016 initialize parser with constant variables 00:00:00.016 initialize parser with constant variables 00:00:00.016 initialize parser with constant variables 00:00:00.016 initialize parser with constant variables 00:00:00.016 compile expression: 0 00:00:00.016 compile expression: 0 00:00:00.016 compile expression: 0 00:00:00.016 compile expression: 0 00:00:00.016 compile expression: 0 00:00:00.016 Set initial state from grid functions 00:00:00.027 Setup base constraints 00:00:00.027 Setup power constraints 00:00:00.027 Assemble constraints 00:00:00.041 Constrained dofs: 0 of 208 00:00:00.041 Setup local operator 00:00:00.041 Create spatial local operator 00:00:00.041 creating pattern and grid function expressions 00:00:00.041 initialize parser with constant variables 00:00:00.042 compile expression: 5 00:00:00.042 initialize parser with constant variables 00:00:00.042 define extra variable: B_c1 00:00:00.042 compile expression: 0.0 00:00:00.042 initialize parser with constant variables 00:00:00.042 define extra variable: B_c1 00:00:00.042 compile expression: 0 00:00:00.042 pattern <0,0> 00:00:00.042 creating pattern and grid function expressions 00:00:00.042 initialize parser with constant variables 00:00:00.042 compile expression: 5 00:00:00.042 initialize parser with constant variables 00:00:00.042 define extra variable: B_c1 00:00:00.042 compile expression: 0.0 00:00:00.042 initialize parser with constant variables 00:00:00.042 define extra variable: B_c1 00:00:00.042 compile expression: 0 00:00:00.042 pattern <0,0> 00:00:00.042 creating pattern and grid function expressions 00:00:00.042 initialize parser with constant variables 00:00:00.042 compile expression: 6 00:00:00.042 initialize parser with constant variables 00:00:00.042 define extra variable: A_c2 00:00:00.042 define extra variable: B_c2 00:00:00.042 compile expression: 0.0 00:00:00.042 initialize parser with constant variables 00:00:00.042 define extra variable: A_c2 00:00:00.042 define extra variable: B_c2 00:00:00.042 compile expression: 0 00:00:00.042 initialize parser with constant variables 00:00:00.042 define extra variable: A_c2 00:00:00.042 define extra variable: B_c2 00:00:00.042 compile expression: 0 00:00:00.042 initialize parser with constant variables 00:00:00.042 compile expression: 6 00:00:00.042 initialize parser with constant variables 00:00:00.042 define extra variable: A_c2 00:00:00.042 define extra variable: B_c2 00:00:00.042 compile expression: 0.0 00:00:00.042 initialize parser with constant variables 00:00:00.042 define extra variable: A_c2 00:00:00.042 define extra variable: B_c2 00:00:00.042 compile expression: 0 00:00:00.043 initialize parser with constant variables 00:00:00.043 define extra variable: A_c2 00:00:00.043 define extra variable: B_c2 00:00:00.043 compile expression: 0 00:00:00.043 pattern <0,0> 00:00:00.043 pattern <1,1> 00:00:00.043 creating pattern and grid function expressions 00:00:00.043 initialize parser with constant variables 00:00:00.043 compile expression: 6 00:00:00.043 initialize parser with constant variables 00:00:00.043 define extra variable: A_c2 00:00:00.043 define extra variable: B_c2 00:00:00.043 compile expression: 0.0 00:00:00.043 initialize parser with constant variables 00:00:00.043 define extra variable: A_c2 00:00:00.043 define extra variable: B_c2 00:00:00.043 compile expression: 0 00:00:00.043 initialize parser with constant variables 00:00:00.043 define extra variable: A_c2 00:00:00.043 define extra variable: B_c2 00:00:00.043 compile expression: 0 00:00:00.043 initialize parser with constant variables 00:00:00.043 compile expression: 6 00:00:00.043 initialize parser with constant variables 00:00:00.043 define extra variable: A_c2 00:00:00.043 define extra variable: B_c2 00:00:00.043 compile expression: 0.0 00:00:00.043 initialize parser with constant variables 00:00:00.043 define extra variable: A_c2 00:00:00.043 define extra variable: B_c2 00:00:00.043 compile expression: 0 00:00:00.043 initialize parser with constant variables 00:00:00.043 define extra variable: A_c2 00:00:00.043 define extra variable: B_c2 00:00:00.043 compile expression: 0 00:00:00.043 pattern <0,0> 00:00:00.043 pattern <1,1> 00:00:00.043 creating pattern and grid function expressions 00:00:00.043 initialize parser with constant variables 00:00:00.043 compile expression: 2 00:00:00.043 initialize parser with constant variables 00:00:00.043 define extra variable: A_c3 00:00:00.043 define extra variable: B_c3 00:00:00.043 compile expression: A_c3^2*1e-06*-300.0 00:00:00.043 initialize parser with constant variables 00:00:00.043 define extra variable: A_c3 00:00:00.044 define extra variable: B_c3 00:00:00.044 compile expression: 2*A_c3*1e-06*-300.0 00:00:00.044 initialize parser with constant variables 00:00:00.044 define extra variable: A_c3 00:00:00.044 define extra variable: B_c3 00:00:00.044 compile expression: 0 00:00:00.044 initialize parser with constant variables 00:00:00.044 compile expression: 5 00:00:00.044 initialize parser with constant variables 00:00:00.044 define extra variable: A_c3 00:00:00.044 define extra variable: B_c3 00:00:00.044 compile expression: A_c3^2*1e-06*300.0 00:00:00.044 initialize parser with constant variables 00:00:00.044 define extra variable: A_c3 00:00:00.044 define extra variable: B_c3 00:00:00.044 compile expression: 2*A_c3*1e-06*300.0 00:00:00.044 initialize parser with constant variables 00:00:00.044 define extra variable: A_c3 00:00:00.044 define extra variable: B_c3 00:00:00.044 compile expression: 0 00:00:00.044 pattern <0,0> 00:00:00.044 pattern <1,0> 00:00:00.044 pattern <1,1> 00:00:00.044 creating pattern and grid function expressions 00:00:00.044 initialize parser with constant variables 00:00:00.044 compile expression: 2 00:00:00.044 initialize parser with constant variables 00:00:00.044 define extra variable: A_c3 00:00:00.044 define extra variable: B_c3 00:00:00.044 compile expression: A_c3^2*1e-06*-300.0 00:00:00.044 initialize parser with constant variables 00:00:00.044 define extra variable: A_c3 00:00:00.044 define extra variable: B_c3 00:00:00.044 compile expression: 2*A_c3*1e-06*-300.0 00:00:00.044 initialize parser with constant variables 00:00:00.044 define extra variable: A_c3 00:00:00.044 define extra variable: B_c3 00:00:00.044 compile expression: 0 00:00:00.044 initialize parser with constant variables 00:00:00.044 compile expression: 5 00:00:00.044 initialize parser with constant variables 00:00:00.044 define extra variable: A_c3 00:00:00.044 define extra variable: B_c3 00:00:00.044 compile expression: A_c3^2*1e-06*300.0 00:00:00.045 initialize parser with constant variables 00:00:00.045 define extra variable: A_c3 00:00:00.045 define extra variable: B_c3 00:00:00.045 compile expression: 2*A_c3*1e-06*300.0 00:00:00.045 initialize parser with constant variables 00:00:00.045 define extra variable: A_c3 00:00:00.045 define extra variable: B_c3 00:00:00.045 compile expression: 0 00:00:00.045 pattern <0,0> 00:00:00.045 pattern <1,0> 00:00:00.045 pattern <1,1> 00:00:00.045 Transmission condition: c1 - c1 00:00:00.045 Transmission condition: c1 - c2 00:00:00.045 Setup expression (B_c1): B_c2_o^2*1e-06*-0.2 00:00:00.045 Adding variable: B_c2_o 00:00:00.045 Setup self jacobian expression (dB_c1__dB_c1_i): 0 00:00:00.045 Setup cross jacobian expression (dB_c1__dA_c2_o): 0 00:00:00.045 Setup cross jacobian expression (dB_c1__dB_c2_o): 2*B_c2_o*1e-06*-0.2 00:00:00.045 Evaluating muParser expression failed: 00:00:00.045 Parsed expression: 2*B_c2_o*1e-06*-0.2 00:00:00.045 Token: B_c2_o 00:00:00.045 Error position: 2 00:00:00.045 Error code: 1 00:00:00.045 Error message: Unexpected token "B_c2_o" found at position 2. 00:00:00.046 ---- Multidomain Diffusion-Reaction model parameter tree 00:00:00.046 order = "1" 00:00:00.046 [ model.c1 ] 00:00:00.046 [ model.c1.diffusion ] 00:00:00.046 B_c1 = "5" 00:00:00.046 [ model.c1.initial ] 00:00:00.046 B_c1 = "0" 00:00:00.046 [ model.c1.outflow ] 00:00:00.046 [ model.c1.outflow.c2 ] 00:00:00.046 B_c1 = "B_c2_o^2*1e-06*-0.2" 00:00:00.046 [ model.c1.outflow.c2.jacobian ] 00:00:00.046 dB_c1__dA_c2_o = "0" 00:00:00.046 dB_c1__dB_c1_i = "0" 00:00:00.046 dB_c1__dB_c2_o = "2*B_c2_o*1e-06*-0.2" 00:00:00.046 [ model.c1.reaction ] 00:00:00.046 B_c1 = "0.0" 00:00:00.046 [ model.c1.reaction.jacobian ] 00:00:00.046 dB_c1__dB_c1 = "0" 00:00:00.046 [ model.c2 ] 00:00:00.046 [ model.c2.diffusion ] 00:00:00.046 A_c2 = "6" 00:00:00.046 B_c2 = "6" 00:00:00.046 [ model.c2.initial ] 00:00:00.046 A_c2 = "0" 00:00:00.046 B_c2 = "0" 00:00:00.046 [ model.c2.outflow ] 00:00:00.046 [ model.c2.outflow.c1 ] 00:00:00.046 A_c2 = "-0.1" 00:00:00.046 B_c2 = "B_c2_i^2*1e-06*0.2" 00:00:00.046 [ model.c2.outflow.c1.jacobian ] 00:00:00.046 dA_c2__dA_c2_i = "0" 00:00:00.046 dA_c2__dB_c1_o = "0" 00:00:00.046 dA_c2__dB_c2_i = "0" 00:00:00.046 dB_c2__dA_c2_i = "0" 00:00:00.046 dB_c2__dB_c1_o = "0" 00:00:00.046 dB_c2__dB_c2_i = "2*B_c2_i*1e-06*0.2" 00:00:00.046 [ model.c2.outflow.c3 ] 00:00:00.046 A_c2 = "0.0001*A_c2_i - 0.0001*A_c3_o" 00:00:00.046 B_c2 = "B_c3_o*0.001*-0.1" 00:00:00.046 [ model.c2.outflow.c3.jacobian ] 00:00:00.046 dA_c2__dA_c2_i = "0.0001" 00:00:00.046 dA_c2__dA_c3_o = "-0.0001" 00:00:00.046 dA_c2__dB_c2_i = "0" 00:00:00.046 dA_c2__dB_c3_o = "0" 00:00:00.046 dB_c2__dA_c2_i = "0" 00:00:00.046 dB_c2__dA_c3_o = "0" 00:00:00.046 dB_c2__dB_c2_i = "0" 00:00:00.046 dB_c2__dB_c3_o = "0.001*-0.1" 00:00:00.046 [ model.c2.reaction ] 00:00:00.046 A_c2 = "0.0" 00:00:00.046 B_c2 = "0.0" 00:00:00.046 [ model.c2.reaction.jacobian ] 00:00:00.046 dA_c2__dA_c2 = "0" 00:00:00.046 dA_c2__dB_c2 = "0" 00:00:00.046 dB_c2__dA_c2 = "0" 00:00:00.046 dB_c2__dB_c2 = "0" 00:00:00.046 [ model.c3 ] 00:00:00.046 [ model.c3.diffusion ] 00:00:00.046 A_c3 = "2" 00:00:00.046 B_c3 = "5" 00:00:00.046 [ model.c3.initial ] 00:00:00.046 A_c3 = "0" 00:00:00.046 B_c3 = "0" 00:00:00.046 [ model.c3.outflow ] 00:00:00.046 [ model.c3.outflow.c2 ] 00:00:00.046 A_c3 = "-(0.0001*A_c2_o - 0.0001*A_c3_i)" 00:00:00.046 B_c3 = "B_c3_i*0.001*0.1" 00:00:00.046 [ model.c3.outflow.c2.jacobian ] 00:00:00.046 dA_c3__dA_c2_o = "-0.0001" 00:00:00.046 dA_c3__dA_c3_i = "0.0001" 00:00:00.046 dA_c3__dB_c2_o = "0" 00:00:00.046 dA_c3__dB_c3_i = "0" 00:00:00.046 dB_c3__dA_c2_o = "0" 00:00:00.046 dB_c3__dA_c3_i = "0" 00:00:00.046 dB_c3__dB_c2_o = "0" 00:00:00.046 dB_c3__dB_c3_i = "0.001*0.1" 00:00:00.046 [ model.c3.reaction ] 00:00:00.046 A_c3 = "A_c3^2*1e-06*-300.0" 00:00:00.046 B_c3 = "A_c3^2*1e-06*300.0" 00:00:00.046 [ model.c3.reaction.jacobian ] 00:00:00.046 dA_c3__dA_c3 = "2*A_c3*1e-06*-300.0" 00:00:00.046 dA_c3__dB_c3 = "0" 00:00:00.046 dB_c3__dA_c3 = "2*A_c3*1e-06*300.0" 00:00:00.046 dB_c3__dB_c3 = "0" 00:00:00.046 [ model.compartments ] 00:00:00.046 c1 = "0" 00:00:00.046 c2 = "1" 00:00:00.046 c3 = "2" 00:00:00.046 [ model.time_stepping ] 00:00:00.046 begin = "0" 00:00:00.046 decrease_factor = "0.5" 00:00:00.046 end = "100" 00:00:00.046 increase_factor = "1.5" 00:00:00.046 initial_step = "0.100000000000000006" 00:00:00.046 max_step = "10000" 00:00:00.046 min_step = "1.00000000000000004e-10" 00:00:00.046 rk_method = "alexander_2" 00:00:00.046 [ model.time_stepping.newton ] 00:00:00.046 absolute_limit = "9.9999999999999998e-13" 00:00:00.046 fixed_linear_reduction = "false" 00:00:00.046 force_iteration = "false" 00:00:00.046 keep_matrix = "true" 00:00:00.046 max_iterations = "40" 00:00:00.046 min_linear_reduction = "0.00100000000000000002" 00:00:00.046 reassemble_threshold = "0" 00:00:00.046 reduction = "1.00000000000000002e-08" 00:00:00.046 [ model.time_stepping.newton.linear_search ] 00:00:00.046 damping_factor = "0.5" 00:00:00.046 max_iterations = "10" 00:00:00.046 strategy = "hackbuschReusken" 00:00:00.046 [ model.writer ] 00:00:00.046 file_path = "vtk" 00:00:00.046 ---- 00:00:00.046 ModelBase deconstructed