70 INTEGER :: momentum1, momentum2
98 TYPE(
dict_typ),
POINTER :: config, IO
102 CALL getattr(config,
"stype",stype)
111 CALL this%Error(
"InitSources_shearbox",
"physics not supported")
114 SELECT TYPE(geo=>mesh%Geometry)
118 CALL this%Error(
"InitSources_shearbox",
"mesh not supported")
123 this%accel%data1d(:) = 0.
125 IF(mesh%shear_dir.EQ.2)
THEN
126 this%Vel1=physics%YVELOCITY
127 this%Vel2=physics%XVELOCITY
132 this%MOMENTUM1 = physics%XMOMENTUM
133 this%MOMENTUM2 = physics%YMOMENTUM
134 ELSE IF(mesh%shear_dir.EQ.1)
THEN
135 this%Vel1=physics%XVELOCITY
136 this%Vel2=physics%YVELOCITY
141 this%MOMENTUM1 = physics%YMOMENTUM
142 this%MOMENTUM2 = physics%XMOMENTUM
147 IF (mesh%KNUM.GT.1)
THEN
148 this%accel%data2d(:,3) = -mesh%OMEGA**2 * mesh%cart%data3d(:,2,3)
152 CALL this%InfoSources(mesh)
162 CHARACTER(LEN=32) :: omega_str,q_str
164 WRITE (omega_str,
'(ES10.2)') mesh%OMEGA
165 WRITE (q_str,
'(ES10.2)') mesh%Q
166 CALL this%Info(
" angular velocity: " // trim(omega_str))
167 CALL this%Info(
" shearing parameter:" // trim(q_str))
186 REAL,
INTENT(IN) :: time, dt
189 SELECT CASE(mesh%fargo%GetType())
193 this%accel%data4d(:,:,:,this%I1) = 2*mesh%OMEGA &
194 * (mesh%Q*mesh%OMEGA*mesh%bcenter(:,:,:,this%I1) &
195 + this%SIGN1*pvar%data4d(:,:,:,this%VEL1))
196 this%accel%data4d(:,:,:,this%I2) = 2*mesh%OMEGA*this%SIGN2 &
197 * pvar%data4d(:,:,:,this%VEL2)
199 CALL physics%ExternalSources(this%accel,pvar,cvar,sterm)
202 sterm%data2d(:,physics%DENSITY) = 0.0
204 sterm%data2d(:,this%MOMENTUM1) = pvar%data2d(:,physics%DENSITY) &
205 *mesh%OMEGA*2.0*this%SIGN1*pvar%data2d(:,this%VEL1)
206 sterm%data2d(:,this%MOMENTUM2) = pvar%data2d(:,physics%DENSITY) &
207 *mesh%OMEGA*(2.0-mesh%Q)*this%SIGN2*pvar%data2d(:,this%VEL2)
208 IF (mesh%KNUM.GT.1) &
209 sterm%data2d(:,physics%ZMOMENTUM) = pvar%data2d(:,physics%DENSITY) &
210 *this%accel%data2d(:,3)
211 IF (physics%PRESSURE .GT. 0)
THEN
212 sterm%data2d(:,physics%ENERGY) = &
213 this%SIGN1*pvar%data2d(:,physics%DENSITY)*mesh%Q*mesh%OMEGA* &
214 pvar%data2d(:,this%VEL2)*pvar%data2d(:,this%VEL1)
215 IF (mesh%KNUM.GT.1) &
216 sterm%data2d(:,physics%ENERGY) = sterm%data2d(:,physics%ENERGY) &
217 + cvar%data2d(:,physics%ZMOMENTUM)*this%accel%data2d(:,3)
221 CALL this%Error(
"sources_shearbox::ExternalSources_single", &
222 "currently only Fargo transport type 3 is supported")
Dictionary for generic data types.
base module for numerical flux functions
defines properties of a 3D cartesian mesh
base class for mesh arrays
derived class for compound of mesh arrays
physics module for 1D,2D and 3D non-isothermal Euler equations
physics module for 1D,2D and 3D isothermal Euler equations
generic source terms module providing functionaly common to all source terms
source terms module for constant acceleration
character(len=32), parameter source_name
subroutine externalsources(this, Mesh, Physics, Fluxes, Sources, time, dt, pvar, cvar, sterm)
subroutine initsources(this, Mesh, Physics, Fluxes, config, IO)
Source terms module for fictious forces in a shearingsheet.
subroutine infosources(this, Mesh)
Write shearbox fictious forces parameters to screen.