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

📄 circular_membrance.cpp

📁 算法的一些集合
💻 CPP
字号:
#include "vs.h"
#define PI 3.141592654
int main() {
   double a_= 1.0; // radius of the circle
	// A. Bode's Integration Formula
   double weight[25] = {14.0/45.0, 64.0/45.0, 24.0/45.0, 64.0/45.0, 28.0/45.0,
                                   64.0/45.0, 24.0/45.0, 64.0/45.0, 28.0/45.0,
                                   64.0/45.0, 24.0/45.0, 64.0/45.0, 28.0/45.0,
                                   64.0/45.0, 24.0/45.0, 64.0/45.0, 28.0/45.0,
                                   64.0/45.0, 24.0/45.0, 64.0/45.0, 28.0/45.0,
                                   64.0/45.0, 24.0/45.0, 64.0/45.0, 14.0/45.0};
   Quadrature qp(weight, 0.0, a_, 25);
   J d_r(a_/24.0);      // per normalized length

   // B. Define Basis Functions
   H2 r((double*)0, qp),   // radius variable
      phi = INTEGRABLE_VECTOR_OF_TANGENT_OF_TANGENT_BUNDLE("int, int, Quadrature",
            3/*vector size*/, 1/*spatial dim.*/, qp);
   phi[0] = cos((PI/2.0/a_)*r); phi[1] = cos((3.0*PI/2.0/a_)*r); phi[2] = cos(5.0*PI/2.0/a_*r);
   H0 d2_phi = INTEGRABLE_VECTOR("int, Quadrature", 3, qp);
   for(int i = 0; i < 3; i++) d2_phi[i] = dd(phi)(i)[0][0]; // degenerated hessian matrix

   // C. Weighted Residual Formulation and the solution of the Generalized Eigenvalue Problem
   C0 A = -( ( d(phi)(0)%((H0)phi) + d2_phi%((H0)phi)*((H0)r) ) | d_r ),
      B = ( ((H0)phi)%((H0)phi) * ((H0)r) ) | d_r;
   C0 L = MATRIX("int, int", 3, 3);
   Cholesky Ch(B);
   for(i = 0; i < 3; i++)
   for(int j = 0; j < 3; j++)
   	if(i >= j) L[i][j] = Ch.rep_ptr()[0][i*(1+i)/2+j];
      else L[i][j] = 0.0;
   C0 L_inv = L.inverse();
   C0 C = L_inv*((A+~A)/2.0*(~L_inv));
   C0 lambda = Eigen(C).Eigenvalues();
   C0 v = Eigen(C).Eigenvectors();
   cout << lambda << endl;
   cout << v << endl;
	return 0;
}

⌨️ 快捷键说明

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