Version 4 (modified by 13 years ago) ( diff ) | ,
---|
Wind Objects
Description
As its name implies, the Wind
object was originally created to simulate a stellar wind. However, the actual object is a little more generic. It can represent any continuous inflow condition that, by default, comes in from the left boundary of the domain. The Wind
object allows for a simple interface for setting the inflow density, velocity, temperature, and magnetization. The object (if used) must be created during the ProblemModuleInit
subroutine.
Object Attributes
INTEGER, PARAMETER :: NOWAVE = 0, SQUAREWAVE = 1, SINEWAVE = 2 TYPE WindDef INTEGER :: dir = 1 INTEGER :: edge = 1 REAL(KIND=qPREC) :: velocity = 0d0 REAL(KIND=qPREC) :: density=1d0 REAL(KIND=qPREC) :: temperature=1d0 REAL(KIND=qPREC) :: B(3) = 0d0 REAL(KIND=qPREC) :: period = 0d0 REAL(KIND=qPREC) :: amplitude = 0d0 INTEGER :: waveform = NOWAVE INTEGER :: Type = 0 INTEGER :: iTracer = 0 END TYPE WindDef
The default values for density and temperature are both 1. The velocity and magnetization vectors are 0, and there is no wind tracer. To turn on a wind tracer, the value of iTracer needs to be initialized to a valid tracer index using the AddTracer routine. The dir and edge parameters define the direction of the wind and which boundary the wind comes from. For dir: the x, y, z directions are 1, 2, 3 respectively. For edge: the lower x, lower y, lower z, upper x, upper y, upper z boundaries are 1,2,3,4,5,6 respectively. Period, amplitude, and waveform are all parameters used for a velocity perturbation. Their default is 0 (i.e. no perturbation).
How to Use this Object
Firstly, the USE Winds
statement will be required at the top of the module. Then, one just has to create the wind object and modify its default values as necessary (and potentially add a tracer field) as follows…
SUBROUTINE ProblemModuleInit() TYPE(WindDef), POINTER :: Wind CALL CreateWind(Wind) Wind%density=10 Wind%temperature=100 Wind%B(:)=(/1d0, 0d0, 0d0/) Wind%velocity=1d5 CALL AddTracer(Wind%iTracer, 'Wind Tracer') END SUBROUTINE ProblemModuleInit
This set up is your most basic constant, magnetized wind coming from the left boundary with the specified parameters. Grids then will be initialized with the correct energy etc… before being passed into the various other grid initialization routines.