OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
arret.F File Reference
#include "implicit_f.inc"
#include "comlock.inc"
#include "scr20_c.inc"
#include "com01_c.inc"
#include "task_c.inc"
#include "scr06_c.inc"
#include "scr07_c.inc"
#include "rad2r_c.inc"
#include "chara_c.inc"
#include "userlib.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine arret (n)

Function/Subroutine Documentation

◆ arret()

subroutine arret ( integer n)

Definition at line 441 of file arret.F.

442 USE h3d_mod
443 USE inoutfile_mod
444 USE qa_out_mod
445 USE dynlib_mod
447 USE output_mod
448 USE file_descriptor_mod
449C-----------------------------------------------
450C I m p l i c i t T y p e s
451C-----------------------------------------------
452#include "implicit_f.inc"
453C-----------------------------------------------
454C C o m m o n B l o c k s
455C-----------------------------------------------
456#include "comlock.inc"
457#include "scr20_c.inc"
458#include "com01_c.inc"
459#include "task_c.inc"
460#include "scr06_c.inc"
461#include "scr07_c.inc"
462#include "rad2r_c.inc"
463#include "chara_c.inc"
464#include "userlib.inc"
465C-----------------------------------------------
466C D u m m y A r g u m e n t s
467C-----------------------------------------------
468 INTEGER N
469C-----------------------------------------------
470C L o c a l V a r i a b l e s
471C-----------------------------------------------
472 CHARACTER*2048 INAME
473 INTEGER IFIL
474 INTEGER :: LEN_TMP_NAME
475 CHARACTER(len=2148) :: TMP_NAME
476 INTEGER :: IZIP
477C-----------------------------------------------
478C Different End Values
479C ----------------------------------------------
480C N=0 : Same as N=4
481C N=1 : Normal Termination - normal case
482C ARRET(1) should be called after MPI_FINALIZE only (radioss2.F)
483C N=2 : Error Termination - calls MPI_ABORT
484C N=20 : Error Termination - calls MPI_ABORT
485C N=3 : Normal termination with "USER BREAK" (crontrol file...)
486C ARRET(3) should be called after MPI_FINALIZE only (radioss2.F)
487C N=4 : Stop Before Engine output creation (*_0001.out)
488C N=5 : Restart files not found
489C N=6 : Abort with system Error (return code=3)
490C N=7 : Exiting only - errors before MPP_INIT or after MPI_FINALIZE
491C ----------------------------------------------
492
493
494C ----------------------------------------------
495C TEMPO FILES Clean
496C-----------------------------------------------
497 IF(ispmd == 0 )THEN
499 ENDIF
500C -----------------------------------------------
501C TH FILES
502C -----------------------------------------------
503 IF (ispmd == 0) THEN
504
505 ! Close the TH file
506 IF (output_ptr%TH%TH_WRITE_TYPE == 3)THEN
507 ifil = fd_bin_th
508 CALL cur_fil_c(ifil)
509 CALL close_c()
510 ENDIF
511
512 ! Compute checksum if option is present
513 IF (output_ptr%CHECKSUM%CHECKSUM_COUNT >0)THEN
514 izip=0
515 CALL compute_binary_checksum(output_ptr%CHECKSUM%files_checksum,
516 * c_loc(output_ptr%TH%TH_FILENAME),
517 * len_trim(output_ptr%TH%TH_FILENAME),
518 * izip)
519 ENDIF
520 ENDIF
521C -----------------------------------------------
522C ABF FILES
523C -----------------------------------------------
524 IF (ispmd == 0 .AND. nabfile /= 0 .AND.
525 . (abinp /= 0 .AND. about /= 0 ) ) THEN
526#ifdef DNC
527
528 CALL release_abfpipe(abinp,about)
529
530 IF(abfile(1) /= 0) THEN
531 iname=rootnam(1:rootlen)//'_'//chrun//'.tmp'
532 ifil = 11
533 len_tmp_name = outfile_name_len + rootlen + 9
534 tmp_name=outfile_name(1:outfile_name_len)//iname(1:len_trim(iname))
535 CALL cur_fil_c(ifil)
536 CALL delete_tmpfile(tmp_name,len_tmp_name)
537 ENDIF
538 IF(abfile(2) /= 0) THEN
539 iname=rootnam(1:rootlen)//'_'//chrun//'_a.tmp'
540 ifil = 12
541 len_tmp_name = outfile_name_len + rootlen + 11
542 tmp_name=outfile_name(1:outfile_name_len)//iname(1:len_trim(iname))
543 CALL cur_fil_c(ifil)
544 CALL delete_tmpfile(tmp_name,len_tmp_name)
545 ENDIF
546 IF(abfile(3) /= 0) THEN
547 iname=rootnam(1:rootlen)//'_'//chrun//'_b.tmp'
548 ifil = 13
549 len_tmp_name = outfile_name_len + rootlen + 11
550 tmp_name=outfile_name(1:outfile_name_len)//iname(1:len_trim(iname))
551 CALL cur_fil_c(ifil)
552 CALL delete_tmpfile(tmp_name,len_tmp_name)
553 ENDIF
554 IF(abfile(4) /= 0) THEN
555 iname=rootnam(1:rootlen)//'_'//chrun//'_c.tmp'
556 ifil = 14
557 len_tmp_name = outfile_name_len + rootlen + 11
558 tmp_name=outfile_name(1:outfile_name_len)//iname(1:len_trim(iname))
559 CALL cur_fil_c(ifil)
560 CALL delete_tmpfile(tmp_name,len_tmp_name)
561 ENDIF
562 IF(abfile(5) /= 0) THEN
563 iname=rootnam(1:rootlen)//'_'//chrun//'_d.tmp'
564 ifil = 15
565 len_tmp_name = outfile_name_len + rootlen + 11
566 tmp_name=outfile_name(1:outfile_name_len)//iname(1:len_trim(iname))
567 CALL cur_fil_c(ifil)
568 CALL delete_tmpfile(tmp_name,len_tmp_name)
569 ENDIF
570 IF(abfile(6) /= 0) THEN
571 iname=rootnam(1:rootlen)//'_'//chrun//'_e.tmp'
572 ifil = 16
573 len_tmp_name = outfile_name_len + rootlen + 11
574 tmp_name=outfile_name(1:outfile_name_len)//iname(1:len_trim(iname))
575 CALL cur_fil_c(ifil)
576 CALL delete_tmpfile(tmp_name,len_tmp_name)
577 ENDIF
578 IF(abfile(7) /= 0) THEN
579 iname=rootnam(1:rootlen)//'_'//chrun//'_f.tmp'
580 ifil = 17
581 len_tmp_name = outfile_name_len + rootlen + 11
582 tmp_name=outfile_name(1:outfile_name_len)//iname(1:len_trim(iname))
583 CALL cur_fil_c(ifil)
584 CALL delete_tmpfile(tmp_name,len_tmp_name)
585 ENDIF
586 IF(abfile(8) /= 0) THEN
587 iname=rootnam(1:rootlen)//'_'//chrun//'_g.tmp'
588 ifil = 18
589 len_tmp_name = outfile_name_len + rootlen + 11
590 tmp_name=outfile_name(1:outfile_name_len)//iname(1:len_trim(iname))
591 CALL cur_fil_c(ifil)
592 CALL delete_tmpfile(tmp_name,len_tmp_name)
593 ENDIF
594 IF(abfile(9) /= 0) THEN
595 iname=rootnam(1:rootlen)//'_'//chrun//'_h.tmp'
596 ifil = 19
597 len_tmp_name = outfile_name_len + rootlen + 11
598 tmp_name=outfile_name(1:outfile_name_len)//iname(1:len_trim(iname))
599 CALL cur_fil_c(ifil)
600 CALL delete_tmpfile(tmp_name,len_tmp_name)
601 ENDIF
602 IF(abfile(10) /= 0) THEN
603 iname=rootnam(1:rootlen)//'_'//chrun//'_i.tmp'
604 ifil = 20
605 len_tmp_name = outfile_name_len + rootlen + 11
606 tmp_name=outfile_name(1:outfile_name_len)//iname(1:len_trim(iname))
607 CALL cur_fil_c(ifil)
608 CALL delete_tmpfile(tmp_name,len_tmp_name)
609 ENDIF
610#endif
611 ENDIF
612
613 ! ----------------------
614 ! user library : check in
615 IF(dlib_struct(id_engine_user_finalize)%DLIB_BOOL) THEN
616 ispmd_user = ispmd
617 CALL engine_user_finalize( ispmd_user )
618 ENDIF
619 ! ----------------------
620#ifdef DNC
621 IF(mds_avail==1) THEN
622 ispmd_user = ispmd
623 CALL mds_engine_user_finalize( ispmd_user )
624 ENDIF
625#endif
626
627 ! ------------------------------------------
628 ! Delete Temp. scratchfiles before exiting.
629 ! ------------------------------------------
630 IF(use_ifxm == 1)THEN
631 ClOSE(unit=ifxm)
632 CALL delete_user_file(ifxm_fn,len_ifxm_fn)
633 ENDIF
634
635 IF(use_ifxs == 1)THEN
636 CLOSE(unit=ifxs)
637 CALL delete_user_file(ifxs_fn,len_ifxs_fn)
638 ENDIF
639
640 IF (use_ieigm==1)THEN
641 CLOSE(ieigm)
642 CALL delete_user_file(ieigm_fn,len_ieigm_fn)
643 ENDIF
644
645C -----------------------------------------------
646 IF (ispmd == 0) THEN
647 CALL qaclose()
648 ENDIF
649C
650 SELECT CASE (n)
651 CASE(0) ! Stop before engine output file was written
652 WRITE(istdo,1100)
653 CALL spmd_kill(2)
654 CALL my_exit(2)
655 CASE (1)
656 IF (ispmd==0) THEN
657 WRITE(iout,1000) ! Normal termination
658 WRITE(istdo,1050)
659
660 WRITE(iout,1200) ncycle ! Total Number of cycles
661 WRITE(istdo,1250) ncycle
662 CALL print_runtime( )
663
664
665 IF (ihtml == 1) CALL report(ih3dreader,n,imvw,output_ptr%TH%WFEXT,output_ptr%TH%WFEXT_MD, output_ptr) ! Htlm report
666 IF (imvw /= 0) CALL sortie_mvw(imvw,imvw_ref) ! MVW output
667 IF ((irad2r==1).AND.(ispmd==0)) CALL send_ibuf_c(1,1) ! Rad2rad termination
668
669 ENDIF
670
671 CLOSE(unit=iout)
672 IF (ispmd==0)THEN
673 IF (output_ptr%CHECKSUM%CHECKSUM_COUNT > 0 ) THEN
674 izip=0
675 CALL compute_binary_checksum(output_ptr%checksum%files_checksum ,
676 * c_loc(output_ptr%OUT_FILENAME),
677 * len_trim(output_ptr%OUT_FILENAME),
678 * izip)
679 ENDIF
680 ENDIF
681
682 IF(ispmd /=0) THEN
683 CALL delete_user_file(iusc4_fnam,len_iusc4_fnam)
684 ENDIF
685
686 CLOSE(unit=iuhis)
687
688 if (ispmd==0)then
689 if (output_ptr%checksum%checksum_count > 0) then
690 CALL checksum_option_checksum_file(output_ptr%checksum,rootnam,rootlen,chrun) ! Deck checksums print
691 end if
692 endif
693
694 CALL my_exit(0)
695
696 CASE (2)
697 WRITE(iout,1100)
698 WRITE(istdo,1150)
699
700 IF(ispmd == 0 .AND. iout/= 0) CLOSE(unit=iout)
701
702 CALL spmd_kill(2)
703 CALL my_exit(2)
704
705 CASE (20)
706 WRITE(iout,1100)
707 WRITE(istdo,1150)
708
709 CALL spmd_kill(2)
710 CALL my_exit(2)
711
712 CASE (3)
713 IF (ispmd==0) THEN
714 WRITE(iout,1000)
715 WRITE(istdo,1050)
716 WRITE(iout,1300)
717 WRITE(istdo,1300)
718
719 WRITE(iout,1200) ncycle
720 WRITE(istdo,1250) ncycle
721 CALL print_runtime( )
722
723 IF (ihtml == 1) CALL report(ih3dreader,n,imvw,output_ptr%TH%WFEXT,output_ptr%TH%WFEXT_MD, output_ptr) ! Htlm report
724 IF (imvw /= 0) CALL sortie_mvw(imvw,imvw_ref)
725 ENDIF
726
727 CLOSE(unit=iout)
728 IF(ispmd /=0) THEN
729 CALL delete_user_file(iusc4_fnam,len_iusc4_fnam)
730 ENDIF
731
732 CLOSE(unit=iuhis)
733
734 CALL my_exit(0)
735
736 CASE(4)
737 WRITE(istdo,1400)
738 IF (ispmd==0) THEN
739 ENDIF
740 CALL spmd_kill(2)
741 CALL my_exit(2)
742 CASE(5) ! restart file not found
743 WRITE(istdo,1400)
744 CALL spmd_kill(2)
745 CALL my_exit(2)
746 CASE (6) ! system trapped error (SIGKILL, SIGSEV etc...)
747 WRITE(iout,1100)
748 WRITE(istdo,1150)
749
750 IF (ispmd==0)THEN
751 ENDIF
752 CALL spmd_kill(3)
753 CASE (7) ! Exiting only - errors before MPP_INIT
754 CALL my_exit(2)
755 END SELECT
756
757C
758 1000 FORMAT(///' NORMAL TERMINATION ')
759 1050 FORMAT(' NORMAL TERMINATION ')
760 1100 FORMAT(///' ERROR TERMINATION')
761 1400 FORMAT(/' ERROR TERMINATION')
762 1150 FORMAT(' ERROR TERMINATION')
763 1200 FORMAT(///' TOTAL NUMBER OF CYCLES :', i8 / )
764 1250 FORMAT(' TOTAL NUMBER OF CYCLES :', i8)
765 1300 FORMAT(' USER BREAK ')
766C
767
void my_exit(int *i)
Definition analyse.c:1038
void c_h3d_close_file()
void compute_binary_checksum(checksum *cs_output_files, char *file, int len, int izip)
Definition checksum.cpp:78
subroutine print_runtime()
Definition timer.F:1150
type(dyn_lib_type), dimension(:), allocatable dlib_struct
Definition dynlib_mod.F:72
integer ispmd_user
Definition dynlib_mod.F:75
integer, parameter id_engine_user_finalize
Definition dynlib_mod.F:85
logical is_h3d_used
Definition h3d_mod.F:318
character(len=outfile_char_len) outfile_name
integer outfile_name_len
subroutine qaclose()
@purpose close QA extract fileCare when routine is called from Fortran (because of binding)
Definition qa_out_mod.F:639
character(len=10192) iusc4_fnam
character(len=10192) ifxm_fn
character(len=10192) ieigm_fn
character(len=10192) ifxs_fn
void send_ibuf_c(int *ibuf, int *len)
Definition rad2rad_c.c:940
subroutine report(ih3dreader, n, imvw, wfext, wfext_md, output)
Definition report.F:35
subroutine sortie_mvw(imvw, imvw_ref)
Definition sortie_mvw.F:31
subroutine spmd_kill(icode)
Definition spmd_kill.F:73
void close_c()
void cur_fil_c(int *nf)
void delete_tmpfile(char *name, int *size)