<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
Hello Matt,
<div class=""><br class="">
</div>
<div class="">
<blockquote type="cite" class="">
<div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div class="">
<blockquote type="cite" class="">
<div class="">On 7 Mar 2016, at 16:42, Matthew Knepley <<a href="mailto:knepley@gmail.com" class="">knepley@gmail.com</a>> wrote:</div>
</blockquote>
</div>
</div>
</blockquote>
<br class="">
</div>
<div class="">
<blockquote type="cite" class="">
<div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div class="">
<blockquote type="cite" class="">
<div class="">
<div dir="ltr" class="">
<div class="gmail_extra">
<div class="gmail_quote">
<div class="">Yes, that should be it. It would be nice to have some example that does this if you would</div>
<div class="">be willing to contribute some version of your code.</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</blockquote>
</div>
<div class="">
<div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div class="">
<blockquote type="cite" class="">
<div class="">
<div dir="ltr" class="">
<div class="gmail_extra">
<div class="gmail_quote">
<div class=""><br class="">
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
<div class=""><br class="">
</div>
<div class="">Following discussion from last week, I had time to implement MG via DM, see following code,</div>
<div class=""><a href="http://cdash.eng.gla.ac.uk/mofem/_p_c_m_g_set_up_via_approx_orders_8hpp_source.html" class="">http://cdash.eng.gla.ac.uk/mofem/_p_c_m_g_set_up_via_approx_orders_8hpp_source.html</a></div>
<div class=""><br class="">
</div>
<div class="">Minimal setup for DM and MG looks like that</div>
<div class="">
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;"><a class="line" href="http://cdash.eng.gla.ac.uk/mofem/_p_c_m_g_set_up_via_approx_orders_8hpp.html#a1c1639cf5baf9432f4f78094171a4358" style="color: rgb(70, 101, 162); text-decoration: none; background-color: rgb(216, 216, 216);">132</a></span> PetscErrorCode
<a class="code" href="http://cdash.eng.gla.ac.uk/mofem/_p_c_m_g_set_up_via_approx_orders_8cpp.html#a1c1639cf5baf9432f4f78094171a4358" style="color: rgb(70, 101, 162); text-decoration: none;">
DMCreate_MGViaApproxOrders</a>(DM dm) {</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00133" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">133</span> 
 PetscErrorCode ierr;</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00134" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">134</span> 
 PetscValidHeaderSpecific(dm,DM_CLASSID,1);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00135" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">135</span> 
 PetscFunctionBegin;</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00136" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">136</span> 
<span class="keywordflow" style="color: rgb(224, 128, 0);">if</span>(!dm->data) {</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00137" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">137</span> 
 dm->data = <span class="keyword" style="color: rgb(0, 128, 0);">new</span> <a class="code" href="http://cdash.eng.gla.ac.uk/mofem/struct_d_m_m_g_via_approx_orders_ctx.html" style="color: rgb(70, 101, 162); text-decoration: none;">
DMMGViaApproxOrdersCtx</a>();</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00138" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">138</span> 
 } <span class="keywordflow" style="color: rgb(224, 128, 0);">else</span> {</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00139" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">139</span> 
 ((<a class="code" href="http://cdash.eng.gla.ac.uk/mofem/struct_mo_f_e_m_1_1_d_m_ctx.html" style="color: rgb(70, 101, 162); text-decoration: none;">DMCtx</a>*)(dm->data))->referenceNumber++;</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00140" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">140</span> 
 }</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00141" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">141</span> 
 ierr = <a class="code" href="http://cdash.eng.gla.ac.uk/mofem/group__dm.html#ga022055f7270e8fb02e780268a967c24d" style="color: rgb(70, 101, 162); text-decoration: none;">
DMSetOperators_MoFEM</a>(dm); CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00142" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">142</span> 
 dm->ops->creatematrix = <a class="code" href="http://cdash.eng.gla.ac.uk/mofem/group__dm.html#gaac13a65e2603262490a3c07cf846bafc" style="color: rgb(70, 101, 162); text-decoration: none;">
DMCreateMatrix_MGViaApproxOrders</a>;</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00143" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">143</span> 
 dm->ops->createglobalvector = <a class="code" href="http://cdash.eng.gla.ac.uk/mofem/_p_c_m_g_set_up_via_approx_orders_8cpp.html#aa2a7f489f973858a921260d1af52d906" style="color: rgb(70, 101, 162); text-decoration: none;">
DMCreateGlobalVector_MGViaApproxOrders</a>;</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00144" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">144</span> 
 dm->ops->coarsen = <a class="code" href="http://cdash.eng.gla.ac.uk/mofem/group__dm.html#ga04beeab0e92e7f209334adb347353090" style="color: rgb(70, 101, 162); text-decoration: none;">
DMCoarsen_MGViaApproxOrders</a>;</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00145" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">145</span> 
 dm->ops->createinterpolation = <a class="code" href="http://cdash.eng.gla.ac.uk/mofem/_p_c_m_g_set_up_via_approx_orders_8cpp.html#ad3bc29f7e017e757597de9af3f82202b" style="color: rgb(70, 101, 162); text-decoration: none;">
DMCreateInterpolation_MGViaApproxOrders</a>;</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00146" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">146</span> 
 ierr = DMKSPSetComputeOperators(dm,ksp_set_operators,NULL); CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00147" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">147</span> 
 PetscInfo1(dm,<span class="stringliteral" style="color: rgb(0, 32, 128);">"Create DMMGViaApproxOrders reference = %d\n"</span>,((<a class="code" href="http://cdash.eng.gla.ac.uk/mofem/struct_mo_f_e_m_1_1_d_m_ctx.html" style="color: rgb(70, 101, 162); text-decoration: none;">DMCtx</a>*)(dm->data))->referenceNumber);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00148" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">148</span> 
 PetscFunctionReturn(0);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00149" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">149</span> }</div>
</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">It is not yet perfect, I need to add additional interface functions to improve functionality. If this in any way would be useful for you, pleas feel free to use it. I building now two examples, f.e. <a href="http://cdash.eng.gla.ac.uk/mofem/elasticity_8cpp_source.html" class="">http://cdash.eng.gla.ac.uk/mofem/elasticity_8cpp_source.html</a>,
 see </div>
<div class=""><br class="">
</div>
<div class="">Register/Create and SetUp DM;</div>
<div class="">
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">303</span>  DMType dm_name =
<span class="stringliteral" style="color: rgb(0, 32, 128);">"ELASTIC_PROB"</span>;</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00304" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">304</span> 
 ierr = <a class="code" href="http://cdash.eng.gla.ac.uk/mofem/group__dm.html#ga1f0d8d905f5e398772b076d9582f2bd8" style="color: rgb(70, 101, 162); text-decoration: none;">
DMRegister_MGViaApproxOrders</a>(dm_name); CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00305" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">305</span> 
<span class="comment" style="color: rgb(128, 0, 0);">// ierr = DMRegister_MoFEM(dm_name); CHKERRQ(ierr);</span></div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00306" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">306</span> </div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00307" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">307</span> 
<span class="comment" style="color: rgb(128, 0, 0);">//craete dm instance</span></div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00308" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">308</span> 
 DM dm;</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00309" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">309</span> 
 ierr = DMCreate(PETSC_COMM_WORLD,&dm);CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00310" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">310</span> 
 ierr = DMSetType(dm,dm_name);CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00311" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">311</span> 
<span class="comment" style="color: rgb(128, 0, 0);">//set dm datastruture whict created mofem datastructures</span></div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00312" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">312</span> 
 ierr = <a class="code" href="http://cdash.eng.gla.ac.uk/mofem/group__dm.html#ga95264c2ed2c7295fa52072508b60c5fb" style="color: rgb(70, 101, 162); text-decoration: none;">
DMMoFEMCreateMoFEM</a>(dm,&m_field,dm_name,bit_level0); CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00313" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">313</span> 
 ierr = DMSetFromOptions(dm); CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00314" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">314</span> 
 ierr = <a class="code" href="http://cdash.eng.gla.ac.uk/mofem/group__dm.html#gafaa90d67e85cf3c75096fa17a4575901" style="color: rgb(70, 101, 162); text-decoration: none;">
DMMoFEMSetIsPartitioned</a>(dm,is_partitioned); CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00315" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">315</span> 
<span class="comment" style="color: rgb(128, 0, 0);">//add elements to dm</span></div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00316" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">316</span> 
 ierr = <a class="code" href="http://cdash.eng.gla.ac.uk/mofem/group__dm.html#gaaec6e1adbf45c2c7fd67548674c1bce5" style="color: rgb(70, 101, 162); text-decoration: none;">
DMMoFEMAddElement</a>(dm,<span class="stringliteral" style="color: rgb(0, 32, 128);">"ELASTIC"</span>); CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00317" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">317</span> 
 ierr = <a class="code" href="http://cdash.eng.gla.ac.uk/mofem/group__dm.html#gaaec6e1adbf45c2c7fd67548674c1bce5" style="color: rgb(70, 101, 162); text-decoration: none;">
DMMoFEMAddElement</a>(dm,<span class="stringliteral" style="color: rgb(0, 32, 128);">"BODY_FORCE"</span>); CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00318" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">318</span> 
 ierr = <a class="code" href="http://cdash.eng.gla.ac.uk/mofem/group__dm.html#gaaec6e1adbf45c2c7fd67548674c1bce5" style="color: rgb(70, 101, 162); text-decoration: none;">
DMMoFEMAddElement</a>(dm,<span class="stringliteral" style="color: rgb(0, 32, 128);">"FLUID_PRESSURE_FE"</span>); CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00319" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">319</span> 
 ierr = <a class="code" href="http://cdash.eng.gla.ac.uk/mofem/group__dm.html#gaaec6e1adbf45c2c7fd67548674c1bce5" style="color: rgb(70, 101, 162); text-decoration: none;">
DMMoFEMAddElement</a>(dm,<span class="stringliteral" style="color: rgb(0, 32, 128);">"FORCE_FE"</span>); CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00320" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">320</span> 
 ierr = <a class="code" href="http://cdash.eng.gla.ac.uk/mofem/group__dm.html#gaaec6e1adbf45c2c7fd67548674c1bce5" style="color: rgb(70, 101, 162); text-decoration: none;">
DMMoFEMAddElement</a>(dm,<span class="stringliteral" style="color: rgb(0, 32, 128);">"PRESSURE_FE"</span>); CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00321" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">321</span> 
 ierr = DMSetUp(dm); CHKERRQ(ierr);</div>
</div>
<div class=""><br class="">
</div>
<div class="">Matrices and vector via DM,</div>
<div class="">
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">326</span>  Vec F,D,D0;</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00327" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">327</span> 
 ierr = DMCreateGlobalVector(dm,&F); CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00328" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">328</span> 
 ierr = VecDuplicate(F,&D); CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00329" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">329</span> 
 ierr = VecDuplicate(F,&D0); CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00330" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">330</span> 
 Mat Aij;</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00331" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">331</span> 
 ierr = DMCreateMatrix(dm,&Aij); CHKERRQ(ierr);</div>
</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">SetUP solver,</div>
<div class=""><span class="lineno" style="font-family: monospace, fixed; font-size: 13px; text-indent: -53px; padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">421</span><span style="font-family: monospace, fixed; font-size: 13px; text-indent: -53px; white-space: pre-wrap; background-color: rgb(251, 252, 253);" class=""> 
 KSP solver;</span></div>
<div class="">
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00422" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">422</span> 
 ierr = KSPCreate(PETSC_COMM_WORLD,&solver); CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00423" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">423</span> 
 ierr = KSPSetDM(solver,dm); CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00424" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">424</span> 
 ierr = KSPSetFromOptions(solver); CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00425" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">425</span> 
 ierr = KSPSetOperators(solver,Aij,Aij); CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00426" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">426</span> 
 {</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00427" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">427</span> 
<span class="comment" style="color: rgb(128, 0, 0);">//from PETSc example ex42.c</span></div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00428" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">428</span> 
 PetscBool same = PETSC_FALSE;</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00429" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">429</span> 
 PC pc;</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00430" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">430</span> 
 ierr = KSPGetPC(solver,&pc); CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00431" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">431</span> 
 PetscObjectTypeCompare((PetscObject)pc,PCMG,&same);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00432" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">432</span> 
<span class="keywordflow" style="color: rgb(224, 128, 0);">if</span> (same) {</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00433" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">433</span> 
<a class="code" href="http://cdash.eng.gla.ac.uk/mofem/struct_p_c_m_g_set_up_via_approx_orders_ctx.html" style="color: rgb(70, 101, 162); text-decoration: none;">
PCMGSetUpViaApproxOrdersCtx</a> pc_ctx(dm,Aij);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00434" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">434</span> 
 ierr = <a class="code" href="http://cdash.eng.gla.ac.uk/mofem/_p_c_m_g_set_up_via_approx_orders_8cpp.html#a86375678c4c815cecd1931d7f51e40c3" style="color: rgb(70, 101, 162); text-decoration: none;">
PCMGSetUpViaApproxOrders</a>(pc,&pc_ctx); CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00435" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">435</span> 
 } <span class="keywordflow" style="color: rgb(224, 128, 0);">else</span> {</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00436" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">436</span> 
<span class="comment" style="color: rgb(128, 0, 0);">// Operators are already set, do not use DM for doing that</span></div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00437" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">437</span> 
 ierr = KSPSetDMActive(solver,PETSC_FALSE); CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00438" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">438</span> 
 }</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00439" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">439</span> 
 }</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00440" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">440</span> 
 ierr = KSPSetInitialGuessKnoll(solver,PETSC_FALSE); CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00441" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">441</span> 
 ierr = KSPSetInitialGuessNonzero(solver,PETSC_TRUE); CHKERRQ(ierr);</div>
<div class="line" style="font-size: 13px; line-height: 1; font-family: monospace, fixed; min-height: 13px; white-space: pre-wrap; word-wrap: break-word; text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition: background-color 0.5s, box-shadow; transition: background-color 0.5s, box-shadow; background-color: rgb(251, 252, 253);">
<a name="l00442" style="color: rgb(61, 87, 140);" class=""></a><span class="lineno" style="padding-right: 4px; text-align: right; border-right-width: 2px; border-right-style: solid; border-right-color: rgb(0, 255, 0); background-color: rgb(232, 232, 232); white-space: pre;">442</span> 
 ierr = KSPSetUp(solver); CHKERRQ(ierr);</div>
</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">Kind regards,</div>
<div class="">Lukasz</div>
<div class=""><br class="">
<div>
<blockquote type="cite" class="">
<div class="">On 7 Mar 2016, at 17:41, Lukasz Kaczmarczyk <<a href="mailto:Lukasz.Kaczmarczyk@glasgow.ac.uk" class="">Lukasz.Kaczmarczyk@glasgow.ac.uk</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
<br class="">
<div class="">
<blockquote type="cite" class="">
<div class="">On 7 Mar 2016, at 16:42, Matthew Knepley <<a href="mailto:knepley@gmail.com" class="">knepley@gmail.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div dir="ltr" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<div class="gmail_extra">
<div class="gmail_quote">On Mon, Mar 7, 2016 at 10:28 AM, Lukasz Kaczmarczyk<span class="Apple-converted-space"> </span><span dir="ltr" class=""><<a href="mailto:Lukasz.Kaczmarczyk@glasgow.ac.uk" target="_blank" class="">Lukasz.Kaczmarczyk@glasgow.ac.uk</a>></span><span class="Apple-converted-space"> </span>wrote:<br class="">
<blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;">
<div style="word-wrap: break-word;" class="">
<div class="">Many thanks all for help. I started to implement function for DM. </div>
<div class=""><br class="">
</div>
<div class="">I understand that minimal implementation is that for the DM i need to have, is to have  DMCoarsen and in each level for all DMs, set operators</div>
<div class="">DMKSPSetComputeOperators and DMCreateInterpolation. Matrix matrix free P from DMCreateInterpolation have to have operators for mult and mult_traspose. Is that is all? </div>
</div>
</blockquote>
<div class=""><br class="">
</div>
<div class="">Yes, that should be it. It would be nice to have some example that does this if you would</div>
<div class="">be willing to contribute some version of your code.</div>
</div>
</div>
</div>
</div>
</blockquote>
<div class=""><br class="">
</div>
<div class="">No problem, I will do that will pleasure. </div>
<br class="">
<blockquote type="cite" class="">
<div class="">
<div dir="ltr" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<div class="gmail_extra">
<div class="gmail_quote">
<div class=""> </div>
<blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;">
<div style="word-wrap: break-word;" class="">
<div class="">Kind regards,</div>
<div class="">Lukasz</div>
<div class="">
<div class="h5">
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<br class="">
<div class="">
<blockquote type="cite" class="">
<div class="">On 7 Mar 2016, at 15:55, Mark Adams <<a href="mailto:mfadams@lbl.gov" target="_blank" class="">mfadams@lbl.gov</a>> wrote:</div>
<br class="">
<div class="">
<div dir="ltr" class="">You can just set the coarse grid matrix/operator instead of using Galerkin.  If you have a shell (matrix free) P then you will need to create and set this yourself.  Our Galerkin requires a matrix P.</div>
<div class="gmail_extra"><br class="">
<div class="gmail_quote">On Mon, Mar 7, 2016 at 9:32 AM, Lukasz Kaczmarczyk<span class="Apple-converted-space"> </span><span dir="ltr" class=""><<a href="mailto:Lukasz.Kaczmarczyk@glasgow.ac.uk" target="_blank" class="">Lukasz.Kaczmarczyk@glasgow.ac.uk</a>></span><span class="Apple-converted-space"> </span>wrote:<br class="">
<blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;">
<div class="">
<div class=""><br class="">
> On 7 Mar 2016, at 14:21, Lawrence Mitchell <<a href="mailto:lawrence.mitchell@imperial.ac.uk" target="_blank" class="">lawrence.mitchell@imperial.ac.uk</a>> wrote:<br class="">
><br class="">
> On 07/03/16 14:16, Lukasz Kaczmarczyk wrote:<br class="">
>><br class="">
>>> On 7 Mar 2016, at 13:50, Matthew Knepley <<a href="mailto:knepley@gmail.com" target="_blank" class="">knepley@gmail.com</a><br class="">
>>> <mailto:<a href="mailto:knepley@gmail.com" target="_blank" class="">knepley@gmail.com</a>>> wrote:<br class="">
>>><br class="">
>>> On Mon, Mar 7, 2016 at 6:58 AM, Lukasz Kaczmarczyk<br class="">
>>> <<a href="mailto:Lukasz.Kaczmarczyk@glasgow.ac.uk" target="_blank" class="">Lukasz.Kaczmarczyk@glasgow.ac.uk</a><br class="">
>>> <mailto:<a href="mailto:Lukasz.Kaczmarczyk@glasgow.ac.uk" target="_blank" class="">Lukasz.Kaczmarczyk@glasgow.ac.uk</a>>> wrote:<br class="">
>>><br class="">
>>>    Hello,<br class="">
>>><br class="">
>>>    I run multi-grid solver, with adaptivity, works well, however It<br class="">
>>>    is some space for improving efficiency. I using hierarchical<br class="">
>>>    approximation basis, for which<br class="">
>>>    construction of interpolation operators is simple, it is simple<br class="">
>>>    injection.<br class="">
>>><br class="">
>>>    After each refinement level (increase of order of approximation<br class="">
>>>    on some element) I rebuild multigrid pre-conditioner with<br class="">
>>>    additional level. It is a way to add dynamically new levels<br class="">
>>>    without need of rebuilding whole MG pre-conditioner.<br class="">
>>><br class="">
>>><br class="">
>>> That does not currently exist, however it would not be hard to add,<br class="">
>>> since the MG structure jsut consists of<br class="">
>>> arrays of pointers.<br class="">
>>><br class="">
>>><br class="">
>>>    Looking at execution profile I noticed that 50%-60% of time is<br class="">
>>>    spent on MatPtAP function during PCSetUP stage.<br class="">
>>><br class="">
>>><br class="">
>>> Which means you are using a Galerkin projection to define the coarse<br class="">
>>> operator. Do you have a direct way of defining<br class="">
>>> this operator (rediscretization)?<br class="">
>><br class="">
>> Matt,<br class="">
>><br class="">
>><br class="">
>> Thanks for swift response. You are right, I using Galerkin projection.<br class="">
>><br class="">
>> Yes, I have a way to get directly coarse operator, it is some sub<br class="">
>> matrix of whole matrix. I taking advantage here form hierarchical<br class="">
>> approximation.<br class="">
>><br class="">
>> I could reimplement PCSetUp_MG to set the MG structure directly, but<br class="">
>> this probably not good approach, since my implementation which will<br class="">
>> work with current petsc version could be incompatible which  future<br class="">
>> changes in native MG data structures. The alternative option is to<br class="">
>> hack MatPtAP itself, and until petsc MG will use this, whatever<br class="">
>> changes you will make in MG in the future my code will work.<br class="">
><br class="">
> Why not provide a shell DM to the KSP that knows how to compute the<br class="">
> operators (and how to refine/coarsen and therefore<br class="">
> restrict/interpolate).  Then there's no need to use Galerkin coarse<br class="">
> grid operators, and the KSP will just call back to your code to create<br class="">
> the appropriate matrices.<br class="">
<br class="">
</div>
</div>
Hello Lawrence,<br class="">
<br class="">
Thanks, it is good advice.<br class="">
I have already my DM shell, however I have not looked yet how make it in the context of MG. Now is probably time to do that.<br class="">
<br class="">
DM shell<br class="">
<a href="http://userweb.eng.gla.ac.uk/lukasz.kaczmarczyk/MoFem/html/group__dm.html" rel="noreferrer" target="_blank" class="">http://userweb.eng.gla.ac.uk/lukasz.kaczmarczyk/MoFem/html/group__dm.html</a><br class="">
<br class="">
<br class="">
Regards,<br class="">
Lukasz</blockquote>
</div>
<br class="">
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</div>
</div>
</blockquote>
</div>
<br class="">
<br clear="all" class="">
<div class=""><br class="">
</div>
--<span class="Apple-converted-space"> </span><br class="">
<div class="gmail_signature">What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br class="">
-- Norbert Wiener</div>
</div>
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</body>
</html>