Compare commits
2 Commits
1b3d322fc6
...
950a5831ec
Author | SHA1 | Date | |
---|---|---|---|
950a5831ec | |||
91d89550a1 |
@ -200,7 +200,7 @@ def poynting_e_cross_h(dxes: dx_lists_t) -> Callable[[cfdfield_t, cfdfield_t], c
|
||||
|
||||
Note:
|
||||
If `E` and `H` are peak amplitudes as assumed elsewhere in this code,
|
||||
the time-average of the poynting vector is `<S> = Re(S)/2 = Re(E x H) / 2`.
|
||||
the time-average of the poynting vector is `<S> = Re(S)/2 = Re(E x H*) / 2`.
|
||||
The factor of `1/2` can be omitted if root-mean-square quantities are used
|
||||
instead.
|
||||
|
||||
|
@ -324,6 +324,7 @@ def poynting_e_cross(e: vcfdfield_t, dxes: dx_lists_t) -> sparse.spmatrix:
|
||||
fx, fy, fz = [shift_circ(i, shape, 1) for i in range(3)]
|
||||
|
||||
dxag = [dx.ravel(order='C') for dx in numpy.meshgrid(*dxes[0], indexing='ij')]
|
||||
dxbg = [dx.ravel(order='C') for dx in numpy.meshgrid(*dxes[1], indexing='ij')]
|
||||
Ex, Ey, Ez = [ei * da for ei, da in zip(numpy.split(e, 3), dxag)]
|
||||
|
||||
block_diags = [[ None, fx @ -Ez, fx @ Ey],
|
||||
@ -331,7 +332,7 @@ def poynting_e_cross(e: vcfdfield_t, dxes: dx_lists_t) -> sparse.spmatrix:
|
||||
[ fz @ -Ey, fz @ Ex, None]]
|
||||
block_matrix = sparse.bmat([[sparse.diags(x) if x is not None else None for x in row]
|
||||
for row in block_diags])
|
||||
P = block_matrix @ sparse.diags(numpy.concatenate(dxag))
|
||||
P = block_matrix @ sparse.diags(numpy.concatenate(dxbg))
|
||||
return P
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user