Message Boards Message Boards

0
|
3064 Views
|
2 Replies
|
0 Total Likes
View groups...
Share
Share this post:

Use ParallelDo instead of two For loops?

Posted 7 years ago

I have changed my code to use ParallelDo instead of two For loops. The results I get with the parallel approach do not match the original results. What may be some possible issues? I am a relatively new user to Mathematica.

Dwight Swett

POSTED BY: Dwight Swett
2 Replies

Here is the section of the code where I encountered problems:

cAmn = Table[0, {Nr}, {Nz}];
cBmn = Table[0, {Nr}, {Nz}];
cEmn = Table[0, {Nr}, {Nz}];
cFmn = Table[0, {Nr}, {Nz}];
camn = Table[0, {Nr}, {Nz}];
cbmn = Table[0, {Nr}, {Nz}];
cumn = Table[0, {Nr}, {Nz}];
cvmn = Table[0, {Nr}, {Nz}];
saPi = Cosh[Zd] + 1;

ParallelDo[
  sig1mn = -32 I M mnu[[m]] n Sinh[Pi mnu[[m]]] Cos[
     n Zd] BesselK[I mnu[[m]], 
      n saPi Pi/
        2]/(rd Pi^3 saPi^(3/2) (2 n (Za - Zb) + Sin[2 n Za] - 
         Sin[2 n Zb]));
  amn = -I Pi lmd[[m]] sig1mn/ka;
  sig2mn = -32 I M mnu[[m]] n Sinh[Pi mnu[[m]]] Sin[
     n Zd] BesselK[I mnu[[m]], 
      n saPi Pi/
        2]/(rd Pi^3 saPi^(3/2) (2 n (Za - Zb) - Sin[2 n Za] + 
         Sin[2 n Zb]));
  bmn = -I Pi lmd[[m]] sig2mn/ka;
  Mmn = (amn Sin[n Za] - bmn Cos[n Za])/Cos[n Za];

  umn = 32 I M lmd[[m]] mnu[[m]] n Sinh[Pi mnu[[m]]] Cos[
     n Zd] BesselK[I mnu[[m]], 
      n saPi Pi/
        2]/(rd Pi^3 saPi^(3/2) (2 n (Za - Zb) + Sin[2 n Za] - 
         Sin[2 n Zb]));
  vmn = 32 I M lmd[[m]] mnu[[m]] n Sinh[Pi mnu[[m]]] Sin[
     n Zd] BesselK[I mnu[[m]], 
      n saPi Pi/
        2]/(rd Pi^3 saPi^(3/2) (2 n (Za - Zb) - Sin[2 n Za] + 
         Sin[2 n Zb]));

  q11 = mua (Tan[n Za] Cos[n Zb] - Sin[n Zb]);
  q12 = mub Sin[n Zb];
  q13 = -mub Cos[n Zb];
  f1 = mua (amn Sin[n Zb] - bmn Cos[n Zb] - Mmn Cos[n Zb]);

  q21 = - (Tan[n Za] Sin[n Zb] + Cos[n Zb]);
  q22 = Cos[n Zb];
  q23 = Sin[n Zb];
  f2 = amn Cos[n Zb] + bmn Sin[n Zb] + Mmn Sin[n Zb];

  q31 = -(kasq - lmd[[m]]^2) (Tan[n Za] Sin[n Zb] + Cos[n Zb]);
  q32 = (kbsq - lmd[[m]]^2) Cos[n Zb];
  q33 = (kbsq - lmd[[m]]^2) Sin[n Zb];
  f3 = (kasq - lmd[[m]]^2) (amn Cos[n Zb] + bmn Sin[n Zb] + 
       Mmn Sin[n Zb]) - (umn Cos[n Zb] + vmn Sin[n Zb]);

  cDel = q11 (q22 q33 - q23 q32) + q12 (q23 q31 - q33 q21) + 
    q13 (q32 q21 - q22 q31);
  cAmn[[n, m]] = 
   1/cDel (f1 (q22 q33 - q23 q32) + f2 (q13 q32 - q33 q12) + 
      f3 (q12 q23 - q13 q22));
  cBmn[[n, m]] = Mmn + cAmn[[n, m]] Tan[n Za];
  camn[[n, m]] = amn;
  cbmn[[n, m]] = bmn;
  cumn[[n, m]] = umn;
  cvmn[[n, m]] = vmn;
  , {n, 1, Nr}, {m, 1, Nz}, DistributedContexts -> Automatic];
POSTED BY: Dwight Swett

Welcome to Wolfram Community! Please make sure you know the rules: https://wolfr.am/READ-1ST

Please EDIT your post and add minimal example of code reflecting your issue.

POSTED BY: Moderation Team
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract