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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
AAA

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

#1

投稿記事 by AAA » 13年前

こんにちは。マクスウェルの応力法による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は勉強中なんですが、教えていただきないでしょうか。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#2

投稿記事 by softya(ソフト屋) » 13年前

FORTRANはすっかり忘れていますが、プログラム全体を見るとなにかわかるかも知れません。
この
Fx=0
Fy=0
はマズイと思うんですけど、そのエラーの原因とも思えません。
あと整数型と実数型が混在してますが狙ってのことでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

かずま

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

#3

投稿記事 by かずま » 13年前

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

閉鎖

“C言語何でも質問掲示板” へ戻る