@@ -380,6 +380,9 @@ <h1>Source code for ufl.action</h1><div class="highlight"><pre>
380380
381381 < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="fm "> __new__</ span > < span class ="p "> (</ span > < span class ="bp "> cls</ span > < span class ="p "> ,</ span > < span class ="o "> *</ span > < span class ="n "> args</ span > < span class ="p "> ,</ span > < span class ="o "> **</ span > < span class ="n "> kw</ span > < span class ="p "> ):</ span >
382382< span class ="w "> </ span > < span class ="sd "> """Create a new Action."""</ span >
383+ < span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> ufl.algorithms.analysis</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> extract_arguments</ span >
384+ < span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> ufl.algorithms.replace</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> replace</ span >
385+
383386 < span class ="n "> left</ span > < span class ="p "> ,</ span > < span class ="n "> right</ span > < span class ="o "> =</ span > < span class ="n "> args</ span >
384387
385388 < span class ="c1 "> # Check trivial case</ span >
@@ -427,6 +430,12 @@ <h1>Source code for ufl.action</h1><div class="highlight"><pre>
427430 < span class ="ow "> and</ span > < span class ="nb "> len</ span > < span class ="p "> (</ span > < span class ="n "> left</ span > < span class ="o "> .</ span > < span class ="n "> arguments</ span > < span class ="p "> ())</ span > < span class ="o "> ==</ span > < span class ="mi "> 1</ span >
428431 < span class ="p "> ):</ span >
429432 < span class ="n "> v</ span > < span class ="p "> ,</ span > < span class ="n "> operand</ span > < span class ="o "> =</ span > < span class ="n "> right</ span > < span class ="o "> .</ span > < span class ="n "> argument_slots</ span > < span class ="p "> ()</ span >
433+ < span class ="c1 "> # If the operand has an argument, replace it with number 0</ span >
434+ < span class ="n "> operand_args</ span > < span class ="o "> =</ span > < span class ="n "> extract_arguments</ span > < span class ="p "> (</ span > < span class ="n "> operand</ span > < span class ="p "> )</ span >
435+ < span class ="k "> if</ span > < span class ="n "> operand_args</ span > < span class ="p "> :</ span >
436+ < span class ="p "> (</ span > < span class ="n "> old_arg</ span > < span class ="p "> ,)</ span > < span class ="o "> =</ span > < span class ="n "> operand_args</ span >
437+ < span class ="n "> new_arg</ span > < span class ="o "> =</ span > < span class ="nb "> type</ span > < span class ="p "> (</ span > < span class ="n "> old_arg</ span > < span class ="p "> )(</ span > < span class ="n "> old_arg</ span > < span class ="o "> .</ span > < span class ="n "> ufl_function_space</ span > < span class ="p "> (),</ span > < span class ="mi "> 0</ span > < span class ="p "> ,</ span > < span class ="n "> old_arg</ span > < span class ="o "> .</ span > < span class ="n "> part</ span > < span class ="p "> ())</ span >
438+ < span class ="n "> operand</ span > < span class ="o "> =</ span > < span class ="n "> replace</ span > < span class ="p "> (</ span > < span class ="n "> operand</ span > < span class ="p "> ,</ span > < span class ="p "> {</ span > < span class ="n "> old_arg</ span > < span class ="p "> :</ span > < span class ="n "> new_arg</ span > < span class ="p "> })</ span >
430439 < span class ="k "> if</ span > < span class ="n "> v</ span > < span class ="o "> ==</ span > < span class ="n "> right</ span > < span class ="o "> .</ span > < span class ="n "> arguments</ span > < span class ="p "> ()[</ span > < span class ="mi "> 0</ span > < span class ="p "> ]:</ span >
431440 < span class ="k "> return</ span > < span class ="n "> right</ span > < span class ="o "> .</ span > < span class ="n "> _ufl_expr_reconstruct_</ span > < span class ="p "> (</ span > < span class ="n "> operand</ span > < span class ="p "> ,</ span > < span class ="n "> v</ span > < span class ="o "> =</ span > < span class ="n "> left</ span > < span class ="p "> )</ span >
432441
0 commit comments