[FLASH-USERS] Non-constant Magnetic Resistivity

Aaron Tran aaron.tran at columbia.edu
Thu Aug 20 14:00:20 EDT 2020


Hi Ryan,

In the file MagneticResistivity_interface.F90, does updating
MagneticResistivity_fullState(...) to also accept your xx, yy arguments
have any effect?

Or, would it be appropriate to /not/ pass xx, yy to this particular call to
MagneticResistivity(...) ?  I haven't used the MagneticResistivity unit
before, so don't know what the right solution is.

call MagneticResistivity(xCenter(i),yCenter(j),U(:,i,j,k), magResist(i,j,k))

sends in U(:,i,j,k), an array of NUNK_VARS reals, but the interface code
you copied seems to expect temp, dens, and xn (real, real, array of reals).
The interface also includes "MagneticResistivity_fullState", which does
take solnVec(NUNK_VARS), so it looks like MagneticResistivity(...) is a
polymorphic function.

Best,
Aaron

On Thu, Aug 20, 2020 at 10:26 AM Ryan Farber <rjfarber at umich.edu> wrote:

> Hi FLASH-users,
>
> I expect there is an embarrassingly simple solution to my problem but
> since I'm at my wit's end:
>
> I successfully modified the following files to make the magnetic
> resistivity eta = eta(x) for a test problem. However, when I do eta =
> eta(x,y), compilation fails with the following error in
> hy_uhd_getFaceFlux.F90
>
> Files modified:
>   MagneticResistivity_interface.F90
>   MagneticResistivity.F90
>   Diffuse_computeDt.F90
>   hy_uhd_unsplitUpdate.F90
>   hy_uhd_getFaceFlux.F90
>
> Error message:
>
> hy_uhd_getFaceFlux.F90(333): error #6285: There is no matching specific
> subroutine for this generic subroutine call.   [MAGNETICRESISTIVITY]
>
>                  call
> MagneticResistivity(xCenter(i),yCenter(j),U(:,i,j,k), &
>
> ----------------------^
>
> compilation aborted for hy_uhd_getFaceFlux.F90 (code 1)
>
> make: *** [hy_uhd_getFaceFlux.o] Error 1
>
> make: *** Waiting for unfinished jobs....
>
>
> Excerpt from getFaceFlux:
>
> #if defined(FLASH_USM_MHD)
>
>   if (hy_useMagneticResistivity) then
>
>     !! Get magnetic viscosity
>
>     *call* MagneticResistivity(xCenter(i),yCenter(j),U(:,i,j,k), &
>
>                                           magResist(i,j,k))
>
>   endif
>
> #endif
>
>
> Excerpt from MagneticResistivity_interface:
>
>   interface MagneticResistivity
>
>
>      subroutine MagneticResistivity(xx,yy,temp,dens,xn,magResist)
>
>        real, intent(IN) :: xx,yy
>
>        real, intent(IN)  :: temp, dens
>
>        real, intent(IN), dimension(NSPECIES)  :: xn
>
>        real, intent(OUT) :: magResist
>
>      end subroutine MagneticResistivity
>
> I'm flummoxed since all I did was add "yCenter(j)" to the call of
> MagneticResistivity (and accordingly modified its arguments in the
> subroutine and in the interface).
>
> If you can point out what silly thing I'm missing, that would be great!
>
> Best,
> --------
> Ryan Farber
> University of Michigan
> PhD Candidate
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://flash.rochester.edu/pipermail/flash-users/attachments/20200820/ad3839bb/attachment.htm>


More information about the flash-users mailing list