<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1715696083;
        mso-list-type:hybrid;
        mso-list-template-ids:445143770 -1302442800 134807577 134807579 134807567 134807577 134807579 134807567 134807577 134807579;}
@list l0:level1
        {mso-level-text:"\(%1\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-GB" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Dear All, <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’m a new FLASH user and I’m setting up my first problem. I’m looking for clarification that I’m correct on a few issues before pressing ahead with more complicated setups because I worry about accidently introducing a problem that will
 sabotage me down the line.  Any comments from experienced users would be much appreciated.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Question 1:  Which variables must be specified at a minimum for a self-consistent MHD initial condition and boundary condition?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I think it is the case that solution variables in Table 14.2 (dens, velx, vely, velz, pres, ener, temp) and Table 14.7 (magx, magy, magz,  magp, divb) must be specified in the initial condition in a self-consistent manner, and any special
 boundary conditions must correctly account for these variables. <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Am I correct in thinking that the above *<b>must</b>* be specified, and that the only consequence of not setting additional variables like current at t=0 is that they will just give you the “wrong” output at t=0, but then will be correctly
 derived from the solution variables for t>0 output?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Question 2: What should ENER_VAR be given as? <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">If using one of the MHD solvers, should the user set in Simulation_initBlock.F90 (and in boundary conditions if using a specialised BC):<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">(1) ENER_VAR = ekin + eint<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Or, <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">(2) ENER_VAR = ekin + eint + emag<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The MHD examples provided of course all seem to follow (1) during initialisation, but this message
<a href="http://flash.uchicago.edu/pipermail/flash-users/2012-April/001079.html">
http://flash.uchicago.edu/pipermail/flash-users/2012-April/001079.html</a> threw me. Is the correct way to interpret  this that any manipulation of ENER_VAR outside of hy_* files such as the initial conditions and specialist boundary conditions should follow
 (1)? <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Question 3: Correct logic for specifying spatially dependent, face-centred variables in initial conditions?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I assume that if you fill local variables with a loop over block indices that you run the risk of not filling the ‘leftmost’ or rightmost cell faced-variables and have to account for it. Can someone please see if this looks ok?
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">!loop is over cell indices, i.e. for face-centred values if not careful might miss leftmost or rightmost face<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">  do k = blkLimitsGC(LOW,KAXIS),blkLimitsGC(HIGH,KAXIS)<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">  do j = blkLimitsGC(LOW,JAXIS),blkLimitsGC(HIGH,JAXIS)<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">  do i = blkLimitsGC(LOW,IAXIS),blkLimitsGC(HIGH,IAXIS)<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    xx = xCoord(i) !cell-center position<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    yy = yCoord(j) <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">#if NFACE_VARS > 0<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    if (sim_killdivb) then<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    xxL = xCoordL(i)  !left face<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    xxR = xCoordR(i)  !right face<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    yyL = yCoordL(j)<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    yyR = yCoordR(j)    <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    endif<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">#endif<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    !calc. local values (<var>Zone) for the cell centered
<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    !variables<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    !the following  are user-set<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    eintZone = 1e-6  !set eint as small for zero beta?<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    densZone = 1.0<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    velxZone = 0.0 <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    velyZone = 0.0<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    velzZone = 0.0<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    magxZone = xx      !don't forget - any changes to the analytical form (e.g, if rotate B=[x,-y] -> B=[y,x])<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    magyZone = -yy     !must be appropriately replicated on later lines<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    magzZone = 0.0      !for cell-face values<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    !the following are derived from the above<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    presZone = enerZone * (sim_gamma-1.) * densZone<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    ekinZone = 0.5 * &<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">      (velxZone**2. + velyZone**2. + velzZone**2.)<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    enerZone = eintZone + ekinZone<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    !asign to cell-centered data block<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    solnData(VELX_VAR,i,j,k) = velxZone
<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    solnData(VELY_VAR,i,j,k) = velyZone<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    solnData(VELZ_VAR,i,j,k) = velzZone<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    solnData(DENS_VAR,i,j,k) = densZone<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    solnData(PRES_VAR,i,j,k) = presZone<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">!   solnData(TEMP_VAR,i,j,k) =  !required?<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    solnData(ENER_VAR,i,j,k) = enerZone<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    solnData(EINT_VAR,i,j,k) = eintZone<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    solnData(MAGX_VAR,i,j,k) = magxZone<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    solnData(MAGY_VAR,i,j,k) = magyZone<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    solnData(MAGZ_VAR,i,j,k) = magzZone<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    solnData(MAGP_VAR,i,j,k) = 0.5 * dot_product( &<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">                                  solnData(MAGX_VAR:MAGZ_VAR,i,j,k),&<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">                                  solnData(MAGX_VAR:MAGZ_VAR,i,j,k))<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    solnData(DIVB_VAR,i,j,k) = 0.0<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    solnData(GAMC_VAR,i,j,k) = sim_gamma<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    solnData(GAME_VAR,i,j,k) = sim_gamma<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    !now do cell face values if needed for USM<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">#if NFACE_VARS > 0<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    if (sim_killdivb) then<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    magxZone = xxL<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    magyZone = -yyL  !fill from left, account for rightmost later<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    magzZone = 0.0<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    facexData(MAG_FACE_VAR,i,j,k) =  magxZone<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    faceyData(MAG_FACE_VAR,i,j,k) =  magyZone<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    ! extra specification for "rightmost" cell-face if at RHS of a block<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    if (i == blkLimitsGC(HIGH,IAXIS) ) then<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    magxZone = xxR<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    facexData(MAG_FACE_VAR,i+1,j,k) =  magxZone<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    endif<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    if (j == blkLimitsGC(HIGH,JAXIS)  ) then<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    magyZone = -yyR<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    facexData(MAG_FACE_VAR,i,j+1,k) =  magyZone<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    endif<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    !re-specify cell-centred values by averaging face-values across faces.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    !this should happen after filling "extra" face cell (here rightmost)<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    !so that i+1 isn't missed out if i == imax<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    solnData(MAGX_VAR,i,j,k) = 0.5*( &<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">          facexData(MAG_FACE_VAR,i,j,k)+facexData(MAG_FACE_VAR,i+1,j,k))<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    solnData(MAGY_VAR,i,j,k) = 0.5*( &<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">          faceyData(MAG_FACE_VAR,i,j,k)+faceyData(MAG_FACE_VAR,i,j+1,k))<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    solnData(MAGP_VAR,i,j,k) = 0.5 * dot_product( &<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">                                  solnData(MAGX_VAR:MAGZ_VAR,i,j,k),&<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">                                  solnData(MAGX_VAR:MAGZ_VAR,i,j,k))<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">    endif<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">#endif<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">  <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">  enddo<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">  enddo<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">  enddo<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Question 4: <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">In my initial condition I’m setting up a spatially dependent field from an analytical prescription (a 2D null point, B=[x,-y]). I would like to use a special boundary condition whereby the boundary values are held fixed at their t=0 position.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">It seems that my way forward is that I must modify Grid_bcApplyToRegion.F90 and, specifically for the B-field (a function of space), that I must use gr-extendGetCellCoords to get the x and y position of a cell to correctly specify spatially
 dependent values. <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Is there a more simple way to realise this, or must I proceed as above? E.g., is there a way I can simply set the boundary info to be that from t=0?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">---<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thank you in advance for taking the time to have a look at this.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Regards,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Jonathan<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>