Compilation error nek5000+ppiclF

64 views
Skip to first unread message

Nadeem Malik

unread,
Mar 22, 2021, 10:24:15 PM3/22/21
to Nek5000

Hi Neks,

I have tried to combine the Nek5000-ppiclF example with the e3q example (2D case); however have run in to compilation errors -- (maybe cross-definition?). I have identified
"#6236: A specification statement cannot appear in the executable section; real rphip(8,8,1,lelt)" as the culprit.

(Note that the ppiclF example compiled and ran before I had combined it with e3q.)

....
....
mpif77  -O2 -fpp -r8 -fpconstant   -DMPI -DUNDERSCORE -DGLOBAL_LONG_LONG -DTIMER -I/work/06396/tg856952/stampede2/LocalCodeDir/TestCaseDir -I/work/06396/tg856952/stampede2/Nek5000/core -I./ -I /work/06396/tg856952/stampede2/Nek5000/core/experimental  -c /work/06396/tg856952/stampede2/LocalCodeDir/TestCaseDir/uniform.f
/work/06396/tg856952/stampede2/LocalCodeDir/TestCaseDir/uniform.f(65): error #6236: A specification statement cannot appear in the executable section.
      real rphip(8,8,1,lelt)
------^
/work/06396/tg856952/stampede2/Nek5000/core/GEOM(4): error #6417: The dimensions of this array have been defined more than once.   [XM1]
      real xm1(lx1,ly1,lz1,lelt)
-----------^
/work/06396/tg856952/stampede2/Nek5000/core/GEOM(5): error #6417: The dimensions of this array have been defined more than once.   [YM1]
     $    ,ym1(lx1,ly1,lz1,lelt)
-----------^
/work/06396/tg856952/stampede2/Nek5000/core/GEOM(6): error #6417: The dimensions of this array have been defined more than once.   [ZM1]
     $    ,zm1(lx1,ly1,lz1,lelt)
-----------^
....
....


Here  is the subroutine userchk  in uniform.usr:

c-----------------------------------------------------------------------
      subroutine userchk
      include 'SIZE'
      include 'TOTAL'

      common /exacu/ ue(lx1,ly1,lz1,lelt),ve(lx1,ly1,lz1,lelt)
      common /exacp/ pe(lx2,ly2,lz2,lelt)
      common /exacd/ ud(lx1,ly1,lz1,lelt),vd(lx1,ly1,lz1,lelt)
     $              ,pd(lx2,ly2,lz2,lelt)
      common /mybc/ u_mybc(lx1,ly1,lz1,lelt),v_mybc(lx1,ly1,lz1,lelt)

      ifield = 1  ! for outpost

      real rphip(PPICLF_LEX,PPICLF_LEY,PPICLF_LEZ,lelt)

      n    = nx1*ny1*nz1*nelv
      n2   = nx2*ny2*nz2*nelv
      visc = param(2)
      u0   = 1.0 !param(96)
      v0   = 0.3 !param(97)

      call exact  (ue,ve,xm1,ym1,n,time,visc,u0,v0)
      call exactp (pe,xm2,ym2,n2,time,visc,u0,v0)

      if (istep.eq.0) then        !  Reset velocity & pressure to eliminate
         if(nid.eq.0) write(6,*) 'setting vx,vy,pr ', istep, time, visc
         call copy (vx,ue,n)      !  start-up contributions to
         call copy (vy,ve,n)      !  temporal-accuracy behavior.
         call copy (pr,pe,n2)
      endif

      if (istep.eq.0) call outpost(ue,ve,vx,pe,t,'   ')

      call sub3   (ud,ue,vx,n)
      call sub3   (vd,ve,vy,n)
      call sub3   (pd,pe,pr,n2)

      if (istep.eq.nsteps) call outpost(ud,vd,vx,pd,t,'err')

      umx = glamax(vx,n)
      vmx = glamax(vy,n)
      pmx = glamax(pr,n2)
      uex = glamax(ue,n)
      vex = glamax(ve,n)
      pex = glamax(pe,n2)
      udx = glamax(ud,n)
      vdx = glamax(vd,n)
      pdx = glamax(pd,n2)


! PARTICLES:
      do ie=1,nelt
      do iz=1,PPICLF_LEZ
      do iy=1,PPICLF_LEY
      do ix=1,PPICLF_LEX
         call ppiclf_solve_GetProFldIJKEF(ix,iy,iz,ie
     >                              ,PPICLF_P_JPHIP,rphip(ix,iy,iz,ie))
      enddo
      enddo
      enddo
      enddo

      ! Set divergence equal to -1/phi_f * D/Dt( phi_f )
      call qtl_pvol(usrdiv,rphip)
      ! Set divergence at outflow elements so that characteristics go out
      call fill_div(usrdiv)

      ! Interpolate fields to particle positions
      call ppiclf_solve_InterpFieldUser(PPICLF_R_JPHIP
     >                          ,rphip(1,1,1,1))
      call ppiclf_solve_InterpFieldUser(PPICLF_R_JUX
     >                          ,vx(1,1,1,1))
      call ppiclf_solve_InterpFieldUser(PPICLF_R_JUY
     >                          ,vy(1,1,1,1))

      ! Integrate particles
      call ppiclf_solve_IntegrateParticle(istep ,
     >                                    iostep,
     >                                    dt    ,
     >                                    time  )

      if (mod(istep,iostep) .eq. 0)
     >   call outpost2(rphip
     >                ,rphip
     >                ,rphip
     >                ,rphip
     >                ,rphip,1,'ptw')

      return
      end


Can someone advise please?

Thanks
Nadeem
Reply all
Reply to author
Forward
0 new messages