def readwindturbinedata(exptitle,expnr,tdev=3600,username='******'): namopt = rno.readnamoptions(exptitle,expnr,username=username) ntur = namopt['ntur'] expsdir = '/home/%s/Les/Experiments' % (username) expdir = expsdir + '/%s/%s' %(exptitle,expnr) windturbinedata = np.loadtxt(expdir + '/windturbinedata.%s' % (expnr),skiprows=1) m = np.shape(windturbinedata)[0] n = np.shape(windturbinedata)[1] turdata = np.zeros((ntur,m/ntur,n)) for i in range(0,ntur): turdata[i,:,:] = windturbinedata[i::ntur,:] #select data of single turbine k=0 while turdata[0,k,1]<tdev: k+=1 time = turdata[:,k:,1] yawangle = turdata[:,k:,2] windangle = turdata[:,k:,3] yawerror = turdata[:,k:,2] Pext = turdata[:,k:,5] Puse = turdata[:,k:,6] return {'time':time,'yawangle':yawangle,'windangle':windangle,'yawerror':yawerror, 'Pext':Pext, 'Puse': Puse}
Rv = 461.5 p0 = 1.e5 Lv = 2.5008e6 username = '******' exptitle = 'Hornsrev_wakeclouds' expnr = '306' prop = 'ql' datadir = '/nfs/livedata/pim/fielddumpdata/%s/%s' % (exptitle,expnr) trange=[199,299] readnamopt = True if readnamopt: namopt = rno.readnamoptions(exptitle,expnr,username) dy = namopt['dy'] dx = namopt['dx'] dz = namopt['dz'] xsize = namopt['xsize'] ysize = namopt['ysize'] zsize = namopt['zsize'] turhx = namopt['turhx'] turhy = namopt['turhy'] turhz = namopt['turhz'] if prop == 'RELH': pres = readprop(exptitle,expnr,'presh')['presh'][-1,:] exnr = ((pres/p0)**(Rd/cp)) filename = '%s_%s_thl_%s_%s.nc' % (exptitle, expnr, trange[0],trange[1])
#plot_title = 'Single-turbine-stability' # Required for LATEX handling when e.g. underscores are present in exptitle plot_title = 'PVD-WINDFARM' # Required for LATEX handling when e.g. underscores are present in exptitle expnr = ['430']#,'002', '003'] optylabel = '' tdev = 3600 yaw = False power = True plotall = True plotmean = True show = True save = False legend = True namopt = rno.readnamoptions(exptitle,expnr[0],username=username) ntur = namopt['ntur'] turr = namopt['turr'][0] tura = namopt['tura'] nsubfigures = 1 a4height = 11.7 a4width = 8.27 margin = 1.7 figwidth = (a4width-2*margin)/float(nsubfigures) figheight = 0.5*figwidth def readwindturbinedata(exptitle,expnr,tdev=3600,username='******'): namopt = rno.readnamoptions(exptitle,expnr,username=username) ntur = namopt['ntur']
mirocha = False kasler = False if aitken: exptitle = 'Single_turbine_Aitken_stable' expnr = '101' ext = '_4_6' elif mirocha: exptitle = 'Single_turbine_Mirocha_wcbl' expnr = '210' ext = '_14_179' elif kasler: exptitle = 'Single_turbine_GABLS' expnr = '140' ext = '_9_179' namopt = rno.readnamoptions(exptitle,expnr,'pim', parallel = False) dy = namopt['dy'] dx = namopt['dx'] dz = namopt['dz'] xsize = namopt['xsize'] ysize = namopt['ysize'] zsize = namopt['zsize'] turhx = namopt['turhx'] turhy = namopt['turhy'] turhz = namopt['turhz'] turD = 2*namopt['turr'] xt = 0.5*dx + dx*np.arange(0,xsize/dx) yt = 0.5*dy + dy*np.arange(0,ysize/dy) #zt = 0.5*dz + dz*np.arange(0,zsize/dz) dataxy = np.load('/nfs/livedata/pim/binary_fd_data/wakeanalysis/' + exptitle + '/' + expnr + '/' + exptitle + '_' + expnr + '_vhoravg_xy' + ext + '.npy')/1000.
expnr = '320' if gabls: exptitle = 'Single_turbine_GABLS' if eurocs: exptitle = 'Single_turbine_EUROCS' if cbl: exptitle = 'Single_turbine_CBL' dpi = 250 fps = 8 bitrate = -1 # read namoptions namopt = rno.readnamoptions(exptitle,expnr) runtime = namopt['runtime'] kmax = namopt['kmax'] itot = namopt['itot'] jtot = namopt['jtot'] turhx = namopt['turhx'] turhy = namopt['turhy'] turhz = namopt['turhz'] turr = namopt['turr'] xsize = namopt['xsize'] ysize = namopt['ysize'] zsize = namopt['zsize'] dx = namopt['dx'] dy = namopt['dy'] dz = namopt['dz'] dtav = namopt['dtav']
def readfull(exptitle,casetitle, expnr,prop,t_start_in,t_end_in,livedata=False,username='******',save=False,timeav=False,fielddumpdir=True, netcdf = False, dtav = 60,zslice=False,zsum = False): expsdir = '/home/%s/Les/Experiments' % (username) expdir = expsdir + '/%s/%s' %(exptitle,expnr) fddatadir = expdir namopt = rno.readnamoptions(exptitle,expnr) itot = namopt['itot'] jtot = namopt['jtot'] kmax = namopt['kmax'] dx = namopt['dx'] dy = namopt['dy'] dz = namopt['dz'] turhz = namopt['turhz'] nx = 0 procx = True print fddatadir while True: procx = os.path.exists(fddatadir + '/fielddump.%s.000.%s.nc' % (str(nx).rjust(3,'0'),expnr)) if procx == False: break else: nx = nx +1 ny = 0 procy = True while True: procy = os.path.exists(fddatadir + '/fielddump.000.%s.%s.nc' % (str(ny).rjust(3,'0'),expnr)) if procy == False: break else: ny = ny +1 imax = itot/nx jmax = jtot/ny tsteps = t_end_in-t_start_in print 'nprocx = ', nx, ' and nprocy = ', ny if prop == 'uw': #u_in = np.zeros((tsteps,kmax,jtot,itot)) #w_in = np.zeros((tsteps,kmax,jtot,itot)) uw = np.zeros((tsteps,kmax,jtot,itot)) pmean = np.zeros((kmax,jtot,itot)) print 'Start extraction of property array' for i in range(0,nx): ii = str(i).rjust(3,'0') for j in range(0,ny): jj = str(j).rjust(3,'0') f = pu.netcdf_file(fddatadir + '/fielddump.%s.%s.%s.nc' % (ii,jj,expnr)) print 'Finished reading from fielddump.%s.%s.%s.nc' % (ii,jj,expnr) #u_in[:,:,(j*jmax):((j+1)*jmax),(i*imax):((i+1)*imax)] = f.variables['ustar0'][t_start_in:t_end_in,:,:,:] #w_in[:,:,(j*jmax):((j+1)*jmax),(i*imax):((i+1)*imax)] = f.variables['w'][t_start_in:t_end_in,:,:,:] u_in = f.variables['ustar0'][t_start_in:t_end_in,:,:,:] w_in = f.variables['w'][t_start_in:t_end_in,:,:,:] #u_mean = np.mean(u_in,axis=0) #w_mean = np.mean(w_in,axis=0) for k in range(0,tsteps): #uw[k,:,:,:] = np.multiply(u_in[k,:,:,:]-u_mean[:,:,:],w_in[k,:,:,:]-w_mean[:,:,:]) #uw[k,:,(j*jmax):((j+1)*jmax),(i*imax):((i+1)*imax)] = np.multiply(u_in[k,:,:,:]-u_mean[:,:,:],w_in[k,:,:,:]-w_mean[:,:,:]) uw[k,:,(j*jmax):((j+1)*jmax),(i*imax):((i+1)*imax)] = np.multiply(u_in[k,:,:,:],w_in[k,:,:,:]) print 'Calculating time average' pmean[:,(j*jmax):((j+1)*jmax),(i*imax):((i+1)*imax)] = np.mean(uw[:,:,(j*jmax):((j+1)*jmax),(i*imax):((i+1)*imax)],axis=0) print 'Finished writing for myidx, myidy = ', ii, jj else: if timeav: p = np.zeros((tsteps,kmax,jtot,itot)) pmean = np.zeros((kmax,jtot,itot)) print 'Start extraction of property array' for i in range(0,nx): ii = str(i).rjust(3,'0') for j in range(0,ny): jj = str(j).rjust(3,'0') f = pu.netcdf_file(fddatadir + '/fielddump.%s.%s.%s.nc' % (ii,jj,expnr)) print 'Finished reading from fielddump.%s.%s.%s.nc' % (ii,jj,expnr) p[:,:,(j*jmax):((j+1)*jmax),(i*imax):((i+1)*imax)] = f.variables[prop][t_start_in:t_end_in,:,:,:] print 'Calculating time average' pmean[:,(j*jmax):((j+1)*jmax),(i*imax):((i+1)*imax)] = np.mean(p[:,:,(j*jmax):((j+1)*jmax),(i*imax):((i+1)*imax)],axis=0) print 'Finished writing for myidx, myidy = ', ii, jj else: p = np.zeros((tsteps,kmax,jtot,itot)) print 'Start extraction of property array' for i in range(0,nx): ii = str(i).rjust(3,'0') for j in range(0,ny): jj = str(j).rjust(3,'0') f = pu.netcdf_file(fddatadir + '/fielddump.%s.%s.%s.nc' % (ii,jj,expnr)) print 'Finished reading from fielddump.%s.%s.%s.nc' % (ii,jj,expnr) p[:,:,(j*jmax):((j+1)*jmax),(i*imax):((i+1)*imax)] = f.variables[prop][t_start_in:t_end_in,:,:,:] print 'Finished writing for myidx, myidy = ', ii, jj if zslice: turhzgr = int(round(turhz[0]/dz)) pzhub = p[:,turhzgr,:,:] if zsum: pzsum = np.sum(p,axis=1) if save: if not netcdf: datadir = '/nfs/livedata/pim/binary_fd_data/%s/%s' % (exptitle,expnr) if not os.path.isdir(datadir): os.makedirs(datadir) filename = '%s_%s_%s_%s_%s' % (exptitle,expnr, prop, t_start_in, t_end_in) if timeav: filename += '_timeav' datapath = datadir + '/%s' % filename np.save(datapath,pmean) else: datapath = datadir + '/%s' % filename np.save(datapath,p) else: print 'max(p) =', np.amax(p) fin = pu.netcdf_file(fddatadir + '/fielddump.000.000.%s.nc' % (expnr)) timein = np.arange(dtav,(1+np.shape(p)[0])*dtav,dtav) print 'timein = ', timein xtin = np.arange(0,np.shape(p)[3])*dx+0.5*dx #xt ytin = np.arange(0,np.shape(p)[2])*dy+0.5*dy #yt ztin = np.arange(0,np.shape(p)[1])*dz+0.5*dz #zt datadir = '/nfs/livedata/pim/fielddumpdata/%s/%s' % (exptitle,expnr) if not os.path.isdir(datadir): os.makedirs(datadir) filename = '%s_%s_%s_%s_%s' % (exptitle,expnr, prop, t_start_in, t_end_in) if timeav: filename += '_timeav' filename += '.nc' datapath = datadir + '/%s' % filename f = pu.netcdf_file(datapath, 'w') if not timeav: f.createDimension('time', np.shape(p)[0]) time = f.createVariable('time', 'f', ('time',)) time[:] = timein[:] time.units = 'seconds since 2010-11-9 00:00:00 +0.00' f.createDimension('xt', itot) xt = f.createVariable('xt', 'f', ('xt',)) xt[:] = xtin[:] xt.units = 'meter' f.createDimension('yt', jtot) yt = f.createVariable('yt', 'f', ('yt',)) yt[:] = ytin[:] yt.units = 'meter' if zslice: dataout = f.createVariable(prop, 'f', ('time', 'yt', 'xt')) dataout[:,:,:] = pzhub[:,:,:] elif zsum: dataout = f.createVariable(prop, 'f', ('time', 'yt', 'xt')) dataout[:,:,:] = pzsum[:,:,:] else: f.createDimension('zt', kmax) zt = f.createVariable('zt', 'f', ('zt',)) zt[:] = ztin[:] zt.units = 'meter' dataout = f.createVariable(prop, 'f', ('time', 'zt', 'yt', 'xt')) dataout[:,:,:,:] = p[:,:,:,:] f.close()
def readprop(exptitle, expnr,prop,xa,ya,plane,t_start_in,t_end_in,username='******',livedata=False): expsdir = '/home/%s/Les/Experiments' % (username) expdir = expsdir + '/%s/%s' %(exptitle,expnr) if livedata: fddatadir = '/nfs/livedata/%s/fielddumpdata/%s/%s' % (username,exptitle,expnr) else: fddatadir = expdir namopt = rno.readnamoptions(exptitle,expnr) itot = namopt['itot'] jtot = namopt['jtot'] kmax = namopt['kmax'] nx = 0 procx = True while True: procx = os.path.exists(fddatadir + '/fielddump.%s.000.%s.nc' % (str(nx).rjust(3,'0'),expnr)) if procx == False: break else: nx = nx +1 ny = 0 procy = True while True: procy = os.path.exists(fddatadir + '/fielddump.000.%s.%s.nc' % (str(ny).rjust(3,'0'),expnr)) if procy == False: break else: ny = ny +1 print 'nprocx = ', nx, ' and nprocy = ', ny imax = itot/nx jmax = jtot/ny tsteps = t_end_in-t_start_in ysize = namopt['ysize'] dy = ysize/float(jtot) plane_in = int(round(plane/dy)) if xa == 'x' and ya == 'z': j = int(math.floor(plane_in/jmax)) planeloc = plane_in - j*jmax p = np.zeros((tsteps,kmax,itot)) print 'Start extraction of property array' for i in range(0,nx): ii = str(i).rjust(3,'0') jj = str(j).rjust(3,'0') f = pu.netcdf_file(fddatadir + '/fielddump.%s.%s.%s.nc' % (ii,jj,expnr)) print 'Finished reading from fielddump.%s.%s.%s.nc' % (ii,jj,expnr) p[:,:,(i*imax):((i+1)*imax)] = f.variables[prop][t_start_in:t_end_in,:,planeloc,:] print 'Finished writing for myidx, myidy = ', ii, jj if xa=='x' and ya=='y': p = np.zeros((tsteps,jtot,itot)) print 'Start extraction of property array' for i in range(0,nx): ii = str(i).rjust(3,'0') for j in range(0,ny): jj = str(j).rjust(3,'0') f = pu.netcdf_file(fddatadir + '/fielddump.%s.%s.%s.nc' % (ii,jj,expnr)) print 'Finished reading from fielddump.%s.%s.%s.nc' % (ii,jj,expnr) p[:,(j*jmax):((j+1)*jmax),(i*imax):((i+1)*imax)] = f.variables[prop][t_start_in:t_end_in,plane_in,:,:] print 'Finished writing for myidx, myidy = ', ii, jj if xa == 'y' and ya == 'z': i = int(math.floor(plane_in/imax)) planeloc = plane_in - i*imax p = np.zeros((tsteps,kmax,jtot)) print 'Start extraction of property array' for j in range(0,ny): ii = str(i).rjust(3,'0') jj = str(j).rjust(3,'0') f = pu.netcdf_file(expdir + '/fielddump.%s.%s.%s.nc' % (ii,jj,expnr)) print 'Finished reading from fielddump.%s.%s.%s.nc' % (ii,jj,expnr) p[:,:,(j*jmax):((j+1)*jmax)] = f.variables[prop][t_start_in:t_end_in,:,:,planeloc] print 'Finished writing for myidx, myidy = ', ii, jj print 'Finished extraction of property array' return {prop: p, 'nprocx': nx, 'nprocy': ny}