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 440 of file arret.F.

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