OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
int18_law151_alloc.F File Reference
#include "implicit_f.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine int18_law151_alloc (npari, ninter, numnod, numels, multi_fvm, ipari)

Function/Subroutine Documentation

◆ int18_law151_alloc()

subroutine int18_law151_alloc ( integer, intent(in) npari,
integer, intent(in) ninter,
integer, intent(in) numnod,
integer, intent(in) numels,
type(multi_fvm_struct) multi_fvm,
integer, dimension(npari,ninter), intent(in) ipari )
Parameters
[in]nparifirst dim of ipari array
[in]ninternumber of interface
[in]numnodnumber of node
[in]numelsnumber of solid
[in]iparidata of intarface
multi_fvmstructure for multifluid solver

Definition at line 29 of file int18_law151_alloc.F.

30!$COMMENT
31! INT18_LAW151_ALLOC description
32! allocation of array for interface 18 combined
33! with law151
34!
35! INT18_LAW151_ALLOC organization :
36! - check if /INT18 + /LAW151 is used
37! - allocate the arrays
38!$ENDCOMMENT
39C-----------------------------------------------
40C M o d u l e s
41C-----------------------------------------------
42 USE multi_fvm_mod
43 USE groupdef_mod
44C-----------------------------------------------
45C I m p l i c i t T y p e s
46C-----------------------------------------------
47#include "implicit_f.inc"
48C-----------------------------------------------
49C D u m m y A r g u m e n t s
50C-----------------------------------------------
51 INTEGER, INTENT(in) :: NPARI !< first dim of ipari array
52 INTEGER, INTENT(in) :: NINTER !< number of interface
53 INTEGER, INTENT(in) :: NUMNOD !< number of node
54 INTEGER, INTENT(in) :: NUMELS !< number of solid
55 INTEGER, DIMENSION(NPARI,NINTER), INTENT(in) :: IPARI !< data of intarface
56 TYPE(MULTI_FVM_STRUCT) :: MULTI_FVM !< structure for multifluid solver
57C-----------------------------------------------
58C L o c a l V a r i a b l e s
59C-----------------------------------------------
60 INTEGER :: N,II,MY_SIZE
61 INTEGER :: NTY,INACTI
62 INTEGER, DIMENSION(NINTER) :: INT18_LIST
63 INTEGER, DIMENSION(NINTER) :: IS_INTER_USED_WITH_LAW151
64C-----------------------------------------------
65 ! check if int18 + law151 is used in the model
66 ! and create a list of int18 + law151
67 multi_fvm%IS_INT18_LAW151 = .false.
68 my_size = 0
69 ii = 0
70 ! -------------------------------
71 IF(multi_fvm%IS_USED) THEN
72 DO n=1,ninter
73 is_inter_used_with_law151(n) = 0
74 nty =ipari(7,n)
75 inacti = ipari(22,n)
76 ! int18 = int7 + inacti=7 (7+7=18)
77 IF( (nty==7).AND.(inacti ==7)) THEN
78 multi_fvm%IS_INT18_LAW151 = .true.
79 my_size = numnod + numels
80 ii = ii + 1
81 int18_list(ii) = n ! list of interface int18
82 is_inter_used_with_law151(n) = 1
83 ENDIF
84 ENDDO
85 ENDIF
86 ! -------------------------------
87 multi_fvm%S_APPEND_ARRAY = my_size
88 ! number & list of interface 18
89 multi_fvm%NUMBER_INT18 = ii
90 ALLOCATE( multi_fvm%INT18_LIST(multi_fvm%NUMBER_INT18) ) ; multi_fvm%INT18_LIST(:) = 0
91 ALLOCATE( multi_fvm%IS_INTER_USED_WITH_LAW151(ninter) ) ; multi_fvm%IS_INTER_USED_WITH_LAW151(:) = 0
92 ! allocation of X/V/MASS extended to NUMNOD+NUMELS
93 ! 1:NUMNOD --> classical x/v/mass
94 ! NUMNOD+1:NUMNOD+NUMELS --> x/v/mass of phantom nodes (located to the center of
95 ! the ALE elements)
96 ALLOCATE( multi_fvm%X_APPEND(3*my_size) )
97 ALLOCATE( multi_fvm%V_APPEND(3*my_size) )
98 ALLOCATE( multi_fvm%MASS_APPEND(my_size) )
99 ALLOCATE( multi_fvm%KINET_APPEND(my_size) )
100
101 ! allocation of INT18_GLOBAL_LIST : marker for the interface /INT18+LAW151
102 ALLOCATE( multi_fvm%INT18_GLOBAL_LIST(ninter) )
103
104 IF( multi_fvm%IS_INT18_LAW151 ) THEN
105 multi_fvm%INT18_LIST(1:multi_fvm%NUMBER_INT18) = int18_list(1:multi_fvm%NUMBER_INT18)
106 multi_fvm%IS_INTER_USED_WITH_LAW151(1:ninter) = is_inter_used_with_law151(1:ninter)
107 ENDIF
108
109 RETURN