51#include "implicit_f.inc"
55#include "commandline.inc"
59#include "tablen_c.inc"
60#include "ddspmd_c.inc"
61#include "debug_rst.inc"
65 TYPE(output_),
INTENT(INOUT) :: OUTPUT
70 INTEGER PHELPI,PEXECI,PINPUTI,, PNTHI, PTIMER, PUSERLNAMI,MDS_PATHI
73 INTEGER I,STRL,STRLN,ERR,LENLIST,ISIN,STRLNA,BEGIN
78 CHARACTER*2096 INPUTR,INPUTC,STRING,ARGP,ARGS
79 CHARACTER*2096 CHECKSUMR,CHECKSUMC
81 character(len=2096) ARGS2,ARGS_REDUCE
82 INTEGER :: LEN_DOMDEC_CPU_TYPE
83 CHARACTER(LEN=15) :: DOMDEC_CPU_TYPE
84 INTEGER IARGC,IERRMSG,CDL_CASE
85 CHARACTER :: LAST_LETTER,SEPARATOR
86 INTEGER :: RANDM_SEED,RANDM_ALEA
87 REAL(kind=8) :: randm_seed_nbr,randm_alea_nbr
88 INTEGER :: GOT_GRP_SIZE
90 CHARACTER (LEN=20) :: ARGLIST(LENLIST)
99 .
'-NOTRAP' ,
'-TIMER',
100 .
'-DYNAMIC_LIB',
'-DYLIB',
101 .
'-MDS_LIBPATH',
'-MDSDIR',
102 .
'-MEM-MAP' ,
'-INSPIRE',
'-DD_TUNING',
103 .
'-INSPIRE_ALM' ,
'-FLUSH_RST',
'-CHECK',
104 .
'-HSTP_READ' ,
'-HSTP_WRITE',
'-RXALEA',
'-RSEED',
106 .
'-GRP_SIZE' ,
'-PYTHON' ,
'-THNMS1',
'-CHECKSUM_READ'/
108 CHARACTER (LEN=255) :: STR
117 CALL getenv(
'RUN_QA',str)
119 READ(str,
'(I10)')runqa
120 IF(runqa == 1) python_error = 0
133 flush_rst_to_txt = .false.
169#if CPP_mach == CPP_w95 || CPP_mach == CPP_win64_spmd || CPP_mach == CPP_p4win64_spmd || CPP_mach == CPP_wnt || CPP_mach == CPP_wmr || CPP_mach == CPP_p4win64 || CPP_mach == CPP_p4win32
191 output%TH%DUMP_THNMS1_FILE = 0
192 output%CHECKSUM%ST_CHECKSUM_READ = 0
196 argn = command_argument_count()
199 CALL get_command_argument(i,args)
202 args2(1:strl) = args(1:strl)
205 args_reduce(1:9) = args(1:9)
208 IF(args_reduce(1:9)==
'-OUTFILE=') cdl_case = 2
209 IF(args_reduce(1:8)==
'-INFILE=') cdl_case = 3
239 IF (pinputi==0) pinputi = i
241 IF (pinputi==0) pinputi = i
245 IF (pncpui==0) pncpui = i
247 IF (pncpui==0) pncpui = i
251 IF (pnthi==0) pnthi = i
253 IF (pnthi==0) pnthi = i
257 IF (ptimer==0) ptimer = i
260 CASE (
'-DYNAMIC_LIB')
261 IF (puserlnami==0) puserlnami=i
263 IF (puserlnami==0) puserlnami=i
266 CASE (
'-MDS_LIBPATH')
267 IF (mds_pathi==0) mds_pathi=i
271 IF (mds_diri==0) mds_diri=i
283 IF(domdec_tuning==0) domdec_tuning=i
286 CASE (
'-INSPIRE_ALM')
294 CASE (
'-HSTP_WRITE')
299 flush_rst_to_txt = .true.
317 output%TH%DUMP_THNMS1_FILE = 1
318 CASE (
'-CHECKSUM_READ')
319 output%CHECKSUM%ST_CHECKSUM_READ = 1
320 IF (pchecksumi==0) pchecksumi = i
329 CALL get_command_argument(i-1,argp)
334 IF (argp ==
'-I' .OR. argp ==
'-INPUT' .OR.
335 * argp ==
'-NP' .OR. argp ==
'-NSPMD' .OR.
336 * argp ==
'-NT' .OR. argp ==
'-NTHREAD'.OR.
337 * argp ==
'-TIMER' .OR. argp ==
'-DYLIB'.OR.
338 * argp ==
'-DYNAMIC_LIB' .OR. argp ==
'-DD_TUNING'.OR.
339 * argp ==
'-RSEED' .OR. argp ==
'-RXALEA'.OR.
340 * argp ==
'-GRP_SIZE' .OR. argp ==
'-MDS_LIBPATH' .OR. argp ==
'-MDSDIR' .OR. argp ==
'-CHECKSUM_READ' )
THEN
348 CALL get_command_argument(i,argp)
351 WRITE(6,
'(A,A)')
'*** ERROR : Unknown command line argument: ',argp(1:strln)
361 SELECT CASE (cdl_case)
368 args2(1:len_trim(args)-7) = args(8:len_trim(args))
369 SELECT CASE ( args2(1:len_trim(args2)) )
388 IF(last_letter/=separator)
THEN
404 IF(last_letter/=separator)
THEN
433 IF (ierrmsg /= 0)
THEN
434 IF (ierrmsg+1 > argn)
THEN
438 CALL get_command_argument(ierrmsg,argp)
441 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',
448 CALL get_command_argument(ierrmsg+1,inputr)
449 leni=len_trim(inputr)
458 CALL get_command_argument(pinputi,argp)
462 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',
474 IF (pchecksumi /= 0)
THEN
476 IF (pchecksumi + 1 > argn)
THEN
478 CALL get_command_argument(pchecksumi,argp)
481 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',argp(1:strln)
486 CALL get_command_argument(pchecksumi+1,checksumr)
487 leni=len_trim(checksumr)
488 checksumc = checksumr
496 CALL get_command_argument(pinputi,argp)
499 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',argp(1:strln)
504 output%CHECKSUM%ROOTNAME =
''
505 output%CHECKSUM%ROOTNAME(1:leni) = checksumr(1:leni)
513 IF (pinputi /= 0)
THEN
514 IF (pinputi+1 > argn)
THEN
518 CALL get_command_argument(pinputi,argp)
522 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',
528 CALL get_command_argument(pinputi+1,inputr)
529 leni=len_trim(inputr)
539 CALL get_command_argument(pinputi,argp)
543 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',
549 begin=len_trim(inputr)
551 DO WHILE (begin > 0 .AND. .NOT.condition )
552 c = inputr(begin:begin)
553 IF (ichar(c)==47 .OR. ichar(c)==92)
THEN
560 leni = len_trim(inputr) - begin
562 input(1:leni) = inputr(begin:len_trim(inputr))
567 path(1:lenp)=inputr(1:lenp)
572 if (pchecksumi == 0)
THEN
574 WRITE(6,
'(A)')
'*** ERROR : No input deck set. Use -input [Starter input file] '
585 IF (pncpui+1 > argn)
THEN
589 CALL get_command_argument(pncpui,argp)
593 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',
599 CALL get_command_argument(pncpui+1,string)
606 CALL get_command_argument(pncpui,argp)
610 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',
617 CALL get_command_argument(pncpui+1,string) !getarg(pncpui+1,string)
618 READ(string,
'(I10)',err=999) ncpu
625 strln=len_trim(string)
626 CALL get_command_argument(pncpui,argp)
627 strlna=len_trim(argp)
629 WRITE(6,
'(A,A,A,A,A)')
630 *
'*** ERROR in "',argp(1:strlna),
'" argument : "',
631 * string(1:strln),
'" is not an integer value'
644 IF (pnthi+1 > argn)
THEN
648 CALL get_command_argument(pnthi,argp)
652 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',
658 CALL get_command_argument(pnthi+1,string)
665 CALL get_command_argument(pnthi,argp)
669 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',
676 CALL get_command_argument(pnthi+1,string)
677 READ(string,
'(I10)',err=1999) nth
684 strln=len_trim(string)
685 CALL get_command_argument(pnthi,argp)
686 strlna=len_trim(argp)
688 WRITE(6,
'(A,A,A,A,A)')
689 *
'*** ERROR in "',argp(1:strlna),
'" argument : "',
690 * string(1:strln),
'" is not an integer value'
700 IF (puserlnami /= 0)
THEN
701 IF (puserlnami+1 > argn)
THEN
705 CALL get_command_argument(puserlnami,argp)
709 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',argp(1:strln)
713 CALL get_command_argument(puserlnami+1,userl_altname)
714 len_userl_altname=len_trim(userl_altname)
715 got_userl_altname = 1
719 ulibc(1:len_userl_altname) = userl_altname(1:len_userl_altname)
724 CALL get_command_argument(puserlnami,argp)
728 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',
740 IF (mds_pathi /= 0)
THEN
742 IF (mds_pathi+1 > argn)
THEN
746 CALL get_command_argument(mds_pathi,argp)
750 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',argp(1:strln)
754 CALL get_command_argument(mds_pathi+1,mds_path)
755 mds_path_len=len_trim(mds_path)
759 ulibc(1:mds_path_len) = mds_path(1:mds_path_len)
764 CALL get_command_argument(mds_pathi,argp)
768 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',
780 IF (mds_diri /= 0)
THEN
782 IF (mds_diri+1 > argn)
THEN
786 CALL get_command_argument(mds_diri,argp)
790 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',argp(1:strln)
795 CALL get_command_argument(mds_diri+1,mds_path)
796 mds_path_len=len_trim(mds_path)
799 ulibc(1:mds_path_len) = mds_path(1:mds_path_len)
804 CALL get_command_argument(mds_diri,argp)
807 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',
831 IF (domdec_tuning /= 0)
THEN
832 IF (domdec_tuning+1 > argn)
THEN
836 CALL get_command_argument(domdec_tuning,argp)
840 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',
845 CALL get_command_argument(domdec_tuning+1,domdec_cpu_type)
846 len_domdec_cpu_type=len_trim(domdec_cpu_type)
849 ulibc(1:len_domdec_cpu_type) = domdec_cpu_type(1:len_domdec_cpu_type)
854 CALL get_command_argument(domdec_tuning,argp)
858 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',
864 IF(domdec_cpu_type(1:len_domdec_cpu_type)==
'AVX512')
THEN
866 ELSEIF(domdec_cpu_type(1:len_domdec_cpu_type)==
'SSE3')
THEN
868 ELSEIF(domdec_cpu_type(1:len_domdec_cpu_type)==
'ARMV8.0')
THEN
870 ELSEIF(domdec_cpu_type(1:len_domdec_cpu_type)==
'AVX2')
THEN
887 IF (randm_alea/=0)
THEN
888 IF (randm_alea+1 > argn)
THEN
892 CALL get_command_argument(randm_alea,argp)
896 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',
902 CALL get_command_argument(randm_alea+1,string)
909 CALL get_command_argument(randm_alea,argp)
913 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',argp(1:strln)
919 CALL get_command_argument(randm_alea+1,string)
920 READ(string,
'(F20.0)',err=5999) randm_alea_nbr
929 strln=len_trim(string)
930 CALL get_command_argument(randm_alea,argp)
931 strlna=len_trim(argp)
933 WRITE(6,
'(A,A,A,A,A)')
934 *
'*** ERROR in "',argp(1:strlna),
'" argument : "',
935 * string(1:strln),
'" is not an real value'
945 IF (randm_seed/=0)
THEN
946 IF (randm_seed+1 > argn)
THEN
950 CALL get_command_argument(randm_seed,argp)
954 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',
960 CALL get_command_argument(randm_seed+1,string)
967 CALL get_command_argument(randm_seed,argp)
971 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',argp(1:strln)
977 CALL get_command_argument(randm_seed+1,string)
978 READ(string,
'(F20.0)',err=6999) randm_seed_nbr
987 strln=len_trim(string)
988 CALL get_command_argument(randm_alea,argp)
989 strlna=len_trim(argp)
991 WRITE(6,
'(A,A,A,A,A)')
992 *
'*** ERROR in "',argp(1:strlna),
'" argument : "',
993 * string(1:strln),
'" is not an real value'
1005 IF (got_grp_size /= 0)
THEN
1006 IF (got_grp_size+1 > argn)
THEN
1009 CALL get_command_argument(got_grp_size,argp)
1010 strln=len_trim(argp)
1012 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',
1017 CALL get_command_argument(got_grp_size+1,string)
1024 CALL get_command_argument(got_grp_size,argp)
1025 strln=len_trim(argp)
1028 WRITE(6,
'(A,A)')
'*** ERROR : Missing argument to ',
1035 CALL get_command_argument(got_grp_size+1,string)
1036 READ(string,
'(I10)',err=3999)
grp_size
1044 strln=len_trim(string)
1045 CALL get_command_argument(got_grp_size,argp)
1046 strlna=len_trim(argp)
1048 WRITE(6,
'(A,A,A,A,A)')
1049 *
'*** ERROR in "',argp(1:strlna),
'" argument : "',
1050 * string(1:strln),
'" is not an integer value'
1065 IF (global_error ==1)
THEN