Example #1
0
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,
)
Example #2
0
    #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']],
Example #3
0
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,
);
Example #4
0
          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);
Example #5
0
    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
Example #6
0
           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)
Example #7
0
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,
);
Example #8
0
    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,
)
Example #9
0
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(
Example #10
0
    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),
# );
Example #11
0
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)
Example #12
0
        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))),
Example #13
0
    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
Example #14
0
# 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,
)
Example #15
0
    #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):
Example #16
0
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);
Example #17
0
    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']));
Example #18
0
        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)],
Example #19
0
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,
)
Example #20
0
    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,
);
Example #21
0
    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,
Example #22
0
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,
    );
Example #23
0
#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,
)