<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>