[Nek5000-users] failed to write derivatives in one file
nek5000-users at lists.mcs.anl.gov
nek5000-users at lists.mcs.anl.gov
Thu Jul 10 13:22:12 CDT 2014
Dear Wei,
I would just user outpost and control the fields that
are written via ifto, ifxyo, ifvo, ifpo, etc.
parameter (l=lx1*ly1*lz1*lelt)
common /mystuff/ u1(l),u2(l),u3(l)
call gradm1(u1,u2,u3,vx)
call outpost(u1,u2,u3,pr,t,'vxd')
call gradm1(u1,u2,u3,vy)
call outpost(u1,u2,u3,pr,t,'vyd')
call gradm1(u1,u2,u3,vz)
call outpost(u1,u2,u3,pr,t,'vzd')
would do the job.
Paul
On Thu, 10 Jul 2014, nek5000-users at lists.mcs.anl.gov wrote:
> Dear all,
>
> I tried to write all the velocity derivatives into one file, so I added some lines of code into the prepost.f, like
>
> subroutine outpost3(v1,v2,v3
> $,v4,v5,v6
> $,v7,v8,v9
> $,vp,vt,name3)
>
> include 'SIZE'
> include 'INPUT'
>
> real v1(1),v2(1),v3(1),vp(1),vt(1)
> real v4(1),v5(1),v6(1)
> real v7(1),v8(1),v9(1)
> character*3 name3
>
>
> itmp=0
> if (ifto) itmp=1
> call outpost4(v1,v2,v3
> $,v4,v5,v6
> $,v7,v8,v9
> $,vp,vt,itmp,name3)
>
> return
> end
> c------------------------------------------
> subroutine outpost4(v1,v2,v3
> $,v4,v5,v6
> $,v7,v8,v9
> $,vp,vt,nfldt,name3)
> character*3 name3
> logical if_save(ldimt)
> c
> ntot1 = nx1*ny1*nz1*nelv
> ntot1t = nx1*ny1*nz1*nelt
> ntot2 = nx2*ny2*nz2*nelv
>
> if(nfldt.gt.ldimt) then
> write(6,*) 'ABORT: outpost data too large (nfldt>ldimt)!'
> call exitt
> endif
>
> c store solution
> call copy(w1,vxx,ntot1)
> call copy(w2,vxy,ntot1)
> call copy(w3,vxz,ntot1)
> call copy(w4,vyx,ntot1)
> call copy(w5,vyy,ntot1)
> call copy(w6,vyz,ntot1)
> call copy(w7,vzx,ntot1)
> call copy(w8,vzy,ntot1)
> call copy(w9,vzz,ntot1)
> call copy(wp,pr,ntot2)
> do i = 1,nfldt
> call copy(wt(1,i),t(1,1,1,1,i),ntot1t)
> enddo
> c swap with data to dump
> call copy(vxx,v1,ntot1)
> call copy(vxy,v2,ntot1)
> call copy(vxz,v3,ntot1)
> call copy(vyx,v4,ntot1)
> call copy(vyy,v6,ntot1)
> call copy(vyz,v6,ntot1)
> call copy(vzx,v7,ntot1)
> call copy(vzy,v8,ntot1)
> call copy(vzz,v9,ntot1)
> call copy(pr,vp,ntot2)
> do i = 1,nfldt
> call copy(t(1,1,1,1,i),vt(1,i),ntot1t)
> enddo
>
> c dump data
> if_save(1) = ifto
> ifto = .false.
> if(nfldt.gt.0) ifto = .true.
> do i = 1,ldimt-1
> if_save(i+1) = ifpsco(i)
> ifpsco(i) = .false.
> if(i+1.le.nfldt) ifpsco(i) = .true.
> enddo
>
> call prepost(.true.,name3)
>
> ifto = if_save(1)
> do i = 1,ldimt-1
> ifpsco(i) = if_save(i+1)
> enddo
>
> c restore solution data
> call copy(vxx,w1,ntot1)
> call copy(vxy,w2,ntot1)
> call copy(vxz,w3,ntot1)
> call copy(vyx,w4,ntot1)
> call copy(vyy,w5,ntot1)
> call copy(vyz,w6,ntot1)
> call copy(vzx,w7,ntot1)
> call copy(vzy,w8,ntot1)
> call copy(vzz,w9,ntot1)
> call copy(pr,wp,ntot2)
> do i = 1,nfldt
> call copy(t(1,1,1,1,i),wt(1,i),ntot1t)
> enddo
>
> return
> end
> c---------------------------
>
> in the userchk file,
> ..................
> call gradm1(vxx,vxy,vxz,vx)
> .....................
> call outpost3(vxx,vxy,vxz
> $,vyx,vyy,vyz
> $,vzx,vzy,vzz
> $,pr,t,'derivate')
> ...................
>
> there are errors, like this:
>
>
>
> /Users/wei/nek5_svn/trunk/nek/prepost.f:1998.34:
>
> subroutine outpost3(v1,v2,v3
> 1
> Error: Unexpected junk in formal argument list at (1)
> /Users/wei/nek5_svn/trunk/nek/prepost.f:1999.8:
>
> $,v4,v5,v6
> 1
> Error: Invalid character in name at (1)
> /Users/wei/nek5_svn/trunk/nek/prepost.f:2001.8:
>
> $,vp,vt,name3)
> 1
> Error: Invalid character in name at (1)
> /Users/wei/nek5_svn/trunk/nek/prepost.f:2017.72:
>
> $,v7,v8,v9
> 1
> Error: Syntax error in argument list at (1)
> /Users/wei/nek5_svn/trunk/nek/prepost.f:2018.8:
>
> $,vp,vt,itmp,name3)
> 1
> Error: Invalid character in name at (1)
> /Users/wei/nek5_svn/trunk/nek/prepost.f:2025.15:
>
> $,v7,v8,v9
> 1
> Error: Unexpected junk in formal argument list at (1)
> /Users/wei/nek5_svn/trunk/nek/prepost.f:2026.8:
>
> $,vp,vt,nfldt,name3)
> 1
> Error: Invalid character in name at (1)
> SIZE:5.72:
> Included at /Users/wei/nek5_svn/trunk/nek/prepost.f:2003:
>
> parameter (ldim=3)
> 1
> SIZE:5.72:
> Included at /Users/wei/nek5_svn/trunk/nek/prepost.f:2028:
>
> parameter (ldim=3)
> 2
> Error: Two main PROGRAMs at (1) and (2)
> make: *** [obj/prepost.o] Error 1
>
> so what should I do?
> Thanks,
> Wei
> _______________________________________________
> Nek5000-users mailing list
> Nek5000-users at lists.mcs.anl.gov
> https://lists.mcs.anl.gov/mailman/listinfo/nek5000-users
>
More information about the Nek5000-users
mailing list