39 . PERCENT_ADDMASS,PERCENT_ADDMASS_OLD,TOTMAS,WEIGHT,IGRNOD,
49#include "implicit_f.inc"
53 INTEGER WEIGHT(*),IGRP_USR,ICNDS10(3,*)
57 TYPE (GROUP_) ,
DIMENSION(NGRNOD) :: IGRNOD
67 INTEGER I,N,COMPT,K,NVAL,SIZ,SIZG,SIZ_MAX,ND,IGROUP
68 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGN
69 my_real,
DIMENSION(:),
ALLOCATABLE,
TARGET ::
71 my_real,
DIMENSION(:),
ALLOCATABLE ::
73 my_real,
DIMENSION(:),
POINTER ::
75 my_real sumk,summ,target_percent
77 INTEGER,
DIMENSION(:),
ALLOCATABLE ::
85 ALLOCATE(tagn(numnod))
90 nd = iabs(icnds10(1,i))
95 IF (igrp_usr < 0)
THEN
97 IF (-igrp_usr==igrnod(i)%ID) igroup = i
105 DO i=1,igrnod(igroup)%NENTITY
106 n = igrnod(igroup)%ENTITY(i)
107 IF ((weight(n)==1).AND.(ms(n)/=zero).AND.(stifn(n)>em20).AND.(tagn(n)==0))
THEN
114 IF ((weight(i)==1).AND.(ms(i)/=zero).AND.(stifn(i)>em20).AND.(tagn(i)==0))
THEN
128 ALLOCATE(dt2_l(2*sizg),stf_l(sizg),ms_l(sizg))
133 ALLOCATE(dt2_l(2*sizg),stf_l(sizg),ms_l(sizg))
136 IF (tagn(i) > 0)
THEN
138 dt2_l(compt) = ms(i)/stifn(i)
140 stf_l(compt) = stifn(i)
149 tmp => dt2_l(sizg+1:sizg*2)
150 ALLOCATE( perm(sizg ))
159 summ = summ + ms_l(i)
160 sumk = sumk + stf_l(i)
163 CALL myqsort(sizg,dt2_l,perm,ierror)
164 tmp(1:sizg) = perm(1:sizg)
173 IF (imassi==1) percent_addmass_old = zero
175 target_percent =
max(zero,percent_addmass - percent_addmass_old)
176 percent_addmass_old = percent_addmass
179 CALL find_dt_target(ms_l,stf_l,target_dt,target_percent,dt2_l,tmp,dtsca,totmas,nval,sizg)
181 DEALLOCATE(dt2_l,stf_l,ms_l)
185 IF (nspmd > 1)
CALL spmd_rbcast(target_dt,target_dt,1,1,0,2)
subroutine find_dt_for_targeted_added_mass(ms, stifn, dtsca, igrp_usr, target_dt, percent_addmass, percent_addmass_old, totmas, weight, igrnod, icnds10)
subroutine find_dt_target(ms, stifn, target_dt_tab, per_adm_tab, dt, tmp, dtsca, totmas, nval, nnod)