Compare commits

..

No commits in common. 'master' and 'master' have entirely different histories.

8
.gitignore vendored

@ -1,9 +1,5 @@
.idea/ .idea/
*.h5
__pycache__ __pycache__
*.py[cod] *.h5
build/ *.pyc
dist/
*.egg-info/

@ -2,7 +2,7 @@
/* Common code for E, H updates /* Common code for E, H updates
* *
* Template parameters: * Template parameters:
* ftype type name (e.g. float or double) * ftype type name (e.g. float or double)
* shape list of 3 ints specifying shape of fields * shape list of 3 ints specifying shape of fields
*/ */
#} #}
@ -78,8 +78,7 @@ int p{{r}} = + (int) di{{r}};
int wrap_{{r}} = (s{{r}} - 1) * (int) di{{r}}; int wrap_{{r}} = (s{{r}} - 1) * (int) di{{r}};
if ( {{r}} == 0 ) { if ( {{r}} == 0 ) {
m{{r}} = wrap_{{r}}; m{{r}} = wrap_{{r}};
} } else if ( {{r}} == s{{r}} - 1 ) {
if ( {{r}} == s{{r}} - 1 ) {
p{{r}} = -wrap_{{r}}; p{{r}} = -wrap_{{r}};
} }
{% endfor %} {% endfor %}

@ -1,11 +1,11 @@
/* /*
* Update E-field from J field * Update E-field from J field
* *
* Template parameters: * Template parameters:
* common_header: Rendered contents of common.cl * common_header: Rendered contents of common.cl
* *
* OpenCL args: * OpenCL args:
* E, Jr, Ji, c, s, xmin, xmax, ymin, ymax, zmin, zmax * E, Jr, Ji, c, s, xmin, xmax, ymin, ymax, zmin, zmax
*/ */
{{common_header}} {{common_header}}

@ -170,7 +170,7 @@ class Simulation(object):
ctype = type_to_C(self.arg_type) ctype = type_to_C(self.arg_type)
def ptr(arg: str) -> str: def ptr(arg: str) -> str:
return ctype + ' *' + arg return ctype + ' * restrict ' + arg
base_fields = OrderedDict() base_fields = OrderedDict()
base_fields[ptr('E')] = self.E base_fields[ptr('E')] = self.E
@ -286,13 +286,13 @@ class Simulation(object):
alpha_max = pml['cfs_alpha'] alpha_max = pml['cfs_alpha']
def par(x): def par(x):
scaling = (x / pml['thickness']) ** pml['m'] scaling = ((x / (pml['thickness'])) ** pml['m'])
sigma = scaling * sigma_max sigma = scaling * sigma_max
kappa = 1 + scaling * (kappa_max - 1) kappa = 1 + scaling * (kappa_max - 1)
alpha = ((1 - x / pml['thickness']) ** pml['ma']) * alpha_max alpha = ((1 - x / pml['thickness']) ** pml['ma']) * alpha_max
p0 = numpy.exp(-(sigma / kappa + alpha) * self.dt) p0 = numpy.exp(-(sigma / kappa + alpha) * self.dt)
p1 = sigma / (sigma + kappa * alpha) * (p0 - 1) p1 = sigma / (sigma + kappa * alpha) * (p0 - 1)
p2 = 1 / kappa p2 = 1/kappa
return p0, p1, p2 return p0, p1, p2
xe, xh = (numpy.arange(1, pml['thickness'] + 1, dtype=self.arg_type)[::-1] for _ in range(2)) xe, xh = (numpy.arange(1, pml['thickness'] + 1, dtype=self.arg_type)[::-1] for _ in range(2))

Loading…
Cancel
Save