gensim( l=l, w=w, T=T, I=I, fp=(-0.1, 0, 0), tref=(0, 0, 0), dens_flags=(True, True, True), lim=(-2.5, 2.5, -8.5, 8.5, 0, 0), tlim=(-0.1, 0.1, -6.0, 6.0, 0, 0), res=(1000, 3400, 0), timestep=1e-17, totaltime=70e-15, pbsbase=pbsbase, description="hotglycol TNSA stage 1", dumpinterval=5e-17, #PIC/grid details domains=48 * 8, pext_species=(17, 18), region_split=('y', 8), pbses='defaults', #target information lsptemplate="hotglycol.lsp", speciesl=['e', 'O', 'C', 'p'], fracs=[10.0, 2.0, 2.0, 6.0], thermal_energy=(1.0, 1.0, 1.0, 1.0), target_temps=(None, None, None, None), #density singlescale=None, dens_dat="target.dat", externalf_1D=True, f_1D=mkslab(), #misc lspexec='lsp-10-xy', dir=True, )
#there are two densities, one for plasma and one for neutrals. dens_type=40, dens_dat=('target_plasma.dat',)*4 + ('target_neutral.dat',)*3, #this is assuming the shoulder is 1e14 W/cm^2 at 12 picoseconds #using wilks scaling. thermal_energy=( # 6.0, 0.01, 0.01, 0.01, #and (god help me) neutrals are...not 0.01, 0.01, 0.01), target_temps=( None,None,None,None, None,None,None), )); gensim(**d); def gendats(di, w0=w0*1e2, width=0.46e-4, L=0.043e-4, N0=1.08e22, depth=0.086e-4, mindensity=1e18, dat_xres=None, new=False): if new: mkpinprick = mk45_pinprick_plasma else: mkpinprick = mk45_pinprick_plasma_old targ_plasma, targ_neutral = mkpinprick( dim = [i*1e-4 for i in d['tlim']],
gensim( l = l, w = w, T = T, I = I, fp=(-0.1,0,0), tref=(0,0,0), dens_flags=(True,True,True), lim =( -2.5, 2.5, -8.5, 8.5, 0, 0), tlim=( -0.1, 0.1, -6.0, 6.0, 0, 0), res =(1000,3400, 0), timestep =1e-17, totaltime=70e-15, pbsbase=pbsbase, description="hotglycol TNSA stage 1", dumpinterval=5e-17, #PIC/grid details domains=48*8, pext_species=(17,18), region_split=('y',8), pbses=pbses, #target information lsptemplate="hotglycol.lsp", speciesl=[ 'e', 'O', 'C', 'p'], fracs =[10.0, 2.0, 2.0, 6.0], #density singlescale=None, dens_dat="target.dat", externalf_1D=True, f_1D=mkslab(), #misc lspexec='lsp-10-xy', dir=True, );
dat_xres = 500, movE=mkmovE(d,density), movB=mkmovB(d,density),) for density in denses] d3s = [sd(d, pbsbase="bl_{:3.1e}".format(density), externalf_2D=True, lim=(-45, 20, -30, 30, 0, 0), tlim=(-44, 20, -29, 29, 0, 0), movne=dict( ne_species = 'RhoN17', clim=(1e14,1e22)), f_2D = mkbgtarg( N_bg = density, sdim = [-7.5e-4,2.5e-4], dim=[i*1e-4 for i in d['tlim']]), dat_xres = 500, movE=mkmovE(d,density), movB=mkmovB(d,density),) for density in denses] ds = d1s+d2s+d3s; for di in ds: gensim(**di);
restart=23.95, dump_restart_flag=True, ) Is = [5.4e17, 1e18, 1.5e18, 3e18, 1e19] #vanillas for I in Is: pbsbase = "H2O-3d-{}".format(I) print(pbsbase) d = sd( lsp_d, I=I, pbsbase=pbsbase, pbses='defaults', ) gensim(dir=True, **d) for I in Is: pbsbase = "H2Osm-3d-{}".format(I) print(pbsbase) d = sd( lsp_d, I=I, pbsbase=pbsbase, pbses='defaults', domains=384, region_split=('z', 16), ) gensim(dir=True, **d) #more domains
queue='standard', walltime=36), ] return dd #crazy Es = [40, 4, 0.4, 0.04, 0.004, 4e-4] ratio = 1.5 / 0.78 for E in Es: d = sd(fromenergy(E, l=50e-6, cycles=cycles), **defd) d.update( n_s=1e19, solid_len=50, expf=ratio * d['l'] / 1e-6, lim=(-850, 50, -800, 800, 0, 0), tlim=(-800, 0, -700, 700, 0, 0), res=(18 * 32, 32 * 32, 0), totaltime=d['T'] * 4.0, timestep=5e-15, description="50um laser in search of 100 MeV", dumpinterval=10e-15, #movne movne={'clim': (1e15, 1e19)}, ) mkpbsbase(d) mkpbs(d) gensim(**d) dd = mk_noextrapbs(d) gensim(**dd)
region_split=('z',72); pbsbase="flashic_3da"; pbses = mk_hpcmp_pbses( pbsbase=pbsbase, domains=domains); gensim( l = 0.8e-6, w = 2.26e-6, I = 3e18, T = 60e-15, lspexec='lsp-10-3d', fp=(0,0,0), tref=(0,0,0), dens_flags=(True,True,True), lim =( -71, 9, -18, 18,-18, 18), tlim=( -66, 4, -13, 13,-13, 13), res =( 80*10, 36*10, 36*10), totaltime=350e-15, dens_dat='flashic-20161114.dat', dens_type='50', pbsbase=pbsbase, description="Flash to LSP as IC in 3D", dumpinterval=5e-16, timestep=1e-16, domains=domains, region_split=region_split, pbses=pbses, restart=23.5, dir=True, );
sd(defpbs, pbsname=pbsbase + "_garnet_short", cluster='garnet', queue='standard_lw', walltime=48), ] gensim( l=0.8e-6, w=2.26e-6, I=3e18, T=60e-15, lspexec='lsp-10-3d', fp=(0, 0, 0), tref=(0, 0, 0), dens_flags=(True, True, True), lim=(-41, 9, -17, 17, -17, 17), tlim=(-36, 4, -12, 12, -12, 12), res=(50 * 10, 34 * 10, 34 * 10), totaltime=350e-15, dens_dat='flashic-20160816.dat', dens_type='50', pbsbase=pbsbase, description="Flash to LSP as IC in 3D", dumpinterval=5e-16, timestep=1e-16, domains=domains, region_split=region_split, pbses=pbses, restart=23.5, )
d.update(**dict( lsptemplate="hotglycol2_allemitters_neutrals.lsp", speciesl=['O0','C0','H','O1','C1','p','e'], fracs =[2.0, 2.0,6.0, 2.0, 2.0, 6.0, 10.0], #there are two densities, one for plasma and one for neutrals. dens_type=40, dens_dat=('target_neutral.dat',)*3+('target_plasma.dat',)*4, thermal_energy=( 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 1.0), target_temps=( None,None,None,None, None,None,None), )); gensim(**d); def gendats(di, h = 0.2e-4, w = 0.66e-4, spacing=0.66e-4, width=0.45e-4, N0=1.08e22, targw=450e-7, datfmt="%.4e", dat_xres=None): targ_plasma = mkgrate( N0=N0, spacing=spacing, w=w, h=h); targ_neutral = mk45dum(
description="hotwater in 3d", dens_dat="watercolumn.dat", domains=700, region_split=("z", 50), pext_species=(10, 11), restart=23.95, dump_restart_flag=True, ) Is = [5.4e17, 1e18, 1.5e18, 3e18, 1e19] # vanillas for I in Is: pbsbase = "H2O-3d-{}".format(I) print(pbsbase) d = sd(lsp_d, I=I, pbsbase=pbsbase, pbses="defaults") gensim(dir=True, **d) for I in Is: pbsbase = "H2Osm-3d-{}".format(I) print(pbsbase) d = sd(lsp_d, I=I, pbsbase=pbsbase, pbses="defaults", domains=384, region_split=("z", 16)) gensim(dir=True, **d) # more domains # mksim( # "more-res", # I=I, # domains=700, # region_split=('z',100), # );
def mksim(E, l, fn, cy, yres=20): scale = 1.5 d = fromenergy( E, l=l * 1e-6, cycles=cycles * cy, l2w=l2w * fn, ) d = sd(defd, **d) mywidth = np.ceil(width * l) margin = 15.0 mymargin = np.ceil(margin) myedges = np.ceil(margin) + mywidth timestep = l * 1e-6 / c / tstep yres = int(np.ceil((2 * myedges) / (l / yres))) pbsbase = pbsfmt.format( l='0.8' if l == 0.78 else int(l), I=d['I'], scale=scale, fn=np.pi * d['w'] / 2 / d['l'], cs=cy, ) pbses = mk_hpcmp_pbses(pbsbase=pbsbase, domains=domains, lspexec='lsp-10-xy') print("processing {}".format(pbsbase)) #original targets d.update( pbsbase=pbsbase, #target fp='nc', n_s=1e23, solid_len=10, expf=scale, scale_with_min=True, long_resd=20, long_margin=(mymargin, mymargin), n_min=1e16, roundup_pp=True, # others lim=(0, 0, -myedges, myedges, 0, 0), tlim=(0, 0, -mywidth, mywidth, 0, 0), res=(0, yres, 0), timestep=timestep, dumpinterval=timestep * 2, totaltime=d['T'] * 3.5, description=pbsbase, pbses=pbses, domains=domains, region_dom_split='y', #movs movne=dict(clim=(1e16, 1e23)), movni=dict(clim=(1e16, 1e23)), movdq=dict(clim=(-1e19, 1e19), linthresh=1e15), movrho=dict(clim=(-1e19, 1e19), linthresh=1e15), dir=True, ) gensim(**d) #scaled targets if np.isclose(l, 0.78): return scale = d['expf'] = l2L * l pbsbase = pbsfmt.format(l=int(l), I=d['I'], scale=scale, fn=np.pi * d['w'] / 2 / d['l'], cs=cy) d['pbsbase'] = pbsbase print("processing {}".format(pbsbase)) d['pbses'] = mk_hpcmp_pbses(pbsbase=pbsbase, domains=96, lspexec='lsp-10-xy') if np.isclose(l, 10.0): d['n_min'] = 5e16 #note I DO NOT remake movnes, because 1e17 is close enough. gensim(**d)
ne_species = 'RhoN10', clim=(1e19,1e23)), movrho=dict( clim=(-1e19,1e19), linthresh=1e15,), movB=dict( clim=(BfromI(I)*1e-4, BfromI(I)), contour_lines=(1e19,1e21), contour_quantities=('RhoN10', 'RhoN10'),), #pmovies no_pmovies=False, #particle dumps dump_particle=True, particle_dump_interval_ns=2e-15, ); gensim(**d); d2 = sd( d, pbsbase='circle2', multilaser=[ dict(outlet='xmin', fp=(0.0, 5.0, 0.0)), dict(outlet='xmax', fp=(0.0,-5.0, 0.0))],); gensim(**d2); Is = 5*(10.0**np.arange(16,23)); Bs = BfromI(Is); Iscan = [ sd(d2, I = i, movB = sd(d2['movB'],clim=(BfromI(I)*1e-4, BfromI(I))),
laser_direction=(1,0,0), laserafunc=4, ); #species and target. test1.update( lsptemplate="hotwater3d_newlaser_tmpl.lsp", speciesl=['e','p','O+'], fracs =[3.0, 2.0,1.0], dens_type=None, dens_dat=None, target_density = 0.0, target_density_plainconst=True, target_temps=( None,None,None), ); gensim(**test1); test2=sd( test1, lsptemplate="hotwater3d_laser86_tmpl.lsp", fp=(0.0,0.0,0.0), # l p lpmode=(0,0), T=26.018e-15, laser_t0=49.5e-15, pbsbase="newlasertest2", lim =(-15, 2.6, -8, 8, -8, 8), tlim=(-15, 2.6, -8, 8, -8, 8), res =(220,220,200), timestep = 1e-16, totaltime=30e-15, #regions
# split y by half # and z by n gensim( l=0.8e-6, w=2.2e-6, I=1e18, T=84e-15, lspexec="lsp-10-3d", fp=(0, 0, 0), tref=(0, 0, 0), dens_flags=(True, True, True), lim=(-5, 20, -20, 20, -20, 20), tlim=(0, 2, -15, 15, -15, 15), res=(25 * 20, 40 * 20, 40 * 20), totaltime=250e-15, pbsbase=pbsbase, description="LSP TNSA stage 1", dumpinterval=5e-16, timestep=0.5e-16, domains=25 * 80, region_split=("z", 80), pbses=pbses, restart=23.75, # density singlescale=None, dens_dat="target.dat", externalf_1D=True, f_1D=mkslab(), dir=True, )
#particle dumps dump_particle=True, particle_dump_interval_ns=0.0, particle_dump_times_ns=(1e-4, 1.1e-4, 1.4e-4), pext_species=(17, 18), ) #generating scans hf = np.arange(2.5, 20.0, 2.5) fps = [-1.0, 0.0, 1.0] + list(-hf) + list(hf) peak = [ sd(d, pbsbase='glypeak_fp={:0=+5.1f}'.format(fp), fp=(fp, 0.0, 0.0)) for fp in fps ] for di in peak: gensim(**di) #other intensities I3e18 = [ sd(d, pbsbase='gly3e+18_fp={:0=+5.1f}'.format(fp), I=3e18, fp=(fp, 0.0, 0.0)) for fp in fps ] I1e18 = [ sd(d, pbsbase='gly1e+18_fp={:0=+5.1f}'.format(fp), I=1e18, fp=(fp, 0.0, 0.0)) for fp in fps ] for di in (I3e18 + I1e18):
def mksim(E,l,fn,cy, yresd=24,long_resd=24): scale = 1.5; d = fromenergy( E, l = l*1e-6, cycles= cycles*cy, l2w = l2w*fn, ); d = sd(defd, **d); mywidth = np.ceil(width * l); margin = 15.0; mymargin= np.ceil(margin); myedges = np.ceil(margin)+mywidth; timestep = l*1e-6/c/tstep; yresd = int(np.round((2*myedges) / (l / yresd))); pbsbase = pbsfmt.format( l = '0.8' if l==0.78 else int(l), I = d['I'], scale = scale, fn= np.pi*d['w']/2/d['l'], cs=cy,); pbses = mk_hpcmp_pbses( pbsbase=pbsbase, domains=domains, lspexec='lsp-10-xy'); print("processing {}".format(pbsbase)); #original targets d.update( pbsbase=pbsbase, #target fp='nc', n_s=1e23, solid_len=10, expf=scale, scale_with_min=True, long_resd = long_resd, long_margin = (mymargin,mymargin), n_min = 1e16, roundup_pp = True, # others lim =( 0, 0, -myedges, myedges, 0, 0), tlim=( 0, 0, -mywidth, mywidth, 0, 0), res = (0,yresd,0), timestep = timestep, dumpinterval = timestep*2, totaltime= d['T']*3.5, description=pbsbase, pbses=pbses, domains=domains, region_dom_split='y', #movs movne =dict(clim=(1e16,1e23)), movni =dict(clim=(1e16,1e23)), movdq =dict(clim=(-1e19,1e19),linthresh=1e15), movrho=dict(clim=(-1e19,1e19),linthresh=1e15), dir=True, ); gensim(**d); #scaled targets if np.isclose(l,0.78): return; scale = d['expf'] = l2L*l; pbsbase = pbsfmt.format( l = int(l), I = d['I'], scale = scale, fn= np.pi*d['w']/2/d['l'], cs= cy); d['pbsbase'] = pbsbase; print("processing {}".format(pbsbase)); d['pbses'] = mk_hpcmp_pbses( pbsbase=pbsbase, domains=96, lspexec='lsp-10-xy'); if np.isclose(l,10.0): d['n_min']=5e16; #note I DO NOT remake movnes, because 1e17 is close enough. gensim(**d);
lsptemplate="hotwater3d_laser86_tmpl.lsp", speciesl=['e','p','O+'], fracs =[3.0, 2.0,1.0], dens_type=None, dens_dat=None, laser_t0=35.0e-15, lpmode=(1,0), #scale ux=1.0, scale_with_min=True, n_s = 3.34e22, n_min = 1.622836e17/3.0, solid_len=0.8e-4, expf = 75e-7, long_res = 25e4, long_margin=[9.6e-4,6.2e-4], ); gensim(**targ1); if opts['--make-all-targets']: for d in targds: d['mktargf'](d); elif opts['--make-target']: for d in targds: if d['pbsbase'] == opts['--make-target']: d['mktargf'](d); break; else: raise ValueError( "dict with pbsbase=='{}' not found".format(opts['--make-target']));
width=0.46e-4, N0=1.08e22, fmt='%.4e',): targ_neutral = mk45_clean_neutral2d( width=width, N0 = N0,); print("making targets for {}".format(di['pbsbase'])); dd = sd(di, f_2D = targ_neutral, dat_xres=di['res'][0]+1, dat_yres=di['res'][0]+1); dat = gendat(datfmt=fmt,**dd); savetxt( "{}/{}".format(di['pbsbase'],di['dens_dat']), dat); gensim(**d3d); addtotargs(d3d,gendatclean); d3dra = sd(d3d, domains=8*8*2*24*2, pbsbase='glyion1ra'); gensim(**d3dra); addtotargs(d3dra, gendatclean); d3danglea = sd( d3d, restart_interval=40, lim= (-8, 5, -20,20, -20,20), tlim=(-0.23,0.23,-20,20, -20,20), res =(1300, 1600, 800), region_splits=[ ('y',8), ('z',8)],
import numpy as np domains = 72 * 25 region_split = ('z', 72) pbsbase = "flashic_3da" pbses = mk_hpcmp_pbses(pbsbase=pbsbase, domains=domains) gensim( l=0.8e-6, w=2.26e-6, I=3e18, T=60e-15, lspexec='lsp-10-3d', fp=(0, 0, 0), tref=(0, 0, 0), dens_flags=(True, True, True), lim=(-71, 9, -18, 18, -18, 18), tlim=(-66, 4, -13, 13, -13, 13), res=(80 * 10, 36 * 10, 36 * 10), totaltime=350e-15, dens_dat='flashic-20161114.dat', dens_type='50', pbsbase=pbsbase, description="Flash to LSP as IC in 3D", dumpinterval=5e-16, timestep=1e-16, domains=domains, region_split=region_split, pbses=pbses, restart=23.5, dir=True, )
sd( defpbs, pbsname=pbsbase+"_garnet_short", cluster='garnet', queue='standard_lw', walltime=48),]; gensim( l = 0.8e-6, w = 2.26e-6, I = 3e18, T = 60e-15, lspexec='lsp-10-3d', fp=(0,0,0), tref=(0,0,0), dens_flags=(True,True,True), lim =( -41, 9, -17, 17,-17, 17), tlim=( -36, 4, -12, 12,-12, 12), res =( 50*10, 34*10, 34*10), totaltime=350e-15, dens_dat='flashic-20160816.dat', dens_type='50', pbsbase=pbsbase, description="Flash to LSP as IC in 3D", dumpinterval=5e-16, timestep=1e-16, domains=domains, region_split=region_split, pbses=pbses, restart=23.5, );
totaltime= 2e-12, description="1D", pext_species=(10,11), angular=True, pbses='defaults', dir=True, movne=dict(clim=(1e17,1e23)), movni=dict(clim=(1e17,1e23)), movdq=dict(clim=(-1e19,1e19), linthresh=1e15), movrho=dict(clim=(-1e19,1e19), linthresh=1e15), target_temps = ( dict(dat="temp.dat"), None, None), ); gensim(**d); # 2D sim for absorption d.update( pbsbase='absorption', lim =( -25, 25, -25,25,0,0), tlim=( -15, 15, -15,15,0,0), res =( 50*30, 50*30, 0), lspexec='lsp-10-xy', fp=(0,0,0), #target dens_dat='surround_target.dat', externalf_1D=True, f_1D=mktarget( xdim = ( 0.0, 30e-4), sdim = (14e-4, 16e-4), solid= 1e23,
d2 = sd(d, lim = (-25,25, -25,25, 0,0), tlim = (-20,20, -20,20, 0,0), res =(1600, 1600, 0), pbsbase='prexp2', region_split=('y',3), domains=96, totaltime=400e-15, particle_dump_interval_ns=1e-15,); gensim(**d); gensim(**d2); def mktarg(di, No = 3.34e22, ro = 5e-4, L = 1e-4): tw = di['tlim'][1] - di['tlim'][0] dat_xres= int(tw/(di['lim'][1]-di['lim'][0])*di['res'][0]); dd = sd( di, f_2D = fuzzcircle( dim = [i*1e-4 for i in di['tlim']], No = No, ro = ro, L = L, prexp=True), dat_xres= dat_xres, );
#split y by half #and z by n gensim( l=0.8e-6, w=2.2e-6, I=1e18, T=84e-15, lspexec='lsp-10-3d', fp=(0, 0, 0), tref=(0, 0, 0), dens_flags=(True, True, True), lim=(-5, 20, -20, 20, -20, 20), tlim=(0, 2, -15, 15, -15, 15), res=(25 * 20, 40 * 20, 40 * 20), totaltime=250e-15, pbsbase=pbsbase, description="LSP TNSA stage 1", dumpinterval=5e-16, timestep=0.5e-16, domains=25 * 80, region_split=('z', 80), pbses=pbses, restart=23.75, #density singlescale=None, dens_dat="target.dat", externalf_1D=True, f_1D=mkslab(), dir=True, )