17 call bcast(ierr,isize)
18 if(ierr .ne. 0)
call exitt
101 restol(1+i) = param(22)
107 iftmsh(1+i) = .false.
123 iffilter(1) = .false.
125 iffilter(i+1) = .false.
131 ifdgfld(i+1) = .false.
150 ifprojfld(0) = .false.
151 ifprojfld(1) = .false.
153 ifprojfld(1+i) = .false.
195 call izero(matype,16*ldimt1)
196 call rzero(cpgrp ,48*ldimt1)
198 call blank (initc,15*132)
221 character*132 c_out,txt, txt2
224 if(ierr .ne. 0)
return
227 if(ierr .ne. 0)
return
230 call finiparser_getdbl(d_out,
'general:loglevel',ifnd)
231 if(ifnd .eq. 1) loglevel = d_out
233 call finiparser_getdbl(d_out,
'general:optlevel',ifnd)
234 if(ifnd .eq. 1) optlevel = d_out
236 call finiparser_getstring(c_out,
'general:stopAt',ifnd)
237 if (ifnd .eq. 1)
then
238 call capit(c_out,132)
239 if (index(c_out,
'ENDTIME') .eq. 1)
then
240 call finiparser_getdbl(d_out,
'general:endTime',ifnd)
241 if (ifnd .eq. 1)
then
244 write(6,*)
'general:endTime'
245 write(6,*)
'is required for general:stopAt = endTime!'
248 else if (index(c_out,
'NUMSTEPS') .eq. 1)
then
249 call finiparser_getdbl(d_out,
'general:numSteps',ifnd)
250 if (ifnd .eq. 1)
then
253 write(6,*)
'general:numSteps'
254 write(6,*)
'is required for general:stopAt = numSteps!'
258 write(6,*)
'value: ',trim(c_out)
259 write(6,*)
'is invalid for general:stopAt!'
263 call finiparser_getdbl(d_out,
'general:numSteps',ifnd)
264 if (ifnd .eq. 1)
then
269 call finiparser_getdbl(d_out,
'general:dt',ifnd)
270 if (ifnd .eq. 1)
then
274 param(12) = -1*abs(param(12))
275 call finiparser_getbool(i_out,
'general:variableDt',ifnd)
276 if (ifnd .eq. 1)
then
277 if (i_out .eq. 1)
then
278 param(12) = abs(param(12))
279 call finiparser_getdbl(d_out,
'general:targetCFL',ifnd)
280 if (ifnd .eq. 1)
then
283 write(6,*)
'general:targetCFL'
284 write(6,*)
'is required for general:variableDt!'
290 call finiparser_getdbl(d_out,
'general:writeInterval',ifnd)
291 if (ifnd .eq. 1) param(15) = d_out
292 call finiparser_getstring(c_out,
'general:writeControl',ifnd)
293 if (ifnd .eq. 1)
then
294 call capit(c_out,132)
295 if (index(c_out,
'RUNTIME') .eq. 1)
then
298 else if (index(c_out,
'TIMESTEP') .eq. 1)
then
301 else if (index(c_out,
'ELAPSEDTIME') .eq. 1)
then
306 write(6,*)
'value: ',trim(c_out)
307 write(6,*)
'is invalid for general:writeControl!'
312 call finiparser_getdbl(d_out,
'pressure:residualTol',ifnd)
313 if(ifnd .eq. 1) param(21) = d_out
314 call finiparser_getdbl(d_out,
'velocity:residualTol',ifnd)
329 write(txt,
"('scalar',i2.2)") i
331 if (ifnd .eq. 1) j = j + 1
333 if (j.gt.ldimt-1)
then
334 write(6,*)
'found more scalars than specified in SIZE!'
340 write(txt,
"('scalar',i2.2)") i
342 if (ifnd .eq. 1)
then
359 write(txt,
"('scalar',i2.2)") i-1
362 call finiparser_getstring(c_out,trim(txt)//
':solver',ifnd)
363 call capit(c_out,132)
365 if (index(c_out,
'CVODE') .eq. 1)
then
367 call finiparser_getdbl(d_out,trim(txt)//
':absoluteTol',ifnd)
368 if (ifnd .eq. 1)
then
371 write(6,*) trim(txt) //
':absoluteTol'
372 write(6,*)
'is required for ',trim(txt)//
':solver = CVODE'
375 else if (index(c_out,
'HELM') .eq. 1)
then
377 else if (index(c_out,
'NONE') .eq. 1)
then
380 write(6,*)
'value: ',trim(c_out)
381 write(6,*)
'is invalid for ',trim(txt)//
':solver!'
385 call finiparser_getdbl(d_out,trim(txt)//
':residualTol',ifnd)
386 if (ifnd .eq. 1)
then
390 call finiparser_getbool(i_out,trim(txt)//
':residualProj',ifnd)
391 if (ifnd .eq. 1)
then
392 ifprojfld(i+1) = .false.
393 if(i_out .eq. 1) ifprojfld(i+1) = .true.
398 call finiparser_getdbl(d_out,
'cvode:absoluteTol',ifnd)
399 if(ifnd .eq. 1) param(162) = d_out
400 call finiparser_getdbl(d_out,
'cvode:relativeTol',ifnd)
401 if(ifnd .eq. 1) param(163) = d_out
402 call finiparser_getdbl(d_out,
'cvode:dtmax',ifnd)
403 if(ifnd .eq. 1) param(164) = d_out
404 call finiparser_getdbl(d_out,
'cvode:DQJincrementFactor',ifnd)
405 if(ifnd .eq. 1) param(165) = d_out
406 call finiparser_getdbl(d_out,
'cvode:ratioLNLtol',ifnd)
407 if(ifnd .eq. 1) param(166) = d_out
409 call finiparser_getstring(c_out,
'cvode:preconditioner',ifnd)
410 call capit(c_out,132)
412 if (index(c_out,
'USER') .eq. 1)
then
414 else if (index(c_out,
'NONE') .eq. 1)
then
417 write(6,*)
'value: ',trim(c_out)
418 write(6,*)
'is invalid for cvode:preconditioner!'
425 if (idpss(i).ge.0) j = j + 1
433 call finiparser_getdbl(d_out,
'magnetic:viscosity',ifnd)
434 if(ifnd .eq. 1) param(29) = d_out
435 if(param(29).lt.0.0) param(29) = -1.0/param(29)
437 call finiparser_getdbl(d_out,
'mesh:numberOfBCFields',ifnd)
438 if(ifnd .eq. 1) param(32) = int(d_out)
440 call finiparser_getdbl(d_out,
'mesh:firstBCFieldIndex',ifnd)
441 if(ifnd .eq. 1) param(33) = int(d_out)
443 call finiparser_getstring(c_out,
'pressure:solver',ifnd)
444 if (ifnd .eq. 1)
then
445 call capit(c_out,132)
446 if (index(c_out,
'GMRES') .eq. 1)
then
448 else if (index(c_out,
'CGFLEX') .eq. 1)
then
451 write(6,*)
'value: ',trim(c_out)
452 write(6,*)
'not supported for pressure:solver!'
457 call finiparser_getstring(c_out,
'pressure:preconditioner',ifnd)
458 if (ifnd .eq. 1)
then
459 call capit(c_out,132)
460 if (index(c_out,
'SEMG_XXT') .eq. 1)
then
462 else if (index(c_out,
'SEMG_AMG_HYPRE') .eq. 1)
then
464 else if (index(c_out,
'SEMG_AMG') .eq. 1)
then
466 else if (index(c_out,
'FEM_AMG_HYPRE') .eq. 1)
then
469 write(6,*)
'value: ',trim(c_out)
470 write(6,*)
'is invalid for pressure:preconditioner!'
475 call finiparser_getbool(i_out,
'general:writeDoublePrecision',ifnd)
476 if(ifnd .eq. 1 .and. i_out .eq. 1) param(63) = 1
478 call finiparser_getdbl(d_out,
'general:writeNFiles',ifnd)
479 if(ifnd .eq. 1) param(65) = int(d_out)
481 call finiparser_getbool(i_out,
'velocity:residualProj',ifnd)
483 ifprojfld(1) = .false.
484 if(i_out .eq. 1) ifprojfld(1) = .true.
487 call finiparser_getbool(i_out,
'pressure:residualProj',ifnd)
490 if(i_out .eq. 1) param(95) = 5
493 call finiparser_getbool(i_out,
'general:dealiasing',ifnd)
494 if(ifnd .eq. 1 .and. i_out .eq. 0) param(99) = -1
497 call finiparser_getstring(c_out,
'general:filtering',ifnd)
498 if (ifnd .eq. 1)
then
500 call capit(c_out,132)
501 if (index(c_out,
'NONE') .eq. 1)
then
504 else if (index(c_out,
'EXPLICIT') .eq. 1)
then
506 call ltrue(iffilter,
size(iffilter))
507 else if (index(c_out,
'HPFRT') .eq. 1)
then
509 call ltrue(iffilter,
size(iffilter))
511 write(6,*)
'value: ',c_out
512 write(6,*)
'is invalid for general:filtering!'
515 call finiparser_getdbl(d_out,
'general:filterWeight',ifnd)
516 if (ifnd .eq. 1)
then
519 write(6,*)
'general:filterWeight'
520 write(6,*)
'is required for general:filtering!'
523 call finiparser_getdbl(d_out,
'general:filterModes',ifnd)
524 if (ifnd .eq. 1)
then
525 param(101) = int(d_out) - 1
526 if (int(param(101)).eq.0) filtertype = 0
528 call finiparser_getdbl
529 $ (d_out,
'general:filterCutoffRatio',ifnd)
530 if (ifnd .eq. 1)
then
531 dtmp = anint(lx1*(1.0 - d_out))
532 param(101) = max(dtmp-1,0.0)
533 if (abs(1.0 - d_out).lt.0.01) filtertype = 0
535 write(6,*)
'general:filterCutoffRatio or filterModes'
536 write(6,*)
'is required for general:filtering!'
543 call finiparser_getstring(c_out,
'cvode:mode',ifnd)
544 call capit(c_out,132)
545 if (index(c_out,
'NORMAL') .eq. 1) param(160) = 1
546 if (index(c_out,
'NORMAL_TSTOP' ) .eq. 1) param(160) = 3
550 write(txt,
"('general:userParam',i2.2)") i
551 call finiparser_getdbl(d_out,txt,ifnd)
552 if(ifnd .eq. 1) uparam(i) = d_out
556 call finiparser_getstring(c_out,
'general:timeStepper',ifnd)
557 if (ifnd .eq. 1)
then
558 call capit(c_out,132)
560 if (index(c_out,
'BDF1') .eq. 1)
then
562 else if (index(c_out,
'BDF2') .eq. 1)
then
564 else if (index(c_out,
'BDF3') .eq. 1)
then
567 write(6,*)
'value: ',trim(c_out)
568 write(6,*)
'is invalid for general:timeStepper!'
573 call finiparser_getstring(c_out,
'general:extrapolation',ifnd)
574 if (ifnd .eq. 1)
then
575 call capit(c_out,132)
576 if (index(c_out,
'OIFS') .eq. 1)
then
579 call finiparser_getdbl(d_out,
'general:targetCFL',ifnd)
580 if (ifnd .eq. 1)
then
583 write(6,*)
'general:targetCFL'
584 write(6,*)
'is required for general:extrapolation!'
587 else if (index(c_out,
'STANDARD') .eq. 1)
then
590 write(6,*)
'value: ',trim(c_out)
591 write(6,*)
'is invalid for general:extrapolation!'
603 call finiparser_getstring(c_out,
'mesh:motion',ifnd)
604 if (ifnd .eq. 1)
then
605 call capit(c_out,132)
606 if (index(c_out,
'ELASTICITY') .eq. 1)
then
608 call finiparser_getdbl(d_out,
'mesh:viscosity',ifnd)
609 if (ifnd .eq. 1) param(47) = d_out
610 call finiparser_getbool(i_out,
'mesh:residualProj',ifnd)
611 if (ifnd .eq. 1)
then
612 ifprojfld(0) = .false.
613 if(i_out .eq. 1) ifprojfld(0) = .true.
615 else if (index(c_out,
'USER') .eq. 1)
then
618 else if (index(c_out,
'NONE') .eq. 1)
then
621 write(6,*)
'value: ',trim(c_out)
622 write(6,*)
'is invalid for mesh:motion!'
626 call finiparser_getdbl(d_out,
'mesh:residualTol',ifnd)
627 if(ifnd .eq. 1) restol(0) = d_out
629 call finiparser_getbool(i_out,
'problemType:axiSymmetry',ifnd)
632 if(i_out .eq. 1) ifaxis = .true.
635 call finiparser_getbool(i_out,
'problemType:swirl',ifnd)
638 if(i_out .eq. 1) ifaziv = .true.
641 call finiparser_getbool(i_out,
'problemType:cyclicBoundaries',ifnd)
644 if(i_out .eq. 1) ifcyclic = .true.
647 call finiparser_getstring(c_out,
'problemType:equation',ifnd)
648 call capit(c_out,132)
649 if (index(c_out,
'STEADYSTOKES').eq.1)
then
652 else if (index(c_out,
'STOKES').eq.1)
then
654 else if (index(c_out,
'STEADYHEAT').eq.1)
then
659 else if (index(c_out,
'LOWMACHNS').eq.1)
then
661 else if (index(c_out,
'INCOMPLINNS').eq.1 .or.
662 $ index(c_out,
'INCOMPLINADJNS').eq.1)
then
664 if (index(c_out,
'INCOMPLINADJNS').eq.1) ifadj = .true.
665 call finiparser_getdbl
666 $ (d_out,
'problemType:numberOfPerturbations',ifnd)
667 if (ifnd .eq. 1)
then
668 param(31) = int(d_out)
672 call finiparser_getbool
673 $ (i_out,
'problemType:solveBaseFlow',ifnd)
674 if (ifnd .eq. 1)
then
676 if(i_out .eq. 1) ifbase = .true.
678 write(6,*)
'problemType:solveBaseFlow'
679 write(6,*)
'is required for ', trim(c_out)
682 else if (index(c_out,
'COMPNS') .eq. 1)
then
686 write(6,*)
'value: ',trim(c_out)
687 write(6,*)
'not supported for problemType:equation!'
688 write(6,*)
'Recompile with CMTNEK ...'
691 else if (index(c_out,
'INCOMPMHD') .eq. 1)
then
692 write(6,*)
'value: ',trim(c_out)
693 write(6,*)
'not yet supported for problemType:equation!'
697 call finiparser_getbool(i_out,
698 &
'problemType:stressFormulation',ifnd)
701 if(i_out .eq. 1) ifstrs = .true.
704 call finiparser_getbool(i_out,
705 &
'problemType:variableProperties',ifnd)
708 if(i_out .eq. 1) ifuservp = .true.
711 call finiparser_getbool(i_out,
'problemType:dp0dt',ifnd)
713 if(i_out .eq. 1) ifdp0dt = .true.
716 call finiparser_getbool(i_out,
'cvode:stiff',ifnd)
719 if(i_out .eq. 1) param(161) = 2
723 call finiparser_getbool(i_out,
'velocity:advection',ifnd)
726 if(i_out .eq. 1) ifadvc(1) = .true.
729 call finiparser_getbool(i_out,
'temperature:advection',ifnd)
732 if(i_out .eq. 1) ifadvc(2) = .true.
736 write(txt,
"('scalar',i2.2,a)") i,
':advection'
737 call finiparser_getbool(i_out,txt,ifnd)
739 ifadvc(i+2) = .false.
740 if(i_out .eq. 1) ifadvc(i+2) = .true.
745 call finiparser_getbool(i_out,
'temperature:conjugateHeatTransfer',
748 if(i_out .eq. 1)
then
755 write(txt,
"('scalar',i2.2,a)") i,
':conjugateHeatTransfer'
756 call finiparser_getbool(i_out,txt,ifnd)
758 iftmsh(i+2) = .false.
759 if(i_out .eq. 1) iftmsh(i+2) = .true.
764 call finiparser_getbool(i_out,
'mesh:writeToFieldFile',ifnd)
767 if(i_out .eq. 1) ifxyo = .true.
770 call finiparser_getbool(i_out,
'velocity:writeToFieldFile',ifnd)
773 if(i_out .eq. 1) ifvo = .true.
776 call finiparser_getbool(i_out,
'pressure:writeToFieldFile',ifnd)
779 if(i_out .eq. 1) ifpo = .true.
782 call finiparser_getbool(i_out,
'temperature:writeToFieldFile',ifnd)
785 if(i_out .eq. 1) ifto = .true.
789 write(txt,
"('scalar',i2.2,a)") i,
':writeToFieldFile'
790 call finiparser_getbool(i_out,txt,ifnd)
793 if(i_out .eq. 1) ifpsco(i) = .true.
798 call finiparser_getdbl(d_out,
'velocity:viscosity',ifnd)
799 if(ifnd .eq. 1) cpfld(1,1) = d_out
800 if (cpfld(1,1) .lt.0.0) cpfld(1,1) = -1.0/cpfld(1,1)
801 call finiparser_getdbl(d_out,
'velocity:density',ifnd)
802 if(ifnd .eq. 1) cpfld(1,2) = d_out
804 call finiparser_getdbl(d_out,
'temperature:conductivity',ifnd)
805 if(ifnd .eq. 1) cpfld(2,1) = d_out
806 if (cpfld(2,1) .lt.0.0) cpfld(2,1) = -1.0/cpfld(2,1)
807 call finiparser_getdbl(d_out,
'temperature:rhoCp',ifnd)
808 if(ifnd .eq. 1) cpfld(2,2) = d_out
811 write(txt,
"('scalar',i2.2,a)") i,
':diffusivity'
812 call finiparser_getdbl(d_out,txt,ifnd)
813 if(ifnd .eq. 1) cpfld(2+i,1) = d_out
814 if(cpfld(2+i,1) .lt.0.0) cpfld(2+i,1) = -1.0/cpfld(2+i,1)
815 write(txt,
"('scalar',i2.2,a)") i,
':density'
816 call finiparser_getdbl(d_out,txt,ifnd)
817 if(ifnd .eq. 1) cpfld(2+i,2) = d_out
821 call finiparser_findtokens(
'general:startFrom',
',' , ifnd)
822 do i = 1,min(ifnd,15)
823 call finiparser_gettoken(initc(i),i)
824 if(index(initc(i),
'0') .eq. 1)
call blank(initc(i),132)
828 call finiparser_getstring(c_out,
'mesh:partitioner',ifnd)
829 call capit(c_out,132)
830 if(index(c_out,
'RSB').eq.1)
then
832 else if(index(c_out,
'RCB').eq.1)
then
834 else if (index(c_out,
'RCBRSB').eq.1)
then
836 else if (index(c_out,
'METIS').eq.1)
then
863 call bcast(loglevel, isize)
864 call bcast(optlevel, isize)
866 call bcast(param , 200*wdsize)
867 call bcast(uparam, 20*wdsize)
869 call bcast(filtertype, wdsize)
871 call bcast(atol , (ldimt1+1)*wdsize)
872 call bcast(restol, (ldimt1+1)*wdsize)
874 call bcast(ifchar , lsize)
875 call bcast(iftran , lsize)
876 call bcast(ifflow , lsize)
877 call bcast(ifheat , lsize)
878 call bcast(iflomach, lsize)
879 call bcast(ifstrs , lsize)
880 call bcast(ifmvbd , lsize)
881 call bcast(ifusermv, lsize)
882 call bcast(ifdp0dt, lsize)
883 call bcast(ifaxis , lsize)
884 call bcast(ifcyclic, lsize)
885 call bcast(ifmhd , lsize)
886 call bcast(ifuservp, lsize)
887 call bcast(ifpert, lsize)
888 call bcast(ifbase, lsize)
889 call bcast(ifmoab, lsize)
890 call bcast(ifaziv, lsize)
891 call bcast(ifadj , lsize)
893 call bcast(ifadvc , ldimt1*lsize)
894 call bcast(ifdiff , ldimt1*lsize)
895 call bcast(ifdeal , ldimt1*lsize)
896 call bcast(iffilter, ldimt1*lsize)
898 call bcast(idpss , ldimt*isize)
900 call bcast(meshpartitioner,isize)
902 call bcast(iftmsh , (ldimt1+1)*lsize)
903 call bcast(ifprojfld, (ldimt1+1)*lsize)
905 call bcast(cpfld, 3*ldimt1*wdsize)
907 call bcast(ifxyo , lsize)
908 call bcast(ifvo , lsize)
909 call bcast(ifpo , lsize)
910 call bcast(ifto , lsize)
911 call bcast(ifpsco, ldimt1*lsize)
913 call bcast(initc, 15*132*csize)
915 call bcast(timeioe,sizeof(timeioe))
918 if (ldim.eq.3) if3d=.true.
919 if (ldim.ne.3) if3d=.false.
921 param(1) = cpfld(1,2)
922 param(2) = cpfld(1,1)
923 param(7) = cpfld(2,2)
924 param(8) = cpfld(2,1)
926 npscal=int(param(23))
930 npert = abs(param(31))
932 if (if3d) ifaxis = .false.
933 if (ifaxis) param(99) = 3
940 cpfld(ifldmhd,1) = param(29)
941 cpfld(ifldmhd,2) = param( 1)
944 if (ifaxis.and..not.ifsplit)
then
951 if (.not.iftran)
then
952 if (ifflow.and.ifsplit)
then
963 if (idpss(i) .gt. 0)
then
964 cv_nfld = cv_nfld + 1
965 ifcvfld(i+1) = .true.
968 if (cv_nfld.gt.0) ifcvode = .true.
983 neltmx=min(neltmx,lelg)
984 nelvmx=min(nelvmx,lelg)
989 if (npscal+1.gt.ldimt)
then
991 write(6,21) ldimt,npscal+1
992 21
format(//,2x,
'Error: Nek has been compiled'
993 $ /,2x,
' for max.',i4,
' scalars. This run'
994 $ /,2x,
' requires that ldimt be set to',i4,
'.')
999 if (nelgt.gt.neltmx.or.nelgv.gt.nelvmx)
then
1001 lelt_needed = nelgt/np
1002 if (mod(nelgt,np).ne.0) lelt_needed = lelt_needed + 1
1003 write(6,82) lelt,lelg,lelt_needed,np,nelgt
1004 82
format(//,2x,
'Error: Nek has has been compiled for'
1005 $ ,/,2x,
' number of elements/proc (lelt):',i12
1006 $ ,/,2x,
' total number of elements (lelg):',i12
1008 $ ,/,2x,
'This run requires:'
1009 $ ,/,2x,
' lelt >= ',i12,
' for np = ',i12
1010 $ ,/,2x,
' lelg >= ',i12,/)
1016 if (lx1.ne.lx1m.or.ly1.ne.ly1m.or.lz1.ne.lz1m)
1018 $ (
'Error: Mesh motion requires lx1m=lx1 etc. in SIZE . $',lx1m)
1021 IF(ldimr.NE.ldim)
THEN
1023 WRITE(6,10) ldim,ldimr
1024 10
FORMAT(//,2x,
'Error: Nek has been compiled'
1025 $ /,2x,
' for spatial dimension equal to',i2,
'.'
1026 $ /,2x,
' The mesh file has dimension',i2,
'.')
1031 if (lpert.lt.npert)
then
1032 if(nid.eq.0)
write(6,*)
1033 $
'ERROR: Increase lpert in SIZE to', npert
1037 IF (npscal+1.GT.ldimt .AND. ifmhd)
THEN
1039 WRITE(6,22) ldimt,npscal+1
1040 22
FORMAT(/s,2x,
'Error: Nek has been compiled'
1041 $ /,2x,
' for',i4,
' scalars. A MHD run'
1042 $ /,2x,
' requires that LDIMT be set to',i4,
'.')
1048 if (ly1.ne.lx1.or.lz1.ne.lx1)
then
1049 if (nid.eq.0)
write(6,13) lx1,ly1,lz1
1050 13
format(
'ERROR: lx1,ly1,lz1:',3i5,
' must be equal for 3D')
1053 if (ly2.ne.lx2.or.lz2.ne.lx2)
then
1054 if (nid.eq.0)
write(6,14) lx2,ly2,lz2
1055 14
format(
'ERROR: lx2,ly2,lz2:',3i5,
' must be equal for 3D')
1059 if (ly1.ne.lx1.or.lz1.ne.1)
then
1060 if (nid.eq.0)
write(6,12) lx1,ly1,lz1
1061 12
format(
'ERROR: ',3i5,
' must have lx1=ly1; lz1=1, for 2D')
1064 if (ly2.ne.lx2.or.lz2.ne.1)
then
1065 if (nid.eq.0)
write(6,11) lx2,ly2,lz2
1066 11
format(
'ERROR: ',3i5,
' must have lx2=ly2; lz2=1, for 2D')
1071 if (lgmres.lt.5 .and. param(42).eq.0)
then
1072 if(nid.eq.0)
write(6,*)
1073 $
'WARNING: lgmres might be too low!'
1077 if (lx1.ne.lx2)
then
1078 if (nid.eq.0)
write(6,43) lx1,lx2
1079 43
format(
'ERROR: lx1,lx2:',2i4,
' must be equal for IFSPLIT=T')
1083 if (lx2.ne.lx1-2)
then
1084 if (nid.eq.0)
write(6,44) lx1,lx2
1085 44
format(
'ERROR: lx1,lx2:',2i4,
' lx2 must be lx-2 for IFSPLIT=F')
1090 if (param(40).eq.3 .and. .not.ifsplit)
then
1092 $ (
'ERROR: Selected preconditioner requires lx2=lx1$',lx2)
1095 if (ifsplit .and. ifuservp .and. .not.ifstrs)
then
1096 if(nid.eq.0)
write(6,*)
1097 $
'Enable stress formulation to support PN/PN and IFUSERVP=T'
1101 if (ifcyclic .and. .not.ifstrs)
then
1102 if(nid.eq.0)
write(6,*)
1103 $
'Enable stress formulation to support cyclic BC'
1107 ktest = (lx1-lx1m) + (ly1-ly1m) + (lz1-lz1m)
1108 if (ifstrs.and.ktest.ne.0)
then
1109 if(nid.eq.0)
write(6,*)
1110 $
'ERROR: Stress formulation requires lx1m=lx1, etc. in SIZE'
1114 if (ifsplit .and. ifmhd)
then
1115 if(nid.eq.0)
write(6,*)
1116 $
'ABORT: No MHD support for Pn-Pn'
1120 if (ifmhd .and. lbx1.ne.lx1)
then
1121 if(nid.eq.0)
write(6,*)
1122 $
'ABORT: For MHD, need lbx1=lx1, etc.; Change SIZE '
1126 if (ifpert .and. lpx1.ne.lx1)
then
1127 if(nid.eq.0)
write(6,*)
1128 $
'ABORT: For Lyapunov, need lpx1=lx1, etc.; Change SIZE '
1131 if (ifpert .and. ifsplit)
then
1132 if(nid.eq.0)
write(6,*)
1133 $
'ABORT: For Lyapunov, need lx2=lx1-2, etc. in SIZE'
1136 if (iflomach .and. .not.ifsplit)
then
1137 if(nid.eq.0)
write(6,*)
1138 $
'ABORT: For lowMach, need lx2=lx1, etc.; Change SIZE '
1142 if (iflomach .and. .not.ifheat)
then
1143 if(nid.eq.0)
write(6,*)
1144 $
'ABORT: For lowMach, need to solve for temperature too!'
1148 if (ifdp0dt .and. .not.iflomach)
then
1149 if(nid.eq.0)
write(6,*)
1150 $
'ABORT: Varying p0 requires lowMach! '
1154 if (ifchar .and. param(99).lt.0)
then
1155 if (nid.eq.0)
write(6,*)
1156 &
'ABORT: Characteristic scheme needs dealiasing!'
1160 if (.not.ifsplit .and. ifaxis .and. ifstrs)
then
1161 if (nid.eq.0)
write(6,*)
1162 $
'ABORT: Axisymetric and stress formulation not supported ' //
1167 if (ifchar.and.(nelgv.ne.nelgt))
call exitti(
1168 $
'ABORT: Characteristics not supported w/ conj. ht transfer$',1)
1170 if (param(99).gt.-1 .and. (lxd.lt.lx1 .or. lyd.lt.ly1 .or.
1172 if(nid.eq.0)
write(6,*)
1173 &
'ABORT: Dealiasing space too small; Check lxd,lyd,lzd in SIZE '
1189 character*1 tx1(132)
1190 equivalence(tx1,txt)
1194 call finiparser_getdictentries(n)
1196 call finiparser_getpair(key,val,i,ifnd)
1200 if (is.eq.1)
goto 10
1202 do j = 1,pardict_nkeys
1203 if(index(pardictkey(j),key).eq.1)
goto 10
1205 is = index(key,
'SCALAR')
1208 call chcopy(tx1(is+6),
'%%',2)
1209 if(index(pardictkey(j),txt).eq.1)
goto 10
1212 write(6,*)
'ERROR: Par file contains unknown key ', key
subroutine exitti(stringi, idata)
subroutine bcast(buf, len)
subroutine capit(lettrs, n)
subroutine chcopy(a, b, n)
subroutine setdefaultparam
subroutine par_read(ierr)
subroutine par_verify(ierr)
subroutine read_re2_hdr(ifbswap, ifverbose)
subroutine read_re2_data(ifbswap)