ページ 11

マクスウェルの応力による2次元の電磁力計算をfortranでかく

Posted: 2012年12月20日(木) 19:48
by AAA
こんにちは。マクスウェルの応力法による2次元の電磁力計算
http://computation.cside.com/magnh/EMFC2D.html   (式2)
をfortranで書きたいと思って下のように
        ***************

codeタグを追加しました。 by softya(ソフト屋)

コード:

      DO 470 I=1,NPM
      k1=MATM(2)
c
        Fx=0
	Fy=0
c
c    法線ベクトル
	nx=(y(i)-y(kk))/HL
	ny=(X(I)-X(kk))/HL
c	if(mat(i).eq.2)
c   s2は磁石の面積 
c	s2=10
c   p は透磁率
c       AA1=10/PEAM
c	a2=10/peam
c  Fx-x方向の電磁力、Fy-y方向の電磁力
c      DO 470 I=1,np
c	if(mat.eq.2)
c      BX(I)=BX(I) - FMASSM(K)*(a(I)-a(K))*WyJ/FROUM(I)
c      BY(I)=BY(I) + FMASSM(K)*(a(I)-a(K))*WxJ/FROUM(I)
      Fx(i)=((Bx(i)**2 - 0.5*(BB(i)**2))*nx+Bx(i)*By(i)*ny)*10/P
      Fy(i)=(By(i)*Bx(i)*nx+(By(i)*By(i)-0.5*BB(i)*BB(i))*ny)*10/P
	Fxy=sqrt(FX(I)**2 + FY(I)**2)
  470 CONTINUE
  *********************
書きましたが、
Fx(i)=((Bx(i)**2 - 0.5*(BB(i)**2))*nx+Bx(i)*By(i)*ny)*10/P
Fy(i)=(By(i)*Bx(i)*nx+(By(i)*By(i)-0.5*BB(i)*BB(i))*ny)*10/P
ここでは  
Incompatible ranks 0 and 1 in assignment at (1)
のようなエラーが出てしまったので、どこが間違いたのか。fortranは勉強中なんですが、教えていただきないでしょうか。

Re: マクスウェルの応力による2次元の電磁力計算をfortranでかく

Posted: 2012年12月20日(木) 21:44
by softya(ソフト屋)
FORTRANはすっかり忘れていますが、プログラム全体を見るとなにかわかるかも知れません。
この
Fx=0
Fy=0
はマズイと思うんですけど、そのエラーの原因とも思えません。
あと整数型と実数型が混在してますが狙ってのことでしょうか?

Re: マクスウェルの応力による2次元の電磁力計算をfortranでかく

Posted: 2012年12月22日(土) 12:54
by かずま
4行目 Fx = 0 --- Fx は単純変数、すなわち rank 0
21行目 Fx(i) = --- Fx は 1次元配列、すなわち rank 1
仮に、Fx(i, j) があればそれは 2次元配列で、 rank2
ということではないでしょうか?
Fx の宣言はどうなっていますか?