<div dir="ltr">Dear FLASH users,<div><br></div><div>I decided to look at the components of the gravitational acceleration for the supplied </div><div>DustCollapse problem (FLASH 4.3), and have noticed some weird artifacts on the block boundaries.</div><div><br></div><div>The issue seems somewhat similar to one Thomas Peters' <a href="http://flash.uchicago.edu/pipermail/flash-users/2014-May/001440.html">refinement issue</a> (a plotting bug)</div><div>but I chatted with ngoldbaum on the yt IRC channel and the conclusion was the artifacts </div><div>are on the FLASH side of things.</div><div><br></div><div>The only edits I made to the DustCollapse problem supplied with FLASH 4.3 were:</div><div><br></div><div>* Config: added the following lines</div><div><div>VARIABLE grac</div><div>VARIABLE poix</div><div>VARIABLE poiy</div><div>VARIABLE poiz</div></div><div><br></div><div>* Driver_initFlash.F90: copied to problem directory and modified the original lines:</div><div><div>  if(.not. dr_restart) then</div><div>     call Grid_getListOfBlocks(LEAF,blockList,blockCount)</div><div>     call Gravity_potentialListOfBlocks(blockCount,blockList)</div><div>     call Particles_initForces()</div><div>  end if<br></div><div><br></div><div>  ! If we want to free any arrays created during simulation</div><div>  ! initialization that are no longer needed, do it here.</div><div>  call Simulation_freeUserArrays()</div><div><br></div><div>  call IO_outputInitial(  dr_nbegin, dr_initialSimTime)</div><div>  if(dr_globalMe==MASTER_PE)print*,'Initial plotfile written'</div><div><br></div><div>  if(dr_globalMe==MASTER_PE)print*,'Driver init all done'</div></div><div><br></div><div><br></div><div>**to**</div><div><div>  if(.not. dr_restart) then</div><div>     call Grid_getListOfBlocks(LEAF,blockList,blockCount)</div><div>     call Gravity_potentialListOfBlocks(blockCount,blockList)</div><div>     call Particles_initForces()</div><div><br></div><div>     call Gravity_accelListOfBlocks(blockCount, blockList, IAXIS, GRAC_VAR)</div><div>     call Gravity_accelListOfBlocks(blockCount, blockList, JAXIS, GRAC_VAR)</div><div>     call Gravity_accelListOfBlocks(blockCount, blockList, KAXIS, GRAC_VAR)</div><div>  end if</div><div><br></div><div>  ! If we want to free any arrays created during simulation</div><div>  ! initialization that are no longer needed, do it here.</div><div>  call Simulation_freeUserArrays()</div><div><br></div><div>  call IO_outputInitial(  dr_nbegin, dr_initialSimTime)</div><div>  if(dr_globalMe==MASTER_PE)print*,'Initial plotfile written'</div><div><br></div><div>  STOP(99)</div><div><br></div><div>  if(dr_globalMe==MASTER_PE)print*,'Driver init all done'</div></div><div><br></div><div>* Gravity_accelOneRow: modified the original lines:</div><div><div>  do ii = iimin+1, iimax-1</div><div>     grav(ii) = grav(ii) + delxinv * (gpot(ii-1) - gpot(ii+1))</div><div>  enddo<br></div><div><br></div><div>  grav(iimin) = grav(iimin+1)     ! this is invalid data - must not be used</div><div>  grav(iimax) = grav(iimax-1)</div></div><div><br></div><div>**to**</div><div><div>  do ii = iimin+1, iimax-1</div><div>     grav(ii) = grav(ii) + delxinv * (gpot(ii-1) - gpot(ii+1))</div><div><br></div><div>     if (sweepDir .eq. SWEEP_X) then</div><div>       solnVec(POIX_VAR, ii, pos(1), pos(2)) = grav(ii)</div><div>     end if</div><div>     if (sweepDir .eq. SWEEP_Y) then</div><div>       solnVec(POIY_VAR, pos(1), ii, pos(2)) = grav(ii)</div><div>     end if</div><div>     if (sweepDir .eq. SWEEP_Z) then</div><div>       solnVec(POIZ_VAR, pos(1), pos(2), ii) = grav(ii)</div><div>     end if</div><div>  enddo</div><div><br></div><div>  grav(iimin) = grav(iimin+1)     ! this is invalid data - must not be used</div><div>  grav(iimax) = grav(iimax-1)</div></div><div><div>  if (sweepDir .eq. SWEEP_X) then</div><div>    solnVec(POIX_VAR, iimin, pos(1), pos(2)) = grav(iimin+1)</div><div>    solnVec(POIX_VAR, iimax, pos(1), pos(2)) = grav(iimax-1)</div><div>  end if</div><div>  if (sweepDir .eq. SWEEP_Y) then</div><div>    solnVec(POIY_VAR, pos(1), iimin, pos(2)) = grav(iimin+1)</div><div>    solnVec(POIY_VAR, pos(1), iimax, pos(2)) = grav(iimax-1)</div><div>  end if</div><div>  if (sweepDir .eq. SWEEP_Z) then</div><div>    solnVec(POIZ_VAR, pos(1), pos(2), iimin) = grav(iimin+1)</div><div>    solnVec(POIZ_VAR, pos(1), pos(2), iimax) = grav(iimax-1)</div><div>  end if</div></div><div><br></div><div>Slices were taken along the x-axis.</div><div><br></div><div>Thanks for your help,<br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Ryan</div></div></div></div></div></div>
</div></div>