Plot COMSOL multiphysics PINEM simulation

I wrote a code to plot photon-induced near field electron microscopy (PINEM) coupling constant simulation using COMSOL multiphysics. The code is attached below:

function readcomsol(path1,fname1)
    string path1,fname1
    variable a,i,t,j,k
    string str,fword,nline,nbnds
    Open/R a path1  + fname1
    for(i=0;i<4;i++)
         FReadLine a, str
     endfor
     FReadLine a, str
     i=0
     t=0
     do
         fword=stringfromlist(i,str," ")
         if (stringmatch(fword,"")!=1)
            t=t+1
            if(t==3)
                nline=fword
            endif
         endif
         i=i+1
     while(t<3)
     make/d/n=(str2num(nline),4) w
     for(i=0;i<3;i++)
         FReadLine a, str
     endfor
     for(i=0;i<str2num(nline);i++)
             FReadLine a, str
              k=0
              t=0
              do
                  fword=stringfromlist(k,str," ")
                  if (stringmatch(fword,"")!=1)
                      t=t+1
                      if(t==1)
                          w[i][0]=str2num(fword)
                      endif
                      if(t==2)
                          w[i][1]=str2num(fword)
                      endif
                      if(t==3)
                          w[i][2]=str2num(fword)
                      endif
                      if(t==4)
                          w[i][3]=str2num(fword)
                      endif
                  endif
                  k=k+1
              while(t<4)
     endfor
     close a
     duplicate/o/rmd=[0,str2num(nline)-1][0,0] w,twave
     make/n=(str2num(nline))/d/o xwave=twave
     duplicate/o/rmd=[0,str2num(nline)-1][1,1] w,twave
     make/n=(str2num(nline))/d/o ywave=twave
     duplicate/o/rmd=[0,str2num(nline)-1][2,2] w,twave
     make/n=(str2num(nline))/d/o zwave=twave
     duplicate/o/rmd=[0,str2num(nline)-1][3,3] w,twave
     make/n=(str2num(nline))/d/o fwave=twave
end

Function plotcomsol(pixels,w,plane)
   variable pixels
   wave w
   string plane

    Variable xMin, xMax, yMin, yMax
    Make /O /N=(DimSize(w,0)) tempWave=0
   
    if(stringmatch(plane,"xy"))
      tempWave = w[p][0]
      WaveStats /Q tempWave
      xMin = V_min
      xMax = V_max
      tempWave = w[p][1]
      WaveStats /Q tempWave
      yMin = V_min
      yMax = V_max
    endif
    if(stringmatch(plane,"yz"))
      tempWave = w[p][1]
      WaveStats /Q tempWave
      xMin = V_min
      xMax = V_max
      tempWave = w[p][2]
      WaveStats /Q tempWave
      yMin = V_min
      yMax = V_max
    endif
    if(stringmatch(plane,"xz"))
      tempWave = w[p][0]
      WaveStats /Q tempWave
      xMin = V_min
      xMax = V_max
      tempWave = w[p][2]
      WaveStats /Q tempWave
      yMin = V_min
      yMax = V_max
    endif
   
    // Determine the final size for the map
    Variable ratio = (xMax - xMin)/(yMax - yMin)
    Variable mapSizeX, mapSizeY, delta,deltai
    if (ratio > 1)
        mapSizeX = pixels
        mapSizeY = floor(pixels/ratio)
        delta = (xMax - xMin)/(pixels - 1)
    else
        mapSizeX = floor(pixels*ratio)
        mapSizeY = pixels
        delta = (yMax - yMin)/(pixels - 1)
    endif
   
    make/d/o /N=(mapSizeX, mapSizeY) map
    SetScale /P x xMin, delta, map
    SetScale /P y yMin, delta, map
   map=0
    duplicate/o map,BlueJacobian

    Variable i,j,pee, qew,u,v
        for (j=0; j<DimSize(w,0); j+=1)
           if(stringmatch(plane,"xy"))
              pee = round((w[j][0] - DimOffset(map,0))/DimDelta(map,0))
              qew = round((w[j][1] - DimOffset(map,1))/DimDelta(map,1))
          endif
          if(stringmatch(plane,"yz"))
              pee = round((w[j][1] - DimOffset(map,0))/DimDelta(map,0))
              qew = round((w[j][2] - DimOffset(map,1))/DimDelta(map,1))
          endif
          if(stringmatch(plane,"xz"))
              pee = round((w[j][0] - DimOffset(map,0))/DimDelta(map,0))
              qew = round((w[j][2] - DimOffset(map,1))/DimDelta(map,1))
          endif        
            if (pee >= 0 && pee < DimSize(map,0) && qew >= 0 && qew < DimSize(map,1))
                map[pee][qew] += w[j][3]
                BlueJacobian[pee][qew] += 1
            endif
        endfor
        for(u=0;u<DimSize(map,0);u+=1)
            for(v=0;v<DimSize(map,1);v+=1)
                map[u][v] /= max(1,BlueJacobian[u][v])
            endfor
        endfor
  display
  appendimage map
  ModifyImage map ctab= {*,*,ColdWarm,0}
  for(i=0;i<dimsize(map,0);i++)
    for(j=0;j<dimsize(map,1);j++)
      if(i==0&&j==0)
            map[i][j]=map[i][j]==0 ? (map[i+1][j]+map[i][j+1])/2 : map[i][j]
      elseif(i==0&&j==(dimsize(map,1)-1))
            map[i][j]=map[i][j]==0 ? (map[i][j-1]+map[i+1][j])/2 : map[i][j]
      elseif(i==(dimsize(map,0)-1)&&j==0)
            map[i][j]=map[i][j]==0 ? (map[i][j+1]+map[i-1][j])/2 : map[i][j]
      elseif(i==(dimsize(map,0)-1)&&j==(dimsize(map,1)-1))
            map[i][j]=map[i][j]==0 ? (map[i-1][j]+map[i][j-1])/2 : map[i][j]
      elseif(i==0&&j!=(dimsize(map,1)-1)&&j!=0)
            map[i][j]=map[i][j]==0 ? (map[i][j-1]+map[i+1][j]+map[i][j+1])/3 : map[i][j]
      elseif(j==0&&i!=(dimsize(map,1)-1)&&i!=0)
            map[i][j]=map[i][j]==0 ? (map[i-1][j]+map[i+1][j]+map[i][j+1])/3 : map[i][j]
      elseif(i==(dimsize(map,0)-1)&&j!=(dimsize(map,1)-1)&&j!=0)
            map[i][j]=map[i][j]==0 ? (map[i][j-1]+map[i-1][j]+map[i][j+1])/3 : map[i][j]
      elseif(j==(dimsize(map,0)-1)&&i!=(dimsize(map,1)-1)&&i!=0)
            map[i][j]=map[i][j]==0 ? (map[i][j-1]+map[i-1][j]+map[i+1][j])/3 : map[i][j]
      //else      
      //      map[i][j]=map[i][j]==0 ? (map[i-1][j]+map[i][j-1]+map[i+1][j]+map[i][j+1])/4 : map[i][j]
      endif
    endfor
 endfor
//  make/d/o/n=(mapsizex/2,mapsizey/2) mapc
//  SetScale /P x xMin, 2*delta, mapc
//  SetScale /P y yMin, 2*delta, mapc
//  mapc=0
//  for(i=0;i<dimsize(mapc,0);i++)
//    for(j=0;j<dimsize(mapc,1);j++)
//        mapc[i][j]+=map[2*i][2*j]
//        mapc[i][j]+=map[2*i+1][2*j]
//        mapc[i][j]+=map[2*i][2*j+1]
//        mapc[i][j]+=map[2*i+1][2*j+1]
//    endfor
//  endfor
//  display
//  appendimage mapc
//  ModifyImage mapc ctab= {*,*,ColdWarm,0}
End

 

This does not seem like a question. Maybe you want to post this into the Code Snippets section instead?

I see. I have never posted in Code Snippets before. Next time I will consider it. Thank you.