Example #1
0
    def write_bc_vtk(self):
        """
         write node lists to properly formatted VTK files
        """
        print "Creating boundary condition arrays"
        # perhaps at some other time this class should be extended
        # to allow obstacles within the lid-driven cavity
#        obst_array = np.zeros(self.nnodes)
#        obst_array[list(self.obst_list)] = 100.
#
#        #print type(self.inlet_list)
#        inlet_array = np.zeros(self.nnodes)
#        inlet_array[list(self.inlet_list)] = 200.
#
#        outlet_array = np.zeros(self.nnodes)
#        outlet_array[list(self.outlet_list)] = 300.
        print "length of lid_list = %d \n"%(len(list(self.lid_list)))
        lid_array = np.zeros(int(self.nnodes))
        lid_array[list(self.lid_list)] = 700.

        solid_array = np.zeros(int(self.nnodes))
        solid_array[list(self.solid_list)] = 500.
        
        dims = [int(self.Nx), int(self.Ny), int(self.Nz)]
        origin = [0., 0., 0.]
        dx = self.x[1] - self.x[0]
        spacing = [dx, dx, dx] #uniform lattice
        
        print "Writing boundary conditions to VTK files"
        #writeVTK(inlet_array,'inlet','inlet.vtk',dims,origin,spacing)
        #writeVTK(outlet_array,'outlet','outlet.vtk',dims,origin,spacing)
        #writeVTK(obst_array,'obst','obst.vtk',dims,origin,spacing)
        writeVTK(lid_array,'lid','lid.vtk',dims,origin,spacing)
        writeVTK(solid_array,'solid','solid.vtk',dims,origin,spacing)
Example #2
0
    def write_bc_vtk(self):
        """
         write node lists to properly formatted VTK files
        """
        print("Creating boundary condition arrays")
        # perhaps at some other time this class should be extended
        # to allow obstacles within the lid-driven cavity
        #        obst_array = np.zeros(self.nnodes)
        #        obst_array[list(self.obst_list)] = 100.
        #
        #        #print type(self.inlet_list)
        #        inlet_array = np.zeros(self.nnodes)
        #        inlet_array[list(self.inlet_list)] = 200.
        #
        #        outlet_array = np.zeros(self.nnodes)
        #        outlet_array[list(self.outlet_list)] = 300.
        print("length of lid_list = %d \n" % (len(list(self.lid_list))))
        lid_array = np.zeros(int(self.nnodes))
        lid_array[list(self.lid_list)] = 700.

        solid_array = np.zeros(int(self.nnodes))
        solid_array[list(self.solid_list)] = 500.

        dims = [int(self.Nx), int(self.Ny), int(self.Nz)]
        origin = [0., 0., 0.]
        dx = self.x[1] - self.x[0]
        spacing = [dx, dx, dx]  #uniform lattice

        print("Writing boundary conditions to VTK files")
        #writeVTK(inlet_array,'inlet','inlet.vtk',dims,origin,spacing)
        #writeVTK(outlet_array,'outlet','outlet.vtk',dims,origin,spacing)
        #writeVTK(obst_array,'obst','obst.vtk',dims,origin,spacing)
        writeVTK(lid_array, 'lid', 'lid.vtk', dims, origin, spacing)
        writeVTK(solid_array, 'solid', 'solid.vtk', dims, origin, spacing)
Example #3
0
 def write_vtk(self,file_name = 'partition_pa.vtk'):
     """
       write out a vtk file to allow visualization of the partitioning
     """
     dims = [self.Nx, self.Ny, self.Nz]
     origin = [0., 0., 0.]
     spacing = [0.1, 0.1, 0.1] #<-- no need for this to correspond to actual physical spacing
     writeVTK(self.part_vert,'partitions',file_name,dims,origin,spacing)
Example #4
0
 def write_vtk(self, file_name='partition_pa.vtk'):
     """
       write out a vtk file to allow visualization of the partitioning
     """
     dims = [self.Nx, self.Ny, self.Nz]
     origin = [0., 0., 0.]
     spacing = [
         0.1, 0.1, 0.1
     ]  #<-- no need for this to correspond to actual physical spacing
     writeVTK(self.part_vert, 'partitions', file_name, dims, origin,
              spacing)
Example #5
0
    def write_bc_vtk(self):
        """
         write node lists to properly formatted VTK files
        """
        print "Creating boundary condition arrays"
        obst_array = np.zeros(self.nnodes)
        obst_array[list(self.obst_list)] = 100.

        #print type(self.inlet_list)
        inlet_array = np.zeros(self.nnodes)
        inlet_array[list(self.inlet_list)] = 200.

        outlet_array = np.zeros(self.nnodes)
        outlet_array[list(self.outlet_list)] = 300.

        solid_array = np.zeros(self.nnodes)
        solid_array[list(self.solid_list)] = 500.
        
        dims = [int(self.Nx), int(self.Ny), int(self.Nz)]
        origin = [0., 0., 0.]
        dx = self.x[1] - self.x[0]
        spacing = [dx, dx, dx] #uniform lattice
        
        print "Writing boundary conditions to VTK files"
        writeVTK(inlet_array,'inlet','inlet.vtk',dims,origin,spacing)
        writeVTK(outlet_array,'outlet','outlet.vtk',dims,origin,spacing)
        writeVTK(obst_array,'obst','obst.vtk',dims,origin,spacing)
        writeVTK(solid_array,'solid','solid.vtk',dims,origin,spacing)
Example #6
0
    def write_bc_vtk(self):
        """
         write node lists to properly formatted VTK files
        """
        print "Creating boundary condition arrays"
        obst_array = np.zeros(self.nnodes)
        obst_array[list(self.obst_list)] = 100.

        #print type(self.inlet_list)
        inlet_array = np.zeros(self.nnodes)
        inlet_array[list(self.inlet_list)] = 200.

        outlet_array = np.zeros(self.nnodes)
        outlet_array[list(self.outlet_list)] = 300.

        solid_array = np.zeros(self.nnodes)
        solid_array[list(self.solid_list)] = 500.

        dims = [int(self.Nx), int(self.Ny), int(self.Nz)]
        origin = [0., 0., 0.]
        dx = self.x[1] - self.x[0]
        spacing = [dx, dx, dx]  #uniform lattice

        print "Writing boundary conditions to VTK files"
        writeVTK(inlet_array, 'inlet', 'inlet.vtk', dims, origin, spacing)
        writeVTK(outlet_array, 'outlet', 'outlet.vtk', dims, origin, spacing)
        writeVTK(obst_array, 'obst', 'obst.vtk', dims, origin, spacing)
        writeVTK(solid_array, 'solid', 'solid.vtk', dims, origin, spacing)
Example #7
0
    def write_bc_vtk(self):
        """
         write node lists to properly formatted VTK files
        """
        print("Creating boundary condition arrays")
        obst_array = np.zeros(int(self.nnodes))
        obst_array[list(self.obst_list)] = 100.

        #print type(self.inlet_list)
        inlet_array = np.zeros(int(self.nnodes))
        inlet_array[list(self.inlet_list)] = 200.

        outlet_array = np.zeros(int(self.nnodes))
        outlet_array[list(self.outlet_list)] = 300.

        solid_array = np.zeros(int(self.nnodes))
        solid_array[list(self.solid_list)] = 500.

        dims = [int(self.Nx), int(self.Ny), int(self.Nz)]
        origin = [0., 0., 0.]
        dx = self.x[1] - self.x[0]
        spacing = [dx, dx, dx]  #uniform lattice

        print("Writing boundary conditions to VTK files")
        writeVTK(inlet_array, 'inlet', 'inlet.vtk', dims, origin, spacing)
        writeVTK(outlet_array, 'outlet', 'outlet.vtk', dims, origin, spacing)
        writeVTK(obst_array, 'obst', 'obst.vtk', dims, origin, spacing)
        writeVTK(solid_array, 'solid', 'solid.vtk', dims, origin, spacing)

        if len(self.subsetList) > 0:
            print("Writing subset lists to VTK files")

            ss_idx = 0
            for ss in self.subsetList:
                print('Writing subset %d to file' % ss_idx)
                ssNodes = ss.get_members(self.x[:], self.y[:], self.z[:])
                ss_array = np.zeros(int(self.nnodes))
                ss_array[list(ssNodes)] = ss_idx * 1000. + 1000.
                ssName = 'subSpace' + str(ss_idx)
                ssFile = ssName + '.vtk'
                writeVTK(ss_array, ssName, ssFile, dims, origin, spacing)
                ss_idx += 1
Example #8
0
    def write_bc_vtk(self):
        """
         write node lists to properly formatted VTK files
        """
        print "Creating boundary condition arrays"
        obst_array = np.zeros(int(self.nnodes))
        obst_array[list(self.obst_list)] = 100.

        #print type(self.inlet_list)
        inlet_array = np.zeros(int(self.nnodes))
        inlet_array[list(self.inlet_list)] = 200.

        outlet_array = np.zeros(int(self.nnodes))
        outlet_array[list(self.outlet_list)] = 300.

        solid_array = np.zeros(int(self.nnodes))
        solid_array[list(self.solid_list)] = 500.
        
        dims = [int(self.Nx), int(self.Ny), int(self.Nz)]
        origin = [0., 0., 0.]
        dx = self.x[1] - self.x[0]
        spacing = [dx, dx, dx] #uniform lattice
        
        print "Writing boundary conditions to VTK files"
        writeVTK(inlet_array,'inlet','inlet.vtk',dims,origin,spacing)
        writeVTK(outlet_array,'outlet','outlet.vtk',dims,origin,spacing)
        writeVTK(obst_array,'obst','obst.vtk',dims,origin,spacing)
        writeVTK(solid_array,'solid','solid.vtk',dims,origin,spacing)
        
        if len(self.subsetList) > 0:
            print "Writing subset lists to VTK files"
            
            ss_idx = 0;
            for ss in self.subsetList:
                print 'Writing subset %d to file'%ss_idx
                ssNodes = ss.get_members(self.x[:],self.y[:],self.z[:])
                ss_array = np.zeros(int(self.nnodes))
                ss_array[list(ssNodes)] = ss_idx*1000. + 1000.
                ssName = 'subSpace'+str(ss_idx)
                ssFile = ssName+'.vtk'
                writeVTK(ss_array,ssName,ssFile,dims,origin,spacing)
                ss_idx+=1
Example #9
0
# compute the number of data dumps I expect to process
nDumps = (Num_ts-Warmup_ts)/plot_freq +1 # Num_ts/plot_freq updates

for i in range(rank,nDumps,size):
    # say something comforting
    print 'processing data dump number %d of %d. '%(i+1,nDumps) # make this ones-based numbering
    # filename format
    rho_fn = 'density'+str(i)+'.b_dat'
    ux_fn = 'ux'+str(i)+'.b_dat'
    uy_fn = 'uy'+str(i)+'.b_dat'
    uz_fn = 'uz'+str(i)+'.b_dat'

    # at this point, ux, uy and uz are out of order
    ux = np.fromfile(ux_fn,dtype=np.float32).astype(np.float64)
    uy = np.fromfile(uy_fn,dtype=np.float32).astype(np.float64)
    uz = np.fromfile(uz_fn,dtype=np.float32).astype(np.float64)
    pressure = np.fromfile(rho_fn,dtype=np.float32).astype(np.float64)

   
    # convert velocity to physical units
    ux /= u_conv_fact
    uy /= u_conv_fact
    uz /= u_conv_fact
    pressure /= p_conv_fact # please check this...
    outfilename = 'velocityAndPressure'+str(i)+'.vtk'
    dims = (Nx,Ny,Nz)
    writeVTK(pressure,ux,uy,uz,XX,YY,ZZ,outfilename,dims)


Example #10
0
ZZ = np.reshape(Z,numEl)


# load the turbineChannel data from *.b_dat files
rho_fn = 'density'+str(dump_num)+'.b_dat'
ux_fn = 'ux'+str(dump_num)+'.b_dat'
uy_fn = 'uy'+str(dump_num)+'.b_dat'
uz_fn = 'uz'+str(dump_num)+'.b_dat'
ux = np.fromfile(ux_fn,dtype=np.float32)
uy = np.fromfile(uy_fn,dtype=np.float32)
uz = np.fromfile(uz_fn,dtype=np.float32)
pressure = np.fromfile(rho_fn,dtype=np.float32)
    
# convert velocity to physical units
ux *= u_conv_fact
uy *= u_conv_fact
uz *= u_conv_fact
pressure *= p_conv_fact

# compute differences
ux_d = ux - ux_m
uy_d = uy - uy_m
uz_d = uz - uz_m
pressure_d = pressure - pressure_m

# write the results to a vtk file
outfilename = 'velocityAndPressureDifferences.vtk'
dims = (Nx,Ny,Nz)
writeVTK(pressure_d,ux_d,uy_d,uz_d,XX,YY,ZZ,outfilename,dims)

# pray that things work better next time.
Example #11
0
YY = np.reshape(Y, numEl)
ZZ = np.reshape(Z, numEl)

# load the turbineChannel data from *.b_dat files
rho_fn = 'density' + str(dump_num) + '.b_dat'
ux_fn = 'ux' + str(dump_num) + '.b_dat'
uy_fn = 'uy' + str(dump_num) + '.b_dat'
uz_fn = 'uz' + str(dump_num) + '.b_dat'
ux = np.fromfile(ux_fn, dtype=np.float32)
uy = np.fromfile(uy_fn, dtype=np.float32)
uz = np.fromfile(uz_fn, dtype=np.float32)
pressure = np.fromfile(rho_fn, dtype=np.float32)

# convert velocity to physical units
ux *= u_conv_fact
uy *= u_conv_fact
uz *= u_conv_fact
pressure *= p_conv_fact

# compute differences
ux_d = ux - ux_m
uy_d = uy - uy_m
uz_d = uz - uz_m
pressure_d = pressure - pressure_m

# write the results to a vtk file
outfilename = 'velocityAndPressureDifferences.vtk'
dims = (Nx, Ny, Nz)
writeVTK(pressure_d, ux_d, uy_d, uz_d, XX, YY, ZZ, outfilename, dims)

# pray that things work better next time.
# compute the number of data dumps I expect to process
nDumps = (Num_ts - Warmup_ts
          ) / plot_freq + 1  # initial data plus Num_ts/plot_freq updates

# load obst_file.lbm to get the obstacle.  Should also zero out the velocity of
# the walls.

for i in range(rank, nDumps, size):
    # say something comforting
    print 'processing data dump number %d of %d. ' % (
        i + 1, nDumps)  # make this ones-based numbering
    # filename format
    rho_fn = 'density' + str(i) + '.b_dat'
    ux_fn = 'ux' + str(i) + '.b_dat'
    uy_fn = 'uy' + str(i) + '.b_dat'
    uz_fn = 'uz' + str(i) + '.b_dat'
    ux = np.fromfile(ux_fn, dtype=np.float32).astype(np.float64)
    uy = np.fromfile(uy_fn, dtype=np.float32).astype(np.float64)
    uz = np.fromfile(uz_fn, dtype=np.float32).astype(np.float64)
    pressure = np.fromfile(rho_fn, dtype=np.float32).astype(np.float64)

    # convert velocity to physical units
    ux /= u_conv_fact
    uy /= u_conv_fact
    uz /= u_conv_fact
    pressure /= p_conv_fact  # please check this...
    outfilename = 'velocityAndPressure' + str(i) + '.vtk'
    dims = (Nx, Ny, Nz)
    writeVTK(pressure, ux, uy, uz, XX, YY, ZZ, outfilename, dims)
Example #13
0
print 'total nodes = %d ' % nnodes

dims = [Nx,Ny,Nz]
origin = [0,0,0]
dx = x[1]-x[0]; dy = dx; dz = dx;
spacing = [dx,dy,dz]


print 'preparing output for vtk'
obst_array = np.ones(len(x)); 
#for i in obst_list:
#  obst_array[i] = 100.0
#obst_array[obst_list]= 100.0

print 'writing to vtk file'
writeVTK(obst_array,'obstacle','obst.vtk',dims,origin,spacing);

inlet_list = np.where(z==0)
inlet_array = np.ones(len(x))
#inlet_array[inlet_list] = 200.0
#writeVTK(inlet_array,'inlet','inlet.vtk',dims,origin,spacing)


outlet_list = np.where(z==Lz_p)
outlet_array = np.ones(len(x))
#outlet_array[outlet_list] = 300.0
#writeVTK(outlet_array,'outlet','outlet.vtk',dims,origin,spacing)


# make the solid nodes on the x == 0, x == Lx_p, y == 0, and y == Ly_p boundaries
# God help us; this appears to be the best way
Example #14
0
  

##################################################################


#uncomment when ready for performance testing
#print (time.time() - start_time)

# write to disk a partition map giving the global point number in order for all partitions
filename = 'partMap.b_dat'
amode = MPI.MODE_WRONLY | MPI.MODE_CREATE #<- bit mask for file mode
fh = MPI.File.Open(comm,filename,amode)
offset = intOffset*np.dtype(np.int32).itemsize
fh.Write_at_all(offset,myPart)
fh.Close()

comm.Barrier() # make sure everyone is done
# rank 0 load this file and print to screen
if rank==0:
  partMap = np.fromfile(filename,dtype='int32')
  for i in range(gen):
    vtkname = "state_" + str(i) + ".vtk"
    dataName = "data_" + str(i) + ".b_dat"
    data_i = np.fromfile(dataName,dtype='int32')
    data = np.zeros_like(data_i)
    data[partMap] = data_i
    dims = [Nx, Nx,1]
    origin = [0,0,0]
    spacing = [1,1,1]
    writeVTK(data,'state',vtkname,dims,origin,spacing)
Example #15
0
#u_conv_fact = l_conv_fact/t_conv_fact;
u_conv_fact = t_conv_fact / l_conv_fact
if (rank == 0):
    print("u_conv_fact = %15.15f \n" % u_conv_fact)
nnodes = Nx * Ny * Nz

# compute geometric data only once
x = np.linspace(0., Lx_p, Nx).astype(np.float64)
y = np.linspace(0., Ly_p, Ny).astype(np.float64)
z = np.linspace(0., Lz_p, Nz).astype(np.float64)
numEl = Nx * Ny * Nz
Y, Z, X = np.meshgrid(y, z, x)

XX = np.reshape(X, numEl)
YY = np.reshape(Y, numEl)
ZZ = np.reshape(Z, numEl)

if rank == 0:
    dat_name = 'snl'
elif rank == 1:
    dat_name = 'inl'
elif rank == 2:
    dat_name = 'onl'

in_fn = dat_name + '.b_dat'
out_fn = dat_name + '.vtk'
my_dat = np.fromfile(in_fn, dtype=np.int32)

dims = (Nx, Ny, Nz)
writeVTK(my_dat, dat_name, XX, YY, ZZ, out_fn, dims)
Example #16
0
if(rank == 0):
   print("u_conv_fact = %15.15f \n"%u_conv_fact)
nnodes = Nx*Ny*Nz

# compute geometric data only once
x = np.linspace(0.,Lx_p,Nx).astype(np.float64);
y = np.linspace(0.,Ly_p,Ny).astype(np.float64);
z = np.linspace(0.,Lz_p,Nz).astype(np.float64);
numEl = Nx*Ny*Nz
Y,Z,X = np.meshgrid(y,z,x);

XX = np.reshape(X,numEl)
YY = np.reshape(Y,numEl)
ZZ = np.reshape(Z,numEl)

if rank==0:
  dat_name = 'snl';
elif rank==1:
  dat_name = 'inl';
elif rank==2:
  dat_name = 'onl';

in_fn = dat_name + '.b_dat'
out_fn = dat_name + '.vtk'
my_dat = np.fromfile(in_fn,dtype=np.int32)

dims = (Nx,Ny,Nz)
writeVTK(my_dat,dat_name,XX,YY,ZZ,out_fn,dims)