<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style type="text/css" id="owaParaStyle"></style>
</head>
<body style="word-wrap:break-word; color:rgb(0,0,0); font-size:14px; font-family:Arial,sans-serif" fpstyle="1" ocsi="0">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">
<div><br>
</div>
Hi Emmanuel,
<div><br>
</div>
<div>Note that bintm1 and bm1 are not precise inverses of one another.</div>
<div>bm1 is the unassembled mass matrix - i.e., it is the collection of local</div>
<div>(to each element) mass matrices, each of which is diagonal.  </div>
<div><br>
</div>
<div>
<div>Conceptually, we denote the local mass matrix<span style="font-family: Tahoma; font-size: 10pt;"> as B_L, for local.  </span></div>
<div><span style="font-family: Tahoma; font-size: 10pt;">Then, the assembled mass matrix is:</span></div>
<div><br>
</div>
<div>     B := Q^T B_L Q</div>
<div><br>
</div>
<div>where Q is the Boolean matrix that copies global degrees of freedom</div>
<div>to their shared counterparts (i.e., copies a values to shared faces, </div>
<div>edges, vertices, etc.).   For the SEM, B_L is diagonal, as is B, so</div>
<div>Binv := B^-1 is easily computed.   Once the entries of this diagonal</div>
<div>matrix are known, we can copy them to their element-based locations,</div>
<div>so that we can generate B^-1 * r very easily.  </div>
<div><br>
</div>
</div>
<div>Often, products with these matrices, in conjunction with dssum, are used</div>
<div>to generate continuous fields and that appears to be what is happening in </div>
<div>this case.   An example would be if you want to find a the continuous </div>
<div>counterpart to a discontinuous function g.  The usual projection approach</div>
<div>is:  Find gc \in H1 such that  \int v gc dV = \int v g dV for all v in H1, which</div>
<div>ends up looking like:</div>
<div><br>
</div>
<div>Find gc \in H1 such that:</div>
<div><br>
</div>
<div><br>
</div>
<div>         (v,gc) = (v,g)  for all g \in H1</div>
<div><br>
</div>
<div>or</div>
<div><br>
</div>
<div>         v B gc = v Q^T B_L g_L</div>
<div><br>
</div>
<div>               gc = B^-1 Q^T B_L g_L</div>
<div><br>
</div>
<div>               gc_L = Q B^-1 Q^T B_L g_L</div>
<div><br>
</div>
<div>In Nek, the last statement is expressed as:</div>
<div><br>
</div>
<div>              call col2(g,bm1,n)</div>
<div>              call dssum(g,nx1,ny1,nz1)</div>
<div>              call col2(g,bintm1,n)</div>
<div><br>
</div>
<div>In your cvode case, these statements are permuted because of the</div>
<div>initial state of the data and the desired output (which is to be B*q --</div>
<div>which is why the variable is labeled bq).</div>
<div><br>
</div>
<div>Paul</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
<div style="font-family: Times New Roman; color: #000000; font-size: 16px">
<hr tabindex="-1">
<div id="divRpF599061" style="direction: ltr;"><font face="Tahoma" size="2" color="#000000"><b>From:</b> nek5000-users-bounces@lists.mcs.anl.gov [nek5000-users-bounces@lists.mcs.anl.gov] on behalf of nek5000-users@lists.mcs.anl.gov [nek5000-users@lists.mcs.anl.gov]<br>
<b>Sent:</b> Thursday, June 05, 2014 2:38 AM<br>
<b>To:</b> nek5000-users@lists.mcs.anl.gov<br>
<b>Subject:</b> Re: [Nek5000-users] weak derivative, dssum and binvm1 in cvode_driver<br>
</font><br>
</div>
<div></div>
<div>
<div>Hi Emmanuel</div>
<div><br>
</div>
<div>From what I recall: </div>
<div>CVODE solves the governing non-linear eqns in the strong form. That’s why we have to project every term of the RHS onto H2 (dssum and collocate with bintm1). The sum is projected again onto H2 because it gets devided by vtrans. Hope this helps.</div>
<div><br>
</div>
<div>Cheers,</div>
<div>Stefan</div>
<div><br>
</div>
<span id="OLK_SRC_BODY_SECTION">
<div style="font-family:Calibri; font-size:11pt; text-align:left; color:black; border-bottom:medium none; border-left:medium none; padding-bottom:0in; padding-left:0in; padding-right:0in; border-top:#b5c4df 1pt solid; border-right:medium none; padding-top:3pt">
<span style="font-weight:bold">Von: </span><<a href="mailto:nek5000-users@lists.mcs.anl.gov" target="_blank">nek5000-users@lists.mcs.anl.gov</a>><br>
<span style="font-weight:bold">Antworten an: </span><<a href="mailto:nek5000-users@lists.mcs.anl.gov" target="_blank">nek5000-users@lists.mcs.anl.gov</a>><br>
<span style="font-weight:bold">Datum: </span>Thursday, June 5, 2014 at 9:20 AM<br>
<span style="font-weight:bold">An: </span>"<a href="mailto:nek5000-users@lists.mcs.anl.gov" target="_blank">nek5000-users@lists.mcs.anl.gov</a>" <<a href="mailto:nek5000-users@lists.mcs.anl.gov" target="_blank">nek5000-users@lists.mcs.anl.gov</a>><br>
<span style="font-weight:bold">Betreff: </span>Re: [Nek5000-users] weak derivative, dssum and binvm1 in cvode_driver<br>
</div>
<div><br>
</div>
<div>
<div style="word-wrap:break-word">I’m adding another quick question:
<div><br>
</div>
<div>why in the routine makeq, under the cvode statement, there are these following 2 lines:</div>
<div>
<div>             call col2(bq,bintm1,ntot)</div>
<div>             call col2(bq,bm1,ntot)</div>
<div><br>
</div>
<div>I’m not sure to understand why we are multiplying bq by the inverse of the mass matrix (bintm1) and just after multiplying it back by the mass matrix (bm1). Moreover, after leaving the makeq routine, fctfun will multiplying again ydot=bq/vtrans by the
 inverse of the mass matrix.</div>
<div><br>
</div>
<div>Why all of these operations? Thank you for your help !</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>
<div style="color:rgb(0,0,0); letter-spacing:normal; orphans:auto; text-align:start; text-indent:0px; text-transform:none; white-space:normal; widows:auto; word-spacing:0px; word-wrap:break-word">
<div>Best regards,</div>
<div>Emmanuel</div>
</div>
<br class="Apple-interchange-newline">
<br class="Apple-interchange-newline">
</div>
<br>
<div>
<div>On 5 Jun 2014, at 12:14, <<a href="mailto:nek5000-users@lists.mcs.anl.gov" target="_blank">nek5000-users@lists.mcs.anl.gov</a>> <<a href="mailto:nek5000-users@lists.mcs.anl.gov" target="_blank">nek5000-users@lists.mcs.anl.gov</a>> wrote:</div>
<br class="Apple-interchange-newline">
<blockquote type="cite">
<div style="word-wrap:break-word">Dear Nek team,
<div><br>
</div>
<div>I have a quick question: in cvode_driver.f, in the routine fcvfun, do all the derivatives must be in weak formulation (using wgradm1) when constructing the right hand side term ydot?</div>
<div>Because at the end of the routine fcvfun,  dssum and multiplication by binvm1 are applied to the right hand side term ydot.</div>
<div><br>
</div>
<div>It’s also not clear to me if I need to apply dssum and binvm1 for each derivative term appearing in my equation (in other terms, each time after calling wgradm1), or if I need to apply dssum and binvm1 only to the whole RHS term ydot ?</div>
<div><br>
</div>
<div>I’m afraid of inconsistency if apply twice dssum and binvm1: one during the construction of operators and one on the final ydot term.</div>
<div><br>
</div>
<div>Thank you for you help !</div>
<div><br>
<div>
<div style="letter-spacing:normal; orphans:auto; text-align:start; text-indent:0px; text-transform:none; white-space:normal; widows:auto; word-spacing:0px; word-wrap:break-word">
<div>Best regards,</div>
<div>Emmanuel</div>
</div>
<br class="Apple-interchange-newline">
<br class="Apple-interchange-newline">
</div>
<br>
</div>
</div>
_______________________________________________<br>
Nek5000-users mailing list<br>
<a href="mailto:Nek5000-users@lists.mcs.anl.gov" target="_blank">Nek5000-users@lists.mcs.anl.gov</a><br>
<a href="https://lists.mcs.anl.gov/mailman/listinfo/nek5000-users" target="_blank">https://lists.mcs.anl.gov/mailman/listinfo/nek5000-users</a><br>
</blockquote>
</div>
<br>
</div>
</div>
</div>
_______________________________________________ Nek5000-users mailing list <a href="mailto:Nek5000-users@lists.mcs.anl.gov" target="_blank">
Nek5000-users@lists.mcs.anl.gov</a> <a href="https://lists.mcs.anl.gov/mailman/listinfo/nek5000-users" target="_blank">
https://lists.mcs.anl.gov/mailman/listinfo/nek5000-users</a> </span></div>
</div>
</div>
</div>
</body>
</html>