Ejemplo n.º 1
0
qm = mb.qm_desc_2lvl(1e24, 2 * math.pi * 2e14, 6.24e-11, 1.0e10, 1.0e10, -1.0)
mat_ar = mb.material("AR_Ziolkowski", qm)
mb.material.add_to_library(mat_ar)

# Ziolkowski setup
dev = mb.device("Ziolkowski")
dev.add_region(mb.region("Vacuum left", mat_vac, 0, 7.5e-6))
dev.add_region(mb.region("Active region", mat_ar, 7.5e-6, 142.5e-6))
dev.add_region(mb.region("Vacuum right", mat_vac, 142.5e-6, 150e-6))

# initial density matrix
rho_init = mb.qm_operator([1, 0])

# scenario
sce = mb.scenario("Basic", 32768, 200e-15, rho_init)
sce.add_record(mb.record("inv12", 2.5e-15))
sce.add_record(mb.record("e", 2.5e-15))

# add source
sce.add_source(
    mb.sech_pulse("sech", 0.0, mb.source.hard_source, 4.2186e9, 2e14, 10,
                  2e14))

# run solver
sol = mb.solver.create_instance("cpu-fdtd-red-2lvl-cvr-rodr", dev, sce)
print('Solver ' + sol.get_name() + ' started')
tic = time.time()
sol.run()
toc = time.time()
print('Solver ' + sol.get_name() + ' finished in ' + str(toc - tic) + ' sec')
Ejemplo n.º 2
0
sys.path.append('./mbsolve-lib/')
sys.path.append('./solver-generic/')
sys.path.append('./writer-matlab/')

import pymbsolvelib as mb
import pysolvergeneric
import pywritermatlab

import numpy as np

dev = mb.device("test")

sce = mb.scenario("basic", 32768, 200e-15)

sce.add_record(mb.record("d11"))

sol = mb.solver("generic", dev, sce)

print('Solver ' + sol.get_name() + ' started')

sol.run()

print('Solver ' + sol.get_name() + ' finished')

wri = mb.writer("matlab")

outfile = dev.get_name() + "_" + sce.get_name() + "." + wri.get_extension()

results = sol.get_results()
Ejemplo n.º 3
0
qm = mb.qm_desc_2lvl(1e24, 2 * math.pi * 2e14, 6.24e-11, 1.0e10, 1.0e10, -1.0)
mat_ar = mb.material("AR_Ziolkowski", qm)
mb.material.add_to_library(mat_ar)

# Ziolkowski setup
dev = mb.device("Ziolkowski")
dev.add_region(mb.region("Vacuum left", mat_vac, 0, 7.5e-6))
dev.add_region(mb.region("Active region", mat_ar, 7.5e-6, 142.5e-6))
dev.add_region(mb.region("Vacuum right", mat_vac, 142.5e-6, 150e-6))

# initial density matrix
rho_init = mb.qm_operator([ 1, 0 ])

# scenario
sce = mb.scenario("Basic", 32768, 200e-15, rho_init)
sce.add_record(mb.record("inv12", 2.5e-15))
sce.add_record(mb.record("e", 2.5e-15))

# add source
sce.add_source(mb.sech_pulse("sech", 0.0, mb.source.hard_source, 4.2186e9,
                             2e14, 10, 2e14))

# run solver
sol = mb.solver("openmp-2lvl-os-red", dev, sce)
print('Solver ' + sol.get_name() + ' started')
tic = time.time()
sol.run()
toc = time.time()
print('Solver ' + sol.get_name() + ' finished in ' + str(toc - tic) + ' sec')

# write results
Ejemplo n.º 4
0
# initial density matrix
rho_init = mb.qm_operator([1, 0, 0])

# quantum mechanical description
qm = mb.qm_description(6e24, H, u, relax_sop)
mat_ar = mb.material("AR_Song", qm)
mb.material.add_to_library(mat_ar)

# Ziolkowski setup
dev = mb.device("Song")
dev.add_region(mb.region("Active region", mat_ar, 0, 150e-6))

# scenario
sce = mb.scenario("Basic", 32768, 80e-15, rho_init)
sce.add_record(mb.record("e", 0.0, 0.0))
sce.add_record(mb.record("d11", mb.record.density, 1, 1, 0.0, 0.0))
sce.add_record(mb.record("d22", mb.record.density, 2, 2, 0.0, 0.0))
sce.add_record(mb.record("d33", mb.record.density, 3, 3, 0.0, 0.0))

# add source
sce.add_source(
    mb.sech_pulse("sech", 0.0, mb.source.hard_source, 3.5471e9, 3.8118e14,
                  17.248, 1.76 / 5e-15, -math.pi / 2))

# run solver
sol = mb.solver("openmp-3lvl-os-red", dev, sce)
print('Solver ' + sol.get_name() + ' started')
tic = time.time()
sol.run()
toc = time.time()
Ejemplo n.º 5
0
mat_ar = mb.material("AR_Freeman", qm, 12.9, 1, loss)
mb.material.add_to_library(mat_ar)

L_abs = 0.25e-3

dev = mb.device("Freeman")
dev.add_region(mb.region("Vacuum left", mat_abs, 0, L_abs))
dev.add_region(mb.region("Active region", mat_ar, L_abs, L_abs + L))
dev.add_region(mb.region("Vacuum right", mat_abs, L_abs + L, 2 * L_abs + L))

# scenario
# approx 14000 grid points -> choose 16k?
# rather set d_x directly
# courant number?
sce = mb.scenario("Basic", 16384, 230e-12)
sce.add_record(mb.record("inv12", 2e-12))
sce.add_record(mb.record("e", 1e-13, L_abs + L))

#TODO check whether position > device length

# add source
sce.add_source(
    mb.single_cycle_pulse("seed-pulse", L_abs, mb.source.soft_source, 1e5,
                          2.45e12, 1 / (0.35e-12 / 2.634), 1e-12))
# TODO: add phase to carrier sine wave ?

# initialization: perfect inversion
sce.set_dm_init_type(mb.scenario.upper_full)

sol = mb.solver("openmp-2lvl-pc", dev, sce)