⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 meep.cpp

📁 麻省理工的计算光子晶体的程序
💻 CPP
字号:
#include "meep-ctl.hpp"using namespace meep;/**************************************************************************//* The following are hook functions called from main() when   starting the program and just before exiting.  */static initialize *meep_init = 0;void ctl_start_hook(int *argc, char ***argv){  meep_init = new initialize(*argc, *argv);}void ctl_stop_hook(void){  delete meep_init;}extern "C" void SWIG_init();void ctl_export_hook(void){  SWIG_init();}/**************************************************************************/ctlio::cvector3_list do_harminv(ctlio::cnumber_list vals, double dt, 				double fmin, double fmax, int maxbands){  complex<double> *amp = new complex<double>[maxbands];  double *freq_re = new double[maxbands];  double *freq_im = new double[maxbands];  double *freq_err = new double[maxbands];  maxbands = do_harminv(reinterpret_cast<complex<double>*>(vals.items),			vals.num_items, dt, fmin, fmax, maxbands,			amp, freq_re, freq_im, freq_err);  ctlio::cvector3_list res;  res.num_items = maxbands;  res.items = new cvector3[maxbands];  for (int i = 0; i < maxbands; ++i) {    res.items[i].x.re = freq_re[i];    res.items[i].x.im = freq_im[i];    res.items[i].y.re = real(amp[i]);    res.items[i].y.im = imag(amp[i]);    res.items[i].z.re = freq_err[i];    res.items[i].z.im = 0;  }  delete[] freq_err;  delete[] freq_im;  delete[] freq_re;  delete[] amp;  return res;}/**************************************************************************//* This is a wrapper function to fool SWIG...since our list constructor   takes ownership of the next pointer, we have to make sure that SWIG   does not garbage-collect geometric_volume_list objects.  We do   this by wrapping a "helper" function around the constructor which   does not have the %newobject SWIG attribute.   Note that we then   need to deallocate the list explicitly in Scheme. */geometric_volume_list  *make_geometric_volume_list(const geometric_volume &gv,			      int c, complex<double> weight,			      geometric_volume_list *next){  return new geometric_volume_list(gv, c, weight, next);}/***************************************************************************/ctlio::number_list dft_flux_flux(dft_flux *f){  ctlio::number_list res;  res.num_items = f->Nfreq;  res.items = f->flux();  return res;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -