我想用 freefem++ 模拟 2d 中的电容器。这是我使用的代码:
int C0=0;
int C1=1;
int C2=2;
border C01(t=0,4.25){x=t; y=0; label=C0;}
border C02(t=0,2.25){x=4.25; y=t;label=C0;}
border C03(t=4.25,0){x=t; y=2.25; label=C0;}
border C04(t=2.25,0){x=0; y=t; label=C0;}
border C11(t=0.25,0){x=1.75+t; y=0.75; label=C1;}
border C12(t=0,0.75){x=1.75; y=0.75+t; label=C1; }
border C13(t=0,0.25){x=1.75+t; y=1.50;label=C1; }
border C14(t=0,0.75){x=2; y=1.5-t; label=C1;}
border C21(t=0.25,0){x=2.25+t; y=0.75; label=C2;}
border C22(t=0,0.75){x=2.25; y=0.75+t; label=C2; }
border C23(t=0,0.25){x=2.25+t; y=1.50;label=C2; }
border C24(t=0,0.75){x=2.5; y=1.5-t; label=C2;}
Th=buildmesh(C01(50)+C02(50)+C03(50)+C04(50)+C11(+20)+C12(+40)+C13(+20)+C14(+40)+C21(+20)+C22(+40)+C23(+20)+C24(+40));
fespace Vh(Th,P2);
Vh uh,vh;
real voltc1=1;
real voltc2=-1;
//1 e -1 volt dirichlet conditions
problem Poisson(uh,vh)=int2d(Th)(dx(uh)*dx(vh)+dy(uh)*dy(vh))+on(C0,uh=0)+on(C1,uh=voltc1)+on(C2,uh=voltc2);
Poisson;
plot(uh,wait=true,fill=true,value=1);
real energy=int1d(Th) ((dx(uh))^2+(dy(uh))^2);
cout<<"Energy (double)"<<endl<<"E = "<<energy<<endl;
cout<<"Capacitance"<<endl<<"C = "<<energy/(voltc1-voltc2)^2<<endl;
运行这段代码,它给了我一个 36.319 F 的电容值。这个值可靠吗?使用最简单的公式和面积和两个板之间的距离结果是完全不同的。这一切有什么问题?

