<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" dir="ltr" style="">
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
Dear PETSc Users, </p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
<br>
</p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
I have modified ex14 "Bratu nonlinear PDE in 3D" from the PETSc online examples (<a href="http://www.mcs.anl.gov/petsc/petsc-3.7/src/snes/examples/tutorials/ex14.c.html" class="OWAAutoLink" id="LPlnk533002" previewremoved="true">http://www.mcs.anl.gov/petsc/petsc-3.7/src/snes/examples/tutorials/ex14.c.html</a>)
 to fit my current research problem. </p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
<br>
</p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
Notable changes of ex14 include reducing the size of the problem to 1D and using -snes_fd_color in the Makefile instead of the given "FormJacobian" function. When using this edited version of ex14, we obtained the desired outcome of a simple Stokes test problem.
 Now, we extend this work to our actual problem, a boundary value problem.<span style="font-size: 12pt;"> Although the code compiles and runs, the output does not match our analytical results. </span></p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
<span style="font-size: 12pt;"><br>
</span></p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
<span style="font-size: 12pt;">We think that the issue is at least in part due to our equations including complex numbers via PETSC_i. We have noticed that there is a difference in output when using PetscScalar vs PetscComplex when testing PETSC_i:</span></p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
<span style="font-size: 12pt;"><br>
</span></p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
<span style="font-size: 12pt;"></p>
<p style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;">
<span style="font-size: 12pt;">  </span><span style="font-size: 12pt;">PetscScalar   test=10.0+PETSC_i*2.0; </span></p>
<p style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;">
<span style="font-size: 12pt;">  printf("%f+%fi\n", crealf(test), cimagf(test)); </span></p>
<p style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;">
<span style="font-size: 12pt;">The result is 10.000000+0.000000i.</span></p>
<br>
</span>
<p></p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
<span style="font-size: 12pt;"></span><span style="font-size: 12pt;">  </span><span style="font-size: 12pt;">PetscComplex   test=10.0+PETSC_i*2.0; </span></p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
<span style="font-size: 12pt;">  printf("%f+%fi\n", crealf(test), cimagf(test)); </span></p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
<span style="font-size: 12pt;">The result is <span>10.000000+2.000000i.</span></span></p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
<br>
</p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
This compelled us to change our variables (and even real parameters used with those variables) from PetscScalar to PetscComplex in FormFunction, while leaving our hz, dhz as PetscScalars:</p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
<span><span style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;">  </span></span></p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
<span><span style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;">  PetscScalar        hz, dhz;</span><br>
</span></p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
<span>  PetscComplex   Q=0.5, h21=1.0;</span><br>
</p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
<span>  PetscComplex   u, uz, w, wz, p, pz;</span><br>
</p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
<span style="font-size: 12pt;"> </span><br>
</p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
</p>
<div>  hz     = 1.0/(PetscScalar)(Mx-1);</div>
<div>  dhz    = 1.0/hz;</div>
<div><br>
</div>
<div>...</div>
<div><br>
</div>
<p></p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
</p>
<div>  // u component of velocity</div>
<div>  u   = x[i].x_vel;</div>
<div>  uz  = (x[i].x_vel - x[i-1].x_vel)*dhz;</div>
<div><br>
</div>
<div>  // w component of velocity</div>
<div>  w   = x[i].z_vel; </div>
<div>  wz  = (x[i].z_vel - x[i-1].z_vel)*dhz;</div>
<div>      </div>
<div>  // pressure</div>
<div>  p  = x[i].pressure;</div>
<div>  pz = (x[i].pressure - x[i-1].pressure)*dhz;</div>
<p></p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
<span style="font-size: 12pt;"><br>
</span></p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
<span style="font-size: 12pt;">  f[i].x_vel    = (uz + PETSC_i*Q*w + 2.0*PETSC_i*Q*h21)/(dhz); </span><br>
</p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
</p>
<div>  f[i].z_vel    = (-p + 2.0*wz)/(dhz);</div>
<div>  f[i].pressure = (PETSC_i*Q*u + wz)/(dhz); </div>
<br>
<p></p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
This switch from PetscScalar to PetscComplex did fix the discrepancy. Therefore, we also tried<span style="font-size: 12pt;"> to change our Field variables from PetscScalar to PetscComplex:</span></p>
<p style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-top: 0px; margin-bottom: 0px;">
<span style="font-size: 12pt;"><br>
</span></p>
<p style="margin-top: 0px; margin-bottom: 0px;"></p>
<div style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
typedef struct {</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
  PetscScalar x_vel, z_vel, pressure; // variables for our system</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
} Field;</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
<br>
</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
However, an error is thrown when the program runs:</div>
<div style=""><br>
<div style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
[0]PETSC ERROR: PetscMallocValidate: error detected at  SNESComputeFunction() line 2144 in /usr/local/src/petsc-dev/src/snes/interface/snes.c</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
[0]PETSC ERROR: Memory at address 0x1af7d20 is corrupted</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
[0]PETSC ERROR: Probably write past beginning or end of array</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
[0]PETSC ERROR: Last intact block allocated in PetscLayoutSetUp() line 147 in /usr/local/src/petsc-dev/src/vec/is/utils/pmap.c</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
[0]PETSC ERROR: --------------------- Error Message --------------------------------------------------------------</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
[0]PETSC ERROR: Memory corruption: http://www.mcs.anl.gov/petsc/documentation/installation.html#valgrind</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
[0]PETSC ERROR:  </div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
[0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html for trouble shooting.</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
[0]PETSC ERROR: Petsc Release Version 3.7.6, unknown </div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
[0]PETSC ERROR: ./idea2.exe on a arch-linux2-c-debug named lovelace by jswenson Mon Dec  4 14:59:04 2017</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
[0]PETSC ERROR: Configure options --prefix=/usr/local/petsc-dev --with-64-bit-indices=0 --with-fortran-interfaces=1 --CFLAGS=-O2 --CXXFLAGS=-O2 --FFLAGS=-O2 --download-hypre=yes --download-fftw=yes --download-superlu=yes --download-sundials=yes --download-metis=yes
 --download-parmetis=yes --download-superlu_dist=yes --download-spai=yes --download-sprng=1 --download-hdf5=yes --with-valgrind=0 --with-mpi-dir=/usr --with-shared-libraries=1 --with-c2html=0 --PETSC_ARCH=arch-linux2-c-debug</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
[0]PETSC ERROR: #1 PetscMallocValidate() line 136 in /usr/local/src/petsc-dev/src/sys/memory/mtr.c</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
[0]PETSC ERROR: #2 SNESComputeFunction() line 2144 in /usr/local/src/petsc-dev/src/snes/interface/snes.c</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
[0]PETSC ERROR: #3 SNESSolve_NEWTONLS() line 181 in /usr/local/src/petsc-dev/src/snes/impls/ls/ls.c</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
[0]PETSC ERROR: #4 SNESSolve() line 4005 in /usr/local/src/petsc-dev/src/snes/interface/snes.c</div>
<div style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">
<br>
</div>
<span style="font-size: 12pt;">My specific questions are the following:</span><br>
<ol style="color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt; margin-bottom: 0px; margin-top: 0px;">
<li>Is it important to have my Field variables PetscComplex or is PetscScalar sufficient?</li><li>Are there any foreseeable problems with using PETSC_i (or complex numbers in general) with this method from ex14? Do I need to somehow indicate to PETSc that I am using complex values? Am I just lacking an argument or an additional line?</li><li>Is there a nice way to save the solution (to be plotted) besides including <span>-snes_monitor_solution ascii:myproblem.txt in the Makefile and writing an additional code to read and plot the results? For example, on a separate project, I really appreciated
 the functionality of <span>-ts_monitor_solution_vtk  aks=.5%05D.vts in the Makefile. A similar technique would be useful here, if it exists. </span>I have tried <span>-snes_monitor_solution draw -draw_pause -1, but do not know if that works with complex values.
 Additionally, as far as I can tell, these plots cannot be saved.</span></span></li></ol>
<br>
</div>
<div style="">Any other comments or insight would be greatly appreciated. Thank you for your time.<br>
<br>
Sincerely,<br>
Jennifer Swenson</div>
<br>
<p></p>
</div>
</body>
</html>