41 REAL,
PARAMETER :: tsim = 0.7
42 REAL,
PARAMETER :: gamma = 1.4
44 INTEGER,
PARAMETER :: mgeo = cylindrical
45 INTEGER,
PARAMETER :: xres = 150
46 INTEGER,
PARAMETER :: yres = 1
47 INTEGER,
PARAMETER :: zres = 100
49 INTEGER,
PARAMETER :: onum = 7
50 CHARACTER(LEN=256),
PARAMETER &
52 CHARACTER(LEN=256),
PARAMETER &
53 :: ofname =
'riemann3d' 55 CLASS(
fosite),
ALLOCATABLE :: sim
65 CALL initdata(sim%Mesh, sim%Physics, sim%Timedisc)
72 tap_check(ok,
"stoptime reached")
81 TYPE(Dict_TYP),
POINTER :: config
85 TYPE(Dict_TYP),
POINTER :: mesh, physics, boundary, datafile, logfile, &
93 mesh => dict(
"meshtype" / midpoint, &
94 "geometry" / cylindrical, &
107 physics => dict(
"problem" / euler, &
112 fluxes => dict(
"order" / linear, &
114 "variables" / conservative, &
115 "limiter" / monocent, &
121 "eastern" / reflecting, &
122 "southern" / periodic, &
123 "northern" / periodic, &
124 "bottomer" / reflecting, &
125 "topper" / reflecting)
128 timedisc => dict(
"method" / modified_euler, &
132 "dtlimit" / 1.0e-9, &
137 "fileformat" / vtk, &
138 "filename" / (trim(odir) // trim(ofname)), &
142 config => dict(
"mesh" / mesh, &
143 "physics" / physics, &
144 "boundary" / boundary, &
146 "timedisc" / timedisc, &
148 "datafile" / datafile)
152 SUBROUTINE initdata(Mesh,Physics,Timedisc)
156 CLASS(physics_base) :: Physics
157 CLASS(mesh_base) :: Mesh
158 CLASS(timedisc_base) :: Timedisc
161 REAL :: rmax,x0,y0,z0
164 INTENT(IN) :: mesh,physics
165 INTENT(INOUT) :: timedisc
178 SELECT TYPE(pvar => timedisc%pvar)
179 TYPE IS(statevector_euler)
181 pvar%density%data1d(:) = 1.0
183 pvar%velocity%data1d(:) = 0.0
185 WHERE (((mesh%bccart(:,:,:,1)-x0)**2+(mesh%bccart(:,:,:,2)-y0)**2 &
186 +(mesh%bccart(:,:,:,3)-z0)**2).LT.rmax**2)
187 pvar%pressure%data3d(:,:,:) = p_in
189 pvar%pressure%data3d(:,:,:) = p_out
192 CALL physics%Error(
"riemann3d::InitData",
"physics not supported")
195 CALL physics%Convert2Conservative(timedisc%pvar,timedisc%cvar)
197 CALL physics%Info(
" DATA-----> initial condition: Spherical pressure discontinuity between walls")
subroutine initdata(Mesh, Physics, Fluxes, Timedisc)
base class for geometrical properties
subroutine makeconfig(Sim, config)