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

Go to the source code of this file.

Functions/Subroutines

subroutine multi_update_partial (local_matid, pm, imat, ng, elbuf_tab, iparg, itask, multi_fvm, volnew)

Function/Subroutine Documentation

◆ multi_update_partial()

subroutine multi_update_partial ( integer, intent(in) local_matid,
dimension(npropm, *), intent(in) pm,
integer, intent(in) imat,
integer, intent(in) ng,
type(elbuf_struct_), dimension(ngroup), target elbuf_tab,
integer, dimension(nparg, *), intent(in) iparg,
integer, intent(in) itask,
type(multi_fvm_struct), intent(inout) multi_fvm,
dimension(*), intent(in) volnew )

Definition at line 32 of file multi_update_partial.F.

34C-----------------------------------------------
35C M o d u l e s
36C-----------------------------------------------
37 USE initbuf_mod
38 USE elbufdef_mod
39 USE multi_fvm_mod
40C-----------------------------------------------
41C I m p l i c i t T y p e s
42C-----------------------------------------------
43#include "implicit_f.inc"
44C-----------------------------------------------
45C C o m m o n B l o c k s
46C-----------------------------------------------
47#include "com01_c.inc"
48#include "param_c.inc"
49C-----------------------------------------------
50C D u m m y A r g u m e n t s
51C-----------------------------------------------
52 INTEGER, INTENT(IN) :: IMAT, NG, LOCAL_MATID
53 my_real, INTENT(IN) :: pm(npropm, *), volnew(*)
54 TYPE(ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP) :: ELBUF_TAB
55 INTEGER, INTENT(IN) :: IPARG(NPARG, *)
56 INTEGER, INTENT(IN) :: ITASK ! SMP TASK
57 TYPE(MULTI_FVM_STRUCT), INTENT(INOUT) :: MULTI_FVM
58C-----------------------------------------------
59C L o c a l V a r i a b l e s
60C-----------------------------------------------
61 TYPE(G_BUFEL_), POINTER :: GBUF
62 TYPE(L_BUFEL_), POINTER :: LBUF
63 INTEGER :: II, I, NEL, NFT
64 my_real :: tmp2, tmp3, tmp4, rho0, e0
65C-----------------------------------------------
66C B e g i n n i n g o f s u b r o u t i n e
67C-----------------------------------------------
68 gbuf => elbuf_tab(ng)%GBUF
69 lbuf => elbuf_tab(ng)%BUFLY(imat)%LBUF(1, 1, 1)
70 rho0 = pm(1, local_matid)
71 e0 = pm(23, local_matid)
72 nel = iparg(2, ng)
73 nft = iparg(3, ng)
74
75 DO ii = 1, nel
76 i = ii + nft
77C Volume
78 tmp4 = multi_fvm%PHASE_ALPHA(imat, i)
79C Mass
80 tmp2 = multi_fvm%PHASE_RHO(imat, i)
81C Mass * e specifique
82 tmp3 = multi_fvm%PHASE_EINT(imat, i)
83
84C Filtrage
85 IF (tmp4 / gbuf%VOL(ii) < em08) THEN
86 multi_fvm%PHASE_ALPHA(imat, i) = zero
87 multi_fvm%PHASE_RHO(imat, i) = rho0
88 multi_fvm%PHASE_EINT(imat, i) = e0
89 ELSE
90 IF (tmp2 < zero) THEN
91 multi_fvm%PHASE_RHO(imat, i) = lbuf%RHO(ii)
92 multi_fvm%PHASE_EINT(imat, i) = lbuf%EINT(ii)
93 multi_fvm%PHASE_ALPHA(imat, i) = tmp4 / volnew(ii)
94 ELSE
95C Mass density
96 multi_fvm%PHASE_RHO(imat, i) = tmp2 / tmp4
97C INternal energy
98 multi_fvm%PHASE_EINT(imat, i) = tmp3 / tmp4
99C Volume fraction
100 multi_fvm%PHASE_ALPHA(imat, i) = tmp4 / volnew(ii)
101 ENDIF
102 ENDIF
103 ENDDO
104C-----------------------------------------------
105C E n d o f s u b r o u t i n e
106C-----------------------------------------------
#define my_real
Definition cppsort.cpp:32