The documentation is not all that clear about the procedure to follow, when using the Python interface. I'd like to call a function like:
def esq_mag(r, ex, ey, ez): return ex*ex.conjugate()+ey*ey.conjugate()+ez*ez.conjugate() from the at_every construct - I initially used the above function together with: sim.run(mp.to_appended(prefix, mp.at_every(0.1, sim.output_field_function('E_sq', [mp.Ex, mp.Ey, mp.Ez], esq_mag))), until=t) but the program runs to the point where output is triggered, then stops with a lengthy error message, terminating: File "/usr/lib/python3.6/site-packages/meep/simulation.py", line 28, in get_num_args return func.__code__.co_argcount AttributeError: 'NoneType' object has no attribute '__code__' That does not surprise me as the docs state I have to pass a function to the sim.run function, not the result of evaluating a function. So I tried again, supplying in the spirit of the instructions related to Scheme "a function |my-weird-output| of no arguments that, when called, outputs our function |f|." So I constructed a function to do that: def esq_mag(): def _esq_mag(r, ex, ey, ez): return ex*ex.conjugate()+ey*ey.conjugate()+ez*ez.conjugate() return _esq_mag but the result is another error: TypeError: esq_mag() takes 0 positional arguments but 4 were given OK - I need to handle those arguments to esq_mag, so def esq_mag(r, ex, ey, ez): def _esq_mag(r, ex, ey, ez): return ex*ex.conjugate()+ey*ey.conjugate()+ez*ez.conjugate() return _esq_mag but now the program fails with: TypeError: must be real number, not function The above exception was the direct cause of the following exception: SystemError: PyEval_EvalFrameEx returned a result with an error set I have tried several variations without success; please, what construct should I be using? Also, if I try to use output_real_field_function as described in the docs, I get the error: AttributeError: 'Simulation' object has no attribute 'output_real_field_function' I'll be very grateful for any help, Ian
_______________________________________________ meep-discuss mailing list meep-discuss@ab-initio.mit.edu http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss