queue='standard', walltime=24), sd(hpcmp_defpbs, pbsname=pbsbase + "_armstrong_36", cluster='armstrong', 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)
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);
lspexec='lsp-10-xy', fp='nc', #target n_s=1e23, solid_len=10, expf=1.5, #movne movne={'clim': (1e14, 1e21)}, #pbs options autozipper=True, dir=True, ) pbsfmt = '{l}um-{I:0.2e}-l={scale:0.3}um' defds = [] for E in Es: d = sd(fromenergy(E), **defd) d.update( dict( l=10e-6, lim=(-50, 10, -120, 120, 0, 0), tlim=(-40, 0, -110, 110, 0, 0), res=(60 * 5, 240 * 5, 0), timestep=2e-16, totaltime=d['T'] * 3.0, description="10um", #movne movne={'clim': (1e14, 1e21)}, angular=True, )) defds.append(d)
def mktarget( xdim=(-0.05, 0.05), sdim=(-0.0015, 0.0015), solid=3e22, sh = 7e17): @np.vectorize def out(x): if x <= xdim[0] or x >= xdim[1]: return 0.0; elif sdim[0] <= x <= sdim[1]: return solid; else: return sh; return out; d = fromenergy(3e-3,cycles=cycles,l=780e-9); d.update( nolaser=True, pbsbase='oned_test', lim =( -550, 550, 0,0,0,0), tlim=( -500, 500, 0,0,0,0), res =( 1100*100, 0, 0), lspexec='lsp-10-x', fp=(0,0,0), tref=(0.0,0.0,0.0), #target dens_dat='target.dat', externalf_1D=True, new_externalf=True, f_1D=mktarget(), dats=[
cluster='armstrong', queue='standard', walltime=24), sd( hpcmp_defpbs, pbsname=pbsbase+"_armstrong_36", cluster='armstrong', 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);
lspexec='lsp-10-xy', fp='nc', #target n_s=1e23, solid_len=10, expf=1.5, #movne movne={'clim':(1e14,1e21)}, #pbs options autozipper=True, dir=True, ) pbsfmt='{l}um-{I:0.2e}-l={scale:0.3}um' defds=[] for E in Es: d = sd(fromenergy(E), **defd); d.update(dict( l = 10e-6, lim =( -50, 10, -120, 120,0,0), tlim=( -40, 0, -110, 110,0,0), res =( 60*5, 240*5, 0), timestep = 2e-16, totaltime= d['T']*3.0, description="10um", #movne movne={'clim':(1e14,1e21)}, angular=True, )); defds.append(d);
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)
pbsfmt='{l}um-{I:0.2e}-l={scale:0.3}um' def mkpbsbase(d): l = d['l']/1e-6; if l > 1: l = int(l); else: l = '{:0.1f}'.format(l) d['pbsbase']=pbsfmt.format( l=l,I=d['I'],scale=d['expf']); #################################### # 10um scans #################################### defds=[] for E in Es: d = sd(fromenergy(E,cycles=cycles), **defd); d.update( lim =( -50, 10, -120, 120,0,0), tlim=( -40, 0, -110, 110,0,0), res =( 60*4, 240*4, 0), timestep = 5e-16, totaltime= d['T']*3.75, description="10um", angular=True, ); defds.append(d); #10um, scale=1.5um for d in defds: d['pbsbase']=pbsfmt.format( l=int(d['l']/1e-6),I=d['I'],scale=d['expf']);