78  REAL, 
PARAMETER    :: gn         = 1.0            
 
   81  INTEGER, 
PARAMETER :: shearsheet_direction = 1
 
   83  REAL, 
PARAMETER    :: 
omega      = 1.0            
 
   84  REAL, 
PARAMETER    :: sigma0     = 1.0            
 
   85  REAL, 
PARAMETER    :: delsigma   = sigma0*5.0e-4  
 
   86  REAL, 
PARAMETER    :: tsim       = 4.54845485/
omega  
   87  REAL, 
PARAMETER    :: gamma      = 2.0            
 
   88  REAL, 
PARAMETER    :: q          = 1.5            
 
   93  REAL, 
PARAMETER    :: soundspeed = pi*gn*sigma0/
omega 
   95  INTEGER, 
PARAMETER :: mgeo       = cartesian
 
   96  INTEGER, 
PARAMETER :: xres       = 128            
 
   97  INTEGER, 
PARAMETER :: yres       = 128            
 
   98  INTEGER, 
PARAMETER :: zres       = 1
 
   99  REAL, 
PARAMETER :: thickness     = 0e-5           
 
  101  REAL               :: domainx    = 40.0           
 
  102  REAL               :: domainy    = 40.0           
 
  104  INTEGER, 
PARAMETER :: onum       = 10
 
  106  CHARACTER(LEN=256), 
PARAMETER :: odir   = 
"./" 
  107  CHARACTER(LEN=256), 
PARAMETER :: ofname = 
"sblintheo" 
  109  CLASS(
fosite), 
ALLOCATABLE :: sim
 
  117  CALL sim%InitFosite()
 
  120  CALL initdata(sim%Mesh, sim%Physics, sim%Timedisc%pvar, sim%Timedisc%cvar)
 
  124  IF (sim%Mesh%dz.GT.0.0) 
THEN 
  125    maximum = maxval(sim%Timedisc%pvar%data4d(:,:,:,sim%Physics%DENSITY))*sim%Mesh%dz - sigma0
 
  127    maximum = maxval(sim%Timedisc%pvar%data4d(:,:,:,sim%Physics%DENSITY)) - sigma0
 
  133  tap_check_close(maximum, 0.02395931, 0.0003, 
"First max. < 3e-4 deviation")
 
  143    TYPE(dict_typ), 
POINTER :: config
 
  145    TYPE(dict_typ), 
POINTER :: mesh,physics,fluxes,&
 
  146                               grav,sources,timedisc,datafile
 
  147    REAL                    :: XMIN,XMAX,YMIN,YMAX,ZMIN,ZMAX
 
  155    zmin       = -0.5*thickness*domainx
 
  156    zmax       = +0.5*thickness*domainx
 
  160                "problem"     / euler_isotherm, &
 
  162                "units"       / geometrical &
 
  167                "meshtype"    / midpoint, &
 
  169                "shearingbox" / shearsheet_direction, &
 
  180                "decomposition"/ (/ 1, -1, 1/), &
 
  181                "output/rotation" / 0, &
 
  182                "output/volume"   / 0, &
 
  192                "variables"   / primitive, &
 
  193                "limiter"     / vanleer &
 
  199                "self/gtype"          / sboxspectral, &
 
  200                "self/output/accel"     / 1, &
 
  201                "self/output/potential" / 1 &
 
  211              "method"        / dormand_prince, &
 
  214              "dtlimit"       / 1.0e-40, &
 
  216              "maxiter"       / 100000000)
 
  220              "fileformat"    / vtk, &
 
  221              "filename"      / (trim(odir) // trim(ofname)), &
 
  227                  "physics"     / physics, &
 
  229                  "sources"     / sources, &
 
  230                  "timedisc"    / timedisc, &
 
  231                  "datafile"    / datafile &
 
  240    CLASS(mesh_base),    
INTENT(IN) :: Mesh
 
  241    CLASS(physics_base), 
INTENT(IN) :: Physics
 
  242    CLASS(marray_compound), 
POINTER, 
INTENT(INOUT) :: pvar,cvar
 
  249    kx = -2*(2*pi/domainx)
 
  253    SELECT TYPE(p => pvar)
 
  254    TYPE IS(statevector_eulerisotherm)
 
  255      IF(mesh%shear_dir.EQ.2)
THEN 
  256        p%density%data3d(:,:,:) = sigma0 &
 
  257          + delsigma*cos(kx*mesh%bcenter(:,:,:,1) + ky*mesh%bcenter(:,:,:,2))
 
  258        p%velocity%data2d(:,1) = 0.0
 
  259        p%velocity%data4d(:,:,:,2) = -q*
omega*mesh%bcenter(:,:,:,1)
 
  260      ELSE IF(mesh%shear_dir.EQ.1)
THEN 
  261        p%density%data3d(:,:,:) = sigma0 &
 
  262          + delsigma*cos(kx*mesh%bcenter(:,:,:,2) - ky*mesh%bcenter(:,:,:,1))
 
  263        p%velocity%data4d(:,:,:,1) = q*
omega*mesh%bcenter(:,:,:,2)
 
  264        p%velocity%data2d(:,2) = 0.0
 
  268      IF (mesh%dz.GT.0.0) p%density%data1d(:) = p%density%data1d(:) / mesh%dz
 
  269    TYPE IS(statevector_euler) 
 
  270      IF(mesh%shear_dir.EQ.2)
THEN 
  271        p%density%data3d(:,:,:) = sigma0 &
 
  272          + delsigma*cos(kx*mesh%bcenter(:,:,:,1) + ky*mesh%bcenter(:,:,:,2))
 
  273        p%velocity%data2d(:,1) = 0.0
 
  274        p%velocity%data4d(:,:,:,2) = -q*
omega*mesh%bcenter(:,:,:,1)
 
  275      ELSE IF(mesh%shear_dir.EQ.1)
THEN 
  276        p%density%data3d(:,:,:) = sigma0 &
 
  277          + delsigma*cos(kx*mesh%bcenter(:,:,:,2) - ky*mesh%bcenter(:,:,:,1))
 
  278        p%velocity%data4d(:,:,:,1) = q*
omega*mesh%bcenter(:,:,:,2)
 
  279        p%velocity%data2d(:,2) = 0.0
 
  281      p%pressure%data3d(:,:,:) = soundspeed**2 * sigma0 / gamma
 
  284      IF (mesh%dz.GT.0.0) 
THEN 
  285        p%density%data1d(:) = p%density%data1d(:) / mesh%dz
 
  286        p%pressure%data1d(:) = p%pressure%data1d(:) / mesh%dz
 
  289      CALL physics%Error(
"sblintheo::InitData",
"only (non-)isothermal HD supported")
 
  292    CALL physics%Convert2Conservative(pvar,cvar)
 
  296    CALL mesh%Info(
" DATA-----> initial condition: " // &
 
  297         "Linear Theory Test - Shearingsheet")
 
subroutine initdata(Mesh, Physics, Fluxes, Timedisc)
 
subroutine makeconfig(Sim, config)
 
pure real function, dimension(size(ephir%data2d, dim=1)) omega(ephir, velocity)