Nek5000
SEM for Incompressible NS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
Functions/Subroutines
prepost.F90 File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine prepost (ifdoin, prefin)
 Store results for later postprocessing. Recent updates: p65 now indicates the number of parallel i/o files; iff p66 >= 6. More...
 
subroutine prepost_map (isave, pm1)
 Store results for later postprocessing. More...
 
subroutine outfld (prefix, pm1)
 output .fld file More...
 
subroutine outhis (ifhis, pm1)
 output time history info. More...
 
subroutine copyx4 (a, b, n)
 
subroutine copy4r (a, b, n)
 
integer function i_find_prefix (prefix, imax)
 
subroutine mfo_outfld (prefix, pm1)
 mult-file output More...
 
subroutine io_init
 
subroutine mfo_open_files (prefix, ierr)
 
subroutine restart_nfld (nfld, prefix)
 Check for Restart option and return proper nfld value. Also, convenient spot to explain restart strategy. The approach is as follows: Prefix rs4 would indicate 4 files in the restart cycle. This would be normal usage for velocity only, with checkpoints taking place in synch with standard io. The resultant restart sequence might look like: blah.fld09 Step 0 rs4blah.fld01 1 rs4blah.fld02 2 which implies that fld09 would be used as the i.c. in the restart, rs4blah.fld01 would overwrite the solution at Step 1, and rs4blah.fld02 would overwrite Step 2. Net result is that Steps 0-2 of the restart session have solutions identical to those computed in the prior run. (It's important that both runs use the same dt in this case.) Another equally possible restart sequence would be: blah.fld10 Step 0 rs4blah.fld03 1 rs4blah.fld04 2 Why the 3 & 4 ? If one were to use only 1 & 2, there is a risk that the system crashes while writing, say, rs4blah.fld01, in which case the restart is compromised – very frustrating at the end of a run that has been queued for a week. By providing a toggled sequence in pairs such as (1,2), (3,4), (1,2), ... ensures that one always has at least one complete restart sequence. In the example above, the following files would be written, in order: : : blah.fld09 rs4blah.fld01 rs4blah.fld02 blah.fld10 rs4blah.fld03 rs4blah.fld04 blah.fld11 rs4blah.fld01 (overwriting existing rs4blah.fld01) rs4blah.fld02 ( " " " .fld02) blah.fld12 rs4blah.fld03 ( etc. ) rs4blah.fld04 : : Other strategies are possible, according to taste. Here is a data-intensive one: MHD + double-precision restart, but single-precision std files In this case, single-precision files are kept as the running file sequence (i.e., for later post-processing) but dbl-prec. is required for restart. A total of 12 temporary restart files must be saved: (3 for velocity, 3 for B-field) x 2 for redundancy. This is expressed, using hexadecimal notation (123456789abc...), as prefix='rsc'. More...
 
subroutine outpost (v1, v2, v3, vp, vt, name3)
 
subroutine outpost2 (v1, v2, v3, vp, vt, nfldt, name3)
 
subroutine mfo_mdatav (u, v, w, nel)
 
subroutine mfo_mdatas (u, nel)
 
subroutine mfo_outs (u, nel, mx, my, mz)
 output a scalar field More...
 
subroutine mfo_outv (u, v, w, nel, mx, my, mz)
 output a vector field More...
 
subroutine mfo_write_hdr
 write hdr, byte key, els. More...
 

Function/Subroutine Documentation

subroutine copy4r ( real(dp), dimension(*)  a,
real(r4), dimension(*)  b,
integer  n 
)

Definition at line 644 of file prepost.F90.

Referenced by mapab4r(), mapdmp(), io::mfo_read_scalar(), and io::mfo_read_vector().

+ Here is the caller graph for this function:

subroutine copyx4 ( real(r4), dimension(n), intent(out a,
real(dp), dimension(n), intent(in)  b,
integer, intent(in)  n 
)

Definition at line 630 of file prepost.F90.

Referenced by mfo_outs(), and mfo_outv().

+ Here is the caller graph for this function:

integer function i_find_prefix ( character(3)  prefix,
integer  imax 
)

Definition at line 657 of file prepost.F90.

References exitt().

Referenced by outfld().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

subroutine io_init ( )

Definition at line 903 of file prepost.F90.

References exitt(), nek_comm_io(), and np.

Referenced by nek_init().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

subroutine mfo_mdatas ( real(dp), dimension(lx1*ly1*lz1,*), intent(in)  u,
integer, intent(in)  nel 
)

Definition at line 1346 of file prepost.F90.

References byte_write, byte_write_mpi(), crecv(), csend(), err_chk(), and nekgsync().

Referenced by mfo_outfld().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

subroutine mfo_mdatav ( real(dp), dimension(lx1*ly1*lz1,*), intent(in)  u,
real(dp), dimension(lx1*ly1*lz1,*), intent(in)  v,
real(dp), dimension(lx1*ly1*lz1,*), intent(in)  w,
integer, intent(in)  nel 
)

Definition at line 1253 of file prepost.F90.

References byte_write, byte_write_mpi(), crecv(), csend(), err_chk(), and nekgsync().

Referenced by mfo_outfld().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

subroutine mfo_open_files ( character(3)  prefix,
integer  ierr 
)

Definition at line 971 of file prepost.F90.

References blank(), chcopy(), string::ltrunc(), mbyte_open(), and restart_nfld().

Referenced by mfo_outfld().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

subroutine mfo_outfld ( character(3), intent(in)  prefix,
real(dp), dimension (lx1,ly1,lz1,lelv), intent(in)  pm1 
)

mult-file output

Definition at line 695 of file prepost.F90.

References bcast(), byte_close, byte_close_mpi(), byte_set_view(), ctimer::dnekclock_sync(), err_chk(), mfo_mdatas(), mfo_mdatav(), mfo_open_files(), mfo_outs(), mfo_outv(), and mfo_write_hdr().

Referenced by outfld().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

subroutine mfo_outs ( real(dp), dimension(mx,my,mz,1), intent(in)  u,
integer, intent(in)  nel,
integer, intent(in)  mx,
integer, intent(in)  my,
integer, intent(in)  mz 
)

output a scalar field

Definition at line 1424 of file prepost.F90.

References byte_write, copy(), copyx4(), crecv(), csend(), err_chk(), exitt(), and nekgsync().

Referenced by mfo_outfld().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

subroutine mfo_outv ( real(dp), dimension(mx*my*mz,*), intent(in)  u,
real(dp), dimension(mx*my*mz,*), intent(in)  v,
real(dp), dimension(mx*my*mz,*), intent(in)  w,
integer  nel,
integer, intent(in)  mx,
integer, intent(in)  my,
integer, intent(in)  mz 
)

output a vector field

Definition at line 1519 of file prepost.F90.

References byte_write, copy(), copyx4(), crecv(), csend(), err_chk(), exitt(), and nekgsync().

Referenced by mfo_outfld().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

subroutine mfo_write_hdr ( )

write hdr, byte key, els.

Definition at line 1642 of file prepost.F90.

References blank(), byte_set_view(), byte_write, byte_write_mpi(), crecv(), csend(), err_chk(), get_bytesw_write, parallel::lglel(), nekgsync(), and set_bytesw_write.

Referenced by mfo_outfld().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

subroutine outfld ( character(3), intent(in)  prefix,
real(dp), dimension (lx1,ly1,lz1,lelv), intent(in)  pm1 
)

output .fld file

Definition at line 248 of file prepost.F90.

References bcast(), blank(), byte_open, chcopy(), crecv(), csend(), err_chk(), parallel::gllel(), parallel::gllnid(), i, i_find_prefix(), id, string::ltrunc(), mfo_outfld(), mod1(), and nekgsync().

Referenced by prepost().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

subroutine outhis ( logical  ifhis,
real(dp), dimension (lx1,ly1,lz1,lelv)  pm1 
)

output time history info.

Definition at line 429 of file prepost.F90.

References crecv(), csend(), parallel::gllel(), parallel::gllnid(), and np.

Referenced by prepost().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

subroutine outpost ( real(dp), dimension(*)  v1,
real(dp), dimension(*)  v2,
real(dp), dimension(*)  v3,
real(dp), dimension(*)  vp,
real(dp), dimension(*)  vt,
character(3)  name3 
)

Definition at line 1152 of file prepost.F90.

References outpost2().

Referenced by glmapm1().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

subroutine outpost2 ( real(dp), dimension(1)  v1,
real(dp), dimension(1)  v2,
real(dp), dimension(1)  v3,
real(dp), dimension(1)  vp,
real(dp), dimension(ltot1,1)  vt,
integer  nfldt,
character(3)  name3 
)

Definition at line 1169 of file prepost.F90.

References copy(), ctimer::dnekclock(), exitt(), and prepost().

Referenced by outpost().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

subroutine prepost ( logical  ifdoin,
character(3)  prefin 
)

Store results for later postprocessing. Recent updates: p65 now indicates the number of parallel i/o files; iff p66 >= 6.

Definition at line 5 of file prepost.F90.

References ctimer::dnekclock(), err_chk(), gop(), outfld(), outhis(), and prepost_map().

Referenced by nek_solve(), and outpost2().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

subroutine prepost_map ( integer, intent(in)  isave,
real(dp), dimension (lx1,ly1,lz1,lelv), intent(out pm1 
)

Store results for later postprocessing.

Definition at line 130 of file prepost.F90.

References copy(), and mxm().

Referenced by prepost().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

subroutine restart_nfld ( integer  nfld,
character(3)  prefix 
)

Check for Restart option and return proper nfld value. Also, convenient spot to explain restart strategy. The approach is as follows: Prefix rs4 would indicate 4 files in the restart cycle. This would be normal usage for velocity only, with checkpoints taking place in synch with standard io. The resultant restart sequence might look like: blah.fld09 Step 0 rs4blah.fld01 1 rs4blah.fld02 2 which implies that fld09 would be used as the i.c. in the restart, rs4blah.fld01 would overwrite the solution at Step 1, and rs4blah.fld02 would overwrite Step 2. Net result is that Steps 0-2 of the restart session have solutions identical to those computed in the prior run. (It's important that both runs use the same dt in this case.) Another equally possible restart sequence would be: blah.fld10 Step 0 rs4blah.fld03 1 rs4blah.fld04 2 Why the 3 & 4 ? If one were to use only 1 & 2, there is a risk that the system crashes while writing, say, rs4blah.fld01, in which case the restart is compromised – very frustrating at the end of a run that has been queued for a week. By providing a toggled sequence in pairs such as (1,2), (3,4), (1,2), ... ensures that one always has at least one complete restart sequence. In the example above, the following files would be written, in order: : : blah.fld09 rs4blah.fld01 rs4blah.fld02 blah.fld10 rs4blah.fld03 rs4blah.fld04 blah.fld11 rs4blah.fld01 (overwriting existing rs4blah.fld01) rs4blah.fld02 ( " " " .fld02) blah.fld12 rs4blah.fld03 ( etc. ) rs4blah.fld04 : : Other strategies are possible, according to taste. Here is a data-intensive one: MHD + double-precision restart, but single-precision std files In this case, single-precision files are kept as the running file sequence (i.e., for later post-processing) but dbl-prec. is required for restart. A total of 12 temporary restart files must be saved: (3 for velocity, 3 for B-field) x 2 for redundancy. This is expressed, using hexadecimal notation (123456789abc...), as prefix='rsc'.

Definition at line 1125 of file prepost.F90.

References string::indx1(), and string::ltrunc().

Referenced by mfo_open_files().

+ Here is the call graph for this function:

+ Here is the caller graph for this function: