Anda di halaman 1dari 32

PUBSY JRC 46829

Pressure-Time Functions for the


Description of Air Blast Waves
Martin Larcher
The Institute for the Protection and Security of the Citizen provides researchbased, systems-
oriented support to EU policies so as to protect the citizen against economic and technological
risk. The Institute maintains and develops its expertise and networks in information,
communication, space and engineering technologies in support of its mission. The strong
crossfertilisation between its nuclear and non-nuclear activities strengthens the expertise it can
bring to the benefit of customers in both domains.














European Commission
Joint Research Centre
Institute for the Protection and Security of the Citizen


Contact information
Address: Martin Larcher, T.P. 480, Joint Research Centre, I-21027 Ispra, ITALY
E-mail: martin.larcher@jrc.it
Tel.: +390332789004
Fax: +390332789049

http://ipsc.jrc.ec.europa.eu
http://www.jrc.ec.europa.eu


Legal Notice
Neither the European Commission nor any person acting on behalf of the Commission is
responsible for the use which might be made of this publication.


A great deal of additional information on the European Union is available on the Internet.
It can be accessed through the Europa server
http://europa.eu/


JRC 46829






European Communities, 2008

Reproduction is authorised provided the source is acknowledged


Printed in Italy


CONTENTS

1 Introduction ................................................................................................................................... 4
2 Air Blast Waves ............................................................................................................................. 5
2.1 Introduction .......................................................................................................................... 5
2.2 Literature Data ..................................................................................................................... 6
2.2.1 Maximum Pressure........................................................................................................... 8
2.2.2 Impulse ............................................................................................................................. 9
2.2.3 Negative Phase ................................................................................................................. 9
2.2.4 Wave Form Parameter ................................................................................................... 11
3 Air Blast Loading Function in EUROPLEXUS .......................................................................... 13
3.1 Used Function .................................................................................................................... 13
3.2 Implementation .................................................................................................................. 13
3.3 AIRB and Debris ................................................................................................................ 14
3.4 AIRB for Z>40 ................................................................................................................... 14
3.4.1 Arrival Time ................................................................................................................... 15
3.4.2 Peak Pressure ................................................................................................................. 15
3.4.3 Time of Duration ............................................................................................................ 16
4 External Program for AIRB Calculations .................................................................................... 18
5 Conclusion ................................................................................................................................... 20
6 References ................................................................................................................................... 21
7 Apendix ....................................................................................................................................... 22
7.1 EUROPLEXUS Code ........................................................................................................ 22
7.2 AIRB Program ................................................................................................................... 27
4
1 Introduction
This work is being conducted in the framework of the project RAILPROTECT, which deals with
the security and safety of rail transport against terrorist attacks. The bombing threat is only
considered, and focus is placed on predicting the effects of explosions in railway and metro stations
and rolling stock and on assessing the vulnerability of such structures.
The project is based on numerical simulations, which are carried out with the explicit Finite
Element Code EUROPLEXUS that is written for the calculation of fast dynamic fluid-structure
interactions. This code has been developed in a collaboration of the French Commissariat
l'Energie Atomique (CEA Saclay) and the Joint Research Centre of the European Commission (JRC
Ispra).
There are several possibilities to simulate explosions, e.g., in trains and stations. The fasted one is to
neglect the influence of the air and to use only the structural part of the geometry. Then, the
behaviour of the explosion can be simulated by using a pressure-time function, which can be
applied on the structure. This technical note presents the pressure-time functions, which are
implemented in EUROPLEXUS. In addition to this implementation, an external routine is
developed, which allows the calculation of several values of the pressure-time function. This
program allows also to calculate, e.g., the charge by a given peak pressure and positive impulse,
which is helpful by fitting experiments to a pressure-time function.

5
2 Air Blast Waves
2.1 Introduction
The pressure that arrives at a certain distance from the explosive depends on the distance and on the
size of the explosive. The form of the pressure wave can be idealised with the form presented in
Figure 1.
p
p
p
p
0
min
max
t
a
t
t
d
t
n
Figure 1: Pressure-time curve for a free air blast wave
The main characteristics of the development of this pressure wave are the following:
- The arrival time t
a
of the shock wave to the point under consideration. This includes the time
of the detonation wave to propagate through the explosive charge.
- The peak overpressure p
max
. The pressure attains its maximum very fast (extremely short
rise-time), and then starts decreasing until it reaches the reference pressure p
o
(in most cases
the normal atmospheric pressure).
- The positive phase duration t
d
, which is the time for reaching the reference pressure. After
this point the pressure drops below the reference pressure until the maximum negative
pressure p
min
. The duration of the negative phase is denoted as t
n
.
- The incident overpressure impulse, which is the integral of the overpressure curve over the
positive phase t
d
.
All these parameters can be found in several diagrams, equations and tables. These parameters are
presented later.
6
The form of this pressure-time curve can be described by the modified Friedlander equation (see
e.g. Baker [1]) and depends on the time t, which starts at the arrival of the pressure wave at this
point (
0
=
a
t t t ):

0 max
( ) 1

| |
= +
|
\ .
d
bt
t
d
t
p t p p
t
(1)
The parameter b describes the decay of the curve.
All parameters of the pressure-time curve are normally written in terms of a scaled distance:

3
=
d
Z
W
(2)
where W is the mass of the explosive charge and d the distance from the centre of the charge.
Beside much more complex geometries four conditions can be distinguish:
- Spherical incident: No boundaries violate the development of the air blast wave. The
pressure is determined without a reflection on a body.
- Spherical reflected: The pressure is determined considering the reflection of the
wave on a surface orthogonal to the wave development. The pressure increases due
to the additional pressure resulting from the stopping of the material velocity.
- Hemispherical incident: The explosive lays on a ground. By neglecting any effects
on the ground (displacements), the charge is doubled compared to the spherical case.
More realistic is a value of approx. 1.8, which takes also into account the destruction
of the ground.
- Hemispherical reflected: Combination of hemispherical and reflected conditions.

2.2 Literature Data
All parameters for the pressure-time curve can be taken from several diagrams and equations. Only
the literature, which is implemented in EUROPLEXUS, is shown here.
The following literature is used mainly:
- Kingery [5]: Experimental diagrams up to Z = 40 (see Figure 2). These diagrams are also
described by several polynomial equations. These equations can only be used up to Z = 40.
7
- Kinney [6]: Equations for conventional and nuclear explosions. These equations have no
limitations.
- Baker [2]: Diagrams similar to them from Kingery. The diagrams are available up to Z =
1000.

Figure 2: Model of Kingery [5] with scaled distances
8
The Kingerys equations for the pressure seem to be not correct for the reflected, hemispherical
case. The equation for the reflected, spherical condition should therefore be used with a factor of
1.8 for the charge.
2.2.1 Maximum Pressure
Kingery [5], Kinney [6], and Baker [2] present diagrams for the maximum (peak) pressure. All
diagrams used a double logarithmic scale. Kingery and Kinney present also equations for the peak
pressure.
The equations of Kingery enjoy the greatest overall acceptance and are widely used as reference by
most researchers. They are available for incident and reflected as well as for spherical and
hemispherical conditions up to a scaled distance of 40 m/kg
1/3
. The diagrams of Baker can be used
as an alternative. They are available up to Z = 1000 m/kg
1/3
.
The equation proposed by Kinney [6] describes the overpressure-distance relation for chemical
explosions as:

2
max
2 2 2
0
808 1
4.5
1 1 1
0.048 0.32 1.35
Z
p
p
Z Z Z
(
| |
+
(
|
\ .
(

=
| | | | | |
+ + +
| | |
\ . \ . \ .
(3)
Figure 3 shows the small differences between the equations of Kingery and Kinney.

Figure 3: Difference of the model of Kingery and the model of Kinney with 1kg TNT
9
2.2.2 Impulse
The impulse of the air blast wave has a big influence on the response of the structures. The impulse
is defined here as the area under the pressure-time curve with the unit of pressure * s. The impulse
can be calculated with (Kinney [6]):

4
1/3 3
2 3
3
0.067 1 ( / 0.23)
100 with [ ], [ / ], [ ]
1 ( / 1.55)
Z
I W I Pa s Z m kg W kg
Z Z
+
=
+
(4)
Another possibility is the polynomial equation of Kingery [5]. The comparison of the impulse
resulting from both equations shows that the equation of Kinney simplifies the curve of the impulse
between a scaled distance of 0.5 and 1.5 m/kg
1/3
.
0
200
400
600
800
0 0.5 1 1.5 2 2.5 3
scaled distance [m/kg
1/3
]
i
m
p
u
l
s
e

[
P
a

s
e
c
]
Kinney
Kingery

Figure 4: Different equations for the impulse (Kinney [6] and Kingery [1])

2.2.3 Negative Phase
Detonations produce an overpressure peak, and afterwards the pressure decreases and drops below
the reference pressure (generally the atmospheric pressure). The influence of the so-called negative
phase depends on the scaled distance. For scaled distances Z larger than 20 and especially for Z
larger than 50 the influence of the negative phase cannot always be neglected. The size of the
positive impulse and of the negative impulse is then nearly the same. If the structure can react
10
successfully to the positive pressure but is more sensitive to a negative pressure, failure of parts of
the structure can result from this negative pressure phase (see Krauthammer [7]). However, in
several cases the negative phase is neglected e.g. in the air blast function of the CONWEP-Code.
The size of the negative pressure as well as the duration of the negative part can be taken from a
diagram (see Figure 5) from Drake [3] (also shown from Krauthammer [7]). Drake has used
experimental data to obtain this diagram. The diagramm can be approximated by:

5
min
4
min
1/3
0.35
10 Pa for 3.5
10 Pa for 3.5
with Z [m/kg ]
p Z
Z
p Z
= >
= < (5)
The duration of the negative phase t
n
in the diagram of Krauthammer can be described with the
following function:

( )
1/ 3
1/ 3
1/ 3
1/3
0.0104 [s] for 0.3
0.003125 log( ) 0.01201 [s] for 0.3 1.9
0.0139 [s] for 1.9
with Z [m/kg ], W [kg]
n
n
n
t W Z
t Z W Z Z
t W Z
= <
= + > . s
= >
(6)

Figure 5: Different parameters for the negative phase (from Krauthammer [7])


11


The form of the negative phase is approximated by a bilinear equation (see also Figure 6):

0 max
0
0
0
1 for
2
( ) for
2
2
( ) for
2
for

| |
= + <
|
\ .
= > . < +
= + > + . < +
= > +
d
bt
t
d
d
min n
d d d
n
min n
d n d d n
n
d n
t
p p p t t
t
p t
p p t t t t t t
t
p t
p p t t t t t t t t
t
p p t t t
(7)


Figure 6: Pressure-time curve for a free air blast wave approximation of the negative phase

2.2.4 Wave Form Parameter
The decay or form parameter b in the Friedlander equation (1) describes the decay of the pressure-
time curve.
Kinney [6] and Baker [2] calculate the parameter b by using the impulse of the positive phase. This
is also done in a former report Larcher [8]. The differences are shown in Figure 7.
12
0
2
4
6
8
10
0 5 10 15 20 25 30 35 40
Z [m/kg
1/3
]
b

[
-
]
Kinney
Baker
Parameter b by using the impulse of the
postive phase

Figure 7: Wave form parameter b different methods
The exponential trend line for the curve generated by the impulse function has the following
equation:

1.1975
1/3
5.2777
with Z [m/kg ]
b Z

=
(8)

The presented equations describe the complete behaviour of an air blast wave under spherical or
hemispherical conditions.
13
3 Air Blast Loading Function in EUROPLEXUS
There are several simulation models for air blast waves (see technical note, Larcher [8]). One
possibility is a calculation, which uses only the structural part. The behaviour of the explosive and
the behaviour of the intermediate air are considered by using a pressure-time function.
The pressure-time function is applied by using an impedance material (IMPE), which can be used
with special elements to load a structure. The name of this material is AIRB. The pressure-time
functions shown in chapter 2 are implemented.
3.1 Used Function
The modified Friedlander equation (1) is used for the implementation. Both, the parameters of
Kingery [5] and Baker [1] are implemented for the maximum pressure. The values of Kingery are
used for both types to calculate the arrival time and the time of duration.
The decay parameter b is calculated using the formula in section 2.2.4.
The Friedlander equation can not be used for the negative part of the pressure-time function.
Therefore, the procedure presented in section 2.2.3 is used to calculate the negative pressure p
min

and the duration of the negative phase t
n
. The form of the negative part is represented with a bilinear
curve. The pressure before and after the positive and negative phase is set to 0 Pa.
The loading of the air blast wave acts in a short time. If big elements are used, the time steps
calculated by using the size of the elements could be too long to resolve the peak pressure.
Therefore, the time step in the positive phase is chosen to the twentieth part of the time of duration.
3.2 Implementation
There are several possibilities to adapt the pressure-time function in EUROPLEXUS:
- The location of the charge can be defined by choosing a node with the keyword NODE.
Alternatively, the coordinates of the charge can be given by using the keywords X, Y, and
Z.
- The mass of the charge (in kg) has to be specified with the keyword MASS.
- The function for the peak pressure (Kingery, Kinney) can be chosen by the keyword CONF.
- The keyword OPOS indicates a pressure-time function, which uses only positive values and
disregards the negative part of the wave. In this part, the pressure is set to 0 Pa. This feature
14
could be helpful for shock tube tests, which show a behaviour similar to air blast waves in
the positive part but not in the negative part.
- The start time of the detonation can be defined with TINT. The default value is 0 s. To avoid
a long calculation of the structure without any loading of the structure (up to the arrival of
the air blast wave to the first element loaded), the start time of the detonation con be defined
as negative. This can also be done automatically in a way that the calculation starts shortly
before the air blast wave reaches the first element. The keyword TAUT indicates this
automatic start time.
Details are described in the EUROPLEXUS Users Manual [4].
3.3 AIRB and Debris
EUROPLEXUS provides the possibility to develop flying particles (so-called debris) from failed
elements. This can be used to simulate the behaviour of glass splinters after the failure of the glass.
A debris has only a diameter and a mass. The influence of the air blast on the debris should also be
considered. Due to the fact that the geometry of the debris is not known especially the size of the
surface, which is loaded by the air blast wave an intermediate value between the minimum surface
and the maximum surface of the debris can be chosen for the calculation of the AIRB parameter.
For each shell element and beam element a minimum and a maximum area are estimated. By using
the keyword AFLY the minimum (AFLY = 0.0) or the maximum (AFLY = 1.0) value is used.
Values of ALFY between 0.0 and 1.0 interpolate linearly between these two values. The default
value is 0.5. This possibility is only available for shell elements. For solid elements, the cross
section of the debris is used.
3.4 AIRB for Z>40
The equation from Kingery [5] are not applicable for values of Z>40 (polynomial base). Due to the
fact, that the debris are also loaded from the AIRB command and the distance of the debris to the
charge could be big, the values for bigger scaled distances should be available also for the AIRB
command.
Several assumptions are done for the arrival time, the peak pressure and the time of duration. The
negative part of the equation is not changed due to the fact that these equations are not polynomial
one.
15
3.4.1 Arrival Time
The arrival time for a scaled distance Z>40 is calculated in a way, that the sound velocity is used
from reaching the scaled distance of Z=40 m/kg
1/3
. This is done by the following equation:

( ) ( 40)
( ) ( 40)
343 m/s
a a
d Z d Z
t Z t Z
=
= = + (9)
3.4.2 Peak Pressure
For the peak pressure, the equations of Kinney [6] can be used. This equation does not use
polynomial base and therefore, this equation does not have a limit. The diagram of Baker [2] shows
for the peak pressure (incident as well as reflected condition) a quasi linear behaviour in the double
logarithmic scale. This linear curve is used to expand the equations from Kingery also for higher
distances. The hemispherical case is considered by using a factor 2.0 of spherical case.
The incident pressure can be approximated with:
p = 10
-1.10 log(Z) + 5.00
for Z>40 m/kg
1/3

The junction between both parts of the equations (Kingery [5] and Baker [2]) is not possible on an
analytic way. It can be shown (see Figure 8) that the difference between both equations is very
small in the range of Z=40 m/kg
1/3
. Therefore, the equation of Baker is used for values Z>40
without any intersection to the equation of Kingery.
1000
1500
2000
2500
3000
3500
4000
10 20 30 40 50 60 70 80 90 100
Z [m/kg
1/3
]
p

[
P
a
]
Kingery
Baker

16
Figure 8: Comparison between the equations of Kingery and Baker for incident peak pressure
The reflected peak pressure of Baker can be approximated with:
p = 10
-1.147 log (Z) + 5.375
Pa for Z>40 m/kg
1/3

The comparison between the curve of Kingery and the curve of Baker in the range of Z=40 shows
(Figure 9) that an intersection is also not necessary for the reflected pressure.
0
4000
8000
12000
16000
20000
0 10 20 30 40 50 60 70 80 90 100
Z [m/kg
1/3
]
p

[
P
a
]
Kingery
Baker

Figure 9: Comparison between the equations of Kingery and Baker for reflected peak pressure
3.4.3 Time of Duration
The time of duration in the diagram of Baker can also be approximated with a line, which has the
following equation:
t
d
= 10
0.230 log(Z) - 2.594
s for Z>40 m/kg
1/3
There is a bigger difference in the time of duration between Kingery and Baker. Both curves not cut
themself. Therefore, for values Z>40 the diagram of Baker is used accepting a step at this point.
17
0
2
4
6
8
10
0 10 20 30 40 50 60 70 80 90 100
Z [m/kg
1/3
]
t

[
m
s
]
Kingery
Baker

Figure 10: Comparison between the equations of Kingery and Baker for time of duration

All these functions are implemented in the AIRB command in EUROPLEXUS for values of
Z>40 m/kg
1/3
.
18
4 External Program for AIRB Calculations
The functions described in chapters 2 and 3 are implemented in EUROPLEXUS. Sometimes these
values are also needed e.g. only for one point. To simplify the calculation of these values, a small
program is written (airb.f), which uses the same subroutine for the calculation of the parameter as
EUROPLEXUS.
In addition, this program can be used for several special calculations. The units used for this
program are: s, kg, Pa. The names of the parameters and their units are shown in Table 1.

Parameter Description Unit
Z_BLAST scaled distance m/kg
1/3

P_MAX peak pressure Pa
T_START arrival time s
T_D time of duration (positive) s
P_NEG minimum pressure Pa
T_NEG time of duration (negative) s
B_BLAST form parameter b -
I_POS positive impulse Pa s
D distance m
CHARGE charge kg
P pressure Pa
Table 1: Parameters of the program AIRB

The program has the following possibilities:
- Main values (1): scaled distance, peak pressure, arrival time, time of duration of the positive
phase, positive impulse, minimum pressure, time of duration of the negative phase, form
parameter
19
- Function of distance: (2): for a given charge, several parameters can be calculated as a
function of the distance.
- Pressure-time curve (3): for a given distance and charge, the pressure-time function is
calculated.
- Pressure-distance curve (4): for a given time and charge, the pressure is calculated as a
function of the distance. This results in the form of the wave at a certain time.
- Given: P_MAX Z_BLAST (5): this function interpolates the pressure-distance function
to get for a maximum pressure the corresponding scaled distance. To get also the charge and
the distance, a second parameter is needed (see 6)
- Given: P_MAX, I_POS D, CHARGE (6): this function calculates the scaled distance
and, in addition to the function 5, also the distance and the charge by using the positive
impulse. If the peak pressure and the positive impulse are coming from experiments, the
result should be compared with the time of duration (if given) to see the correspondence.
- Given: I_POS, CHARGE D, Z_BLAST (7): this function calculates the distance (and
also the scaled distance) for a given charge and a given positive impulse.
All calculations need the input of the equation chosen. This could be a Kingery or a Kinney
approximation with several conditions (spherical/hemispherical/incident/reflected). For the
functions 2, 3, and 4 also the range for the output and the step size has to be defined.
The output can also be done into a file.
20
5 Conclusion
The usage of a pressure-time function for a structure loaded by an air blast wave is a very effective
method. Indeed, this method neglects the influence of reflections, shadowing and channelling.
The AIRB function, used in EUROPLEXUS is presented, which uses several equation from the
literature to describe an air blast wave. The AIRB function is also used from the batch program
airb.exe. This program is helpful to determine the parameters of an air blast wave in an easy way
and allows also the calculation of missing air blast parameters, if only some of them are given.
21
6 References
[1] Baker, Wilfrid E.: Explosions in the Air, University of Texas Pr., Austin, 1973.
[2] Baker, W.E.; Cox, P.A.; Westine, P.S.; Kulesz, J.J.; Strehlow, R.A.: Explosion Hazards and
Evaluation, Elsevier, Amsterdam, 1983.
[3] Drake, J.; Twisdale, L.; Frank, R.; Dass, W.; Rochefort, M.; Walker, R.; Britt, J.; Murphy, C.;
Slawson, T.; Sues, R.: Protective construction design manual, Tech. Rep. ESL-TR-87-57, Air
Force Engineering and Services Center, Tyndall Air Force Base, Florida (1989).
[4] EUROPLEXUS, Users Manual, online version.
[5] Kingery, Charles N.; Bulmash, Gerald: Airblast Parameters from TNT Spherical Air Burst
and Hemispherical Surface Burst, Defence Technical Information Center, Ballistic Research
Laboratory, Aberdeen Proving Ground, Maryland, 1984.
[6] Kinney, Gilbert F.; Graham, Kenneth J.: Explosive Shocks in Air, Springer, Berlin, 1985.
[7] Krauthammer, T.; Altenberg, A.: Negative phase blast effects on glass panels, International
Journal of Impact Engineering, 24 (1), pp. 1-18; 2000.
[8] Larcher, M.: Simulation of the Effects of an Air Blast Wave. JRC Technical Note, Pubsy
JRC41337, Ispra 2007.
[9] Protective Design Center, United States Army Corps of Engineers: CONWEP, Conventional
Weapons Effects, https://pdc.usace.army.mil/software/conwep/, 22.May 2007.
22
7 Apendix
7.1 EUROPLEXUS Code
m_material_i_airb.ff
C M_MATERIAL_I_AIRB TOUS FCASADEI 08/07/25
02:11:54
MODULE M_MATERIAL_I_AIRB
*
* material of type "air blast" (16_26)
*
USE M_MATERIALS
USE M_MATERIALS_ARRAY
*
IMPLICIT NONE
SAVE
*
PRIVATE
PUBLIC :: MI_AIRB, CL_AIRB, INIT_AIRB
*
CONTAINS
*=============================================
SUBROUTINE MI_AIRB (INUMLDC, X)
* ------------------------------------------------------------------
* impedance : air blast m.larcher 04-07
* ------------------------------------------------------------------
* iop=26 (airb)
* xmut(1) = x-coordinate of explosive charge
* xmut(2) = y-coordinate of explosive charge
* xmut(3) = z-coordinate of explosive charge
* xmut(4) = mass of explosive charge (in kg)
* xmut(5) = initial time of the explosion
* xmut(6) = choose of different explosion models
* 1 = unconfined (full space), reflected (kingery)
* 2 = unconfined (full space), not reflected (kingery)
* 3 = unconfined (full space), not reflected (baker)
* 4 = half-confined (half space), reflected (kingery)
* 5 = half-confined (half space), not reflected
(kingery)
* xmut(8) = flag for only positive pressure
*
INCLUDE 'NONE.INC'
*
INCLUDE 'CARMA.INC'
INCLUDE 'CONTRO.INC'
INCLUDE 'POUBTX.INC'
INCLUDE 'REDCOM.INC'
*
*----- variables globales :
INTEGER, INTENT(IN) :: INUMLDC
REAL(8), INTENT(IN) :: X(IDIM,*)
*
*----- variables locales :
INTEGER, PARAMETER :: NMOT=9 , LENX=8 , LENI =
1
CHARACTER*4 :: MOT(NMOT)
INTEGER :: KOPT(NMOT), IOP, IH, NC(NPTL), NODE
LOGICAL :: IMPRIM
*
DATA MOT/'X ','Y ','Z
','MASS','TINT','CONF','NODE',
& 'TAUT','OPOS'/
*
INTEGER, PARAMETER :: N_MSG = 8 , LG_FMT = 350
CHARACTER(LG_FMT) :: GET_FMT(N_MSG)
*IF FRANCAIS
CHARACTER(32), PARAMETER :: NOM='IMPEDANCE
(EXPLOSION EN AIR)'
DATA GET_FMT(:) /
>'X-COORD DE LA CHARGE',
>'Y-COORD DE LA CHARGE',
>'Z-COORD DE LA CHARGE',
>'MASSE DE LA CHARGE',
>'TEMPS INITIAL DE L EXPLOSION',
>'CONFINEMENT (1=LIBRE, REFLECHIE, KINGERY,
>2=LIBRE, NO REFLECHIE,KINGERY,
>3=LIBRE, REFLECHIE,BAKER,
>4=DEMI-ESPACE, REFLECHIE,KINGERY,
>5=DEMI-ESPACE, NO REFLECHIE,KINGERY)',
>'NOEUD DE LA CHARGE',
>'ONLY POSITIVE PRESSURE?'/
CELSE
CHARACTER(32), PARAMETER :: NOM='IMPEDANCE
(AIR BLAST)'
DATA GET_FMT(:) /
>'X-COOR OF THE CHARGE',
>'Y-COOR OF THE CHARGE',
>'Z-COOR OF THE CHARGE',
>'MASS OF THE CHARGE',
>'INITIAL TIME OF THE EXPLOSION',
>'CONFINEMENT (1=UNCONFINED,
REFLECTED,KINGERY,
>2=UNCONFINED, NOT REFLECTED,KINGERY,
>3=UNCONFINED, REFLECTED,BAKER,
>4=HALF-SPACE, REFLECTED,KINGERY,
>5=HALF-SPACE, NOT REFLECTED,KINGERY)',
>'NODE OF THE CHARGE',
>'ONLY POSITIVE PRESSURE?'/
CENDIF
*
CALL CREATE_MATERIAL (LENX, LENI, 0)
NEWMAT%NAME = NOM
NEWMAT%TYPE = 16 !! IMPEDANCE
NEWMAT%MATENT(1) = 26 !! NUMERO DE
L'IMPEDANCE
NEWMAT%NUMLDC = INUMLDC
NEWMAT%LGECR = LGECR(NEWMAT%TYPE)
*
*----- lecture des parametres
! CALL
LIRVAL(NMOT,MOT,NEWMAT%MATVAL,KOPT)
KOPT(:) = 0
*
11 CALL LIRMOT (MOT, NMOT, IOP)
IF (IOP > 0) THEN
KOPT(IOP) = 1
SELECT CASE (IOP)
CASE (1:4,6) ! X, Y, Z, MASS, TINT, CONF
CALL LIRE(3)
NEWMAT%MATVAL(IOP) = DPREC
CASE (5) ! TINT
IF (KOPT(8) /= 0) THEN
CALL ERRMSS('MAT_AIRB',
> 'TINT AND TAUT CANT BE USED
TOGETHER')
STOP 'MAT_AIRB 5'
ENDIF
CALL LIRE(3)
NEWMAT%MATVAL(IOP) = DPREC
23
CASE (7) ! POIN
CALL LIRLEC (1, NC, IH)
IF (IH /= 1) THEN
CALL ERRMSS('MAT_AIRB','ONLY ONE NODE
MUST BE GIVEN')
STOP 'MAT_AIRB 4'
ENDIF
NEWMAT%MATVAL(IOP) = NC(1)
CASE (8) ! TAUT
IF (KOPT(5) /= 0) THEN
CALL ERRMSS('MAT_AIRB',
> 'TINT AND TAUT CANT BE USED
TOGETHER')
STOP 'MAT_AIRB 5'
ENDIF
NEWMAT%MATVAL(5)=HUGE(0.D0) ! TAUT
CASE (9) ! OPOS
NEWMAT%MATVAL(8)=1.D0 ! TAUT
END SELECT
GO TO 11
ENDIF
*
*----- donnees completes ? (1, 2, 4 ou 4, 7 indispensables)
IF((KOPT(1)+KOPT(2)+KOPT(4)) /= 3) THEN
IF((KOPT(4)+KOPT(7)) /= 2) THEN
WRITE(BLABLA,1001)
CALL ERRMSS('MAT_AIRB',BLABLA)
STOP 'MAT_AIRB 3'
ENDIF
ENDIF
*
* consistency checks
IF (KOPT(1)+KOPT(7) == 2 .OR. KOPT(2)+KOPT(7) == 2
.OR.
> KOPT(3)+KOPT(7) == 2) THEN
CALL ERRMSS ('MI_AIRB','X,Y,Z AND NODE ARE
MUTUALLY EXCLUSIVE')
ENDIF
IF (KOPT(7) /= 0) THEN
* user has specified node: extract its coordinates
NODE = INT (NEWMAT%MATVAL(7) + 0.1)
NEWMAT%MATVAL(1) = X(1,NODE)
NEWMAT%MATVAL(2) = X(2,NODE)
IF (IDIM == 3) NEWMAT%MATVAL(3) = X(3,NODE)
ENDIF
IF (KOPT(3) /= 0) THEN
IF (IDIM < 3) CALL ATTMSS ('MI_AIRB','Z UNUSED
IN 2D')
ENDIF
*
* default values
IF((KOPT(5) == 0).AND.(KOPT(8) == 0))
NEWMAT%MATVAL(5)=-HUGE(0.D0)
! TINT
IF(KOPT(6) == 0) NEWMAT%MATVAL(6)=1.D0 !
CONF
*
*----- impressions
WRITE(BLABLA,1000)
NEWMAT%NUMLDC,NEWMAT%NAME
CALL MECTSG(BLABLA)
IF(IMPRIM(8)) THEN
CALL
MECVAL(GET_FMT(1),NEWMAT%MATVAL(1))
CALL
MECVAL(GET_FMT(2),NEWMAT%MATVAL(2))
CALL
MECVAL(GET_FMT(3),NEWMAT%MATVAL(3))
CALL
MECVAL(GET_FMT(4),NEWMAT%MATVAL(4))
IF(NEWMAT%MATVAL(5)>1.D20) THEN
CALL MECTEX(GET_FMT(5),'START TIME')
ELSEIF(NEWMAT%MATVAL(5)<-1.D20) THEN
CALL MECTEX(GET_FMT(5),'AUTOMATIC')
ELSE
CALL
MECVAL(GET_FMT(5),NEWMAT%MATVAL(5))
ENDIF
CALL
MECVAL(GET_FMT(6),NEWMAT%MATVAL(6))
IF (KOPT(7) /= 0) THEN
CALL
MECNUM(GET_FMT(7),INT(NEWMAT%MATVAL(7)))
ENDIF
IF(NEWMAT%MATVAL(8)>0.5D0) THEN
CALL MECTEX(GET_FMT(8),'ONLY POSITIVE
PRESSURES')
ELSE
CALL MECTEX(GET_FMT(8),'ALSO NEGATIVE
PRESSURES')
ENDIF
ENDIF
*
*IF FRANCAIS
1000 FORMAT('LOI NUMERO',I5,' : ',A)
1001 FORMAT('LA DIRECTIVE "AIRB" EST
INCOMPLETE')
CELSE
1000 FORMAT('LAW NUMBER',I5,' : ',A)
1001 FORMAT('THE DIRECTIVE "AIRB" IS
INCOMPLETE')
CENDIF
*
END SUBROUTINE MI_AIRB
*==========================================
SUBROUTINE CL_AIRB (MAT_CUR, ECR, D, P,
DTAIRB)
* ------------------------------------------------------------------
* cond. aux limites air blast m.larcher 04-07
* ------------------------------------------------------------------
* mat_cur : current material
* matval(1) = x-coordinate of explosive charge
* matval(2) = y-coordinate of explosive charge
* matval(3) = z-coordinate of explosive charge
* matval(4) = mass of explosive charge (in kg)
* matval(5) = initial time of the explosion
* matval(6) = choose of different explosion models
* 1 = unconfined (full space), reflected (kingery)
* 2 = unconfined (full space), not reflected
(kingery)
* 3 = unconfined (full space), not reflected (kinney)
* 4 = half-confined (half space), reflected (kingery)
* 5 = half-confined (half space), not reflected
(kingery)
* matval(8) = flag only positive pressure
* d : distance between charge and clxx element centroid
* (already computed in the clxx element)
* p : blast pressure (output)
* ecr(1) : pressure (output)
* dtairb : maximal time step (output)
*
IMPLICIT NONE
*
INCLUDE 'TEMPX.INC' ! T = CURRENT TIME
INCLUDE 'TEMPS1.INC' ! TINIZI = INITIAL TIME
*
24
*--- variables globales
TYPE(MATERIAL), INTENT(INOUT) :: MAT_CUR
REAL(8), INTENT(IN) :: D
REAL(8), INTENT(OUT) :: P
REAL(8), INTENT(INOUT) :: DTAIRB
REAL(8), INTENT(INOUT) :: ECR(*)
*--- variables locales
REAL(8) :: T_START ,T_D , T_CURR, T_NEG
REAL(8) :: PARAM1, PARAM2, PARAM3,PARAM4
REAL(8) :: PARAM5, PARAM6, PARAM7,PARAM8
REAL(8) :: P_MAX, B_BLAST , Z_BLAST, U_T_D,
Y_CONWEP,TINT,
> P_MAX1, T_MAX1, T_D1, U_P_MAX, P_NEG,
DTSTAB, CHARGE,Z_BLAST1
REAL(8), DIMENSION(9) :: POLY_T_D
REAL(8), DIMENSION(12) :: POLY_P_MAX
INTEGER :: I, COND, EQU
*
P = 0.D0 ! INITIALIZATION
DTSTAB = DTAIRB !STORING OF THE STABLE TIME
STEP SIZE TO USE
!ALSO SMALLER TIME STEPS FOR THE
FIRST TIME
!STEP WITH AIRB
DTAIRB = HUGE(DTAIRB)
! INITIALISATION - ONLY IN THE POSITIVE
PHASE THE
! TIME STEP SIZE WILL BE CHANGED
EQU = MAT_CUR%MATVAL(6)
CHARGE = MAT_CUR%MATVAL(4)
TINT = MAT_CUR%MATVAL(5)
*----- time of explosion-------------------------------------------
IF (MAT_CUR%MATVAL(5)<-1.D20)
MAT_CUR%MATVAL(5)=TINIZI
*----- air blast pressure
*----- arrival time
IF(EQU<4) THEN
COND=1
ELSE
COND=2
ENDIF
*----- arrival time
CALL TARRIVE_AIRB (CHARGE, D, COND,T_START)
*----- time in the pressure curve
T_CURR = T - TINT - T_START
IF (T_CURR+DTSTAB>0) THEN !ALSO THE TIME
STEP BEFORE THE STARTING
!OF THE AIRB
*----------------------------------------------------------------------
CALL AIRB_PARAMETER(EQU,CHARGE,D, P_MAX,
T_START, T_D,
> P_NEG, T_NEG, B_BLAST)
*end different models
1000 P = P_MAX*(1.D0-T_CURR/T_D)*EXP(-
B_BLAST*T_CURR/T_D)
IF (T_CURR<T_D) THEN ! POSTIVE PHASE IN 20
STEPS
DTAIRB = T_D/20.D0
END IF
IF(MAT_CUR%MATVAL(8)<0.5D0) THEN
IF (T_CURR>T_D . AND . T_CURR<=T_D+T_NEG/2.)
THEN
! NEGATIVE PHASE
P = 2.*P_NEG/T_NEG*(T_D-T_CURR)
ELSE IF (T_CURR>T_D+T_NEG/2. . AND .
T_CURR<=T_D+T_NEG)THEN
! NEGATIVE PHASE
P = 2.*P_NEG/T_NEG*(T_CURR-T_D-T_NEG)
ELSE IF (T_CURR>T_D+T_NEG) THEN
P=0.D0 ! AFTER LOADING
END IF
ELSE IF(T_CURR>T_D) THEN ! NO NEGATIVE
PRESSURE
P=0.D0
ENDIF
IF (T_CURR<0) P=0.D0 !IF TIME STEP BEFORE AIRB
END IF !END OF CALCULATION
(T_CURR+DTSTAB>0)
IF(P<-1D5)P=-1D5
ECR(1) = P
*
END SUBROUTINE CL_AIRB
*=============================================
SUBROUTINE INIT_AIRB (INDOX,X,NUMN)
* ------------------------------------------------------------------
* calculation of the automatic start time of the air blast
m.larcher 02-08
* ------------------------------------------------------------------
* indox : element info
* x : coordinates
* numn : number of the nodes of the elements

*
USE M_MATERIALS

INCLUDE 'NONE.INC'
INCLUDE 'CAREL.INC'
INCLUDE 'CONTRO.INC'
*
*--- variables globales
INTEGER, INTENT(IN) :: INDOX(NELEM,*),NUMN(*)
REAL(8), INTENT(IN) :: X(IDIM,*)

*--- variables locales
REAL(8) :: XC,YC,ZC,DX,DY,DZ, D, T_ARR, T_ARR1
INTEGER :: I,IEL,ITYP,COND,MATTYP,IOP,NNO,IAD
TYPE(MATERIAL),POINTER :: MAT_CUR
LOGICAL :: TAUTO,TINIT

T_ARR1 = HUGE(T_ARR1)
TAUTO = .FALSE.
TINIT = .FALSE.

DO IEL = 1, NELEM
ITYP = INDOX(IEL,1)
MATTYP = INDOX(IEL,2)
IF(MATTYP==16) THEN !IMPE
MAT_CUR => MATERIALS(FNUMAT(IEL))
IOP=MAT_CUR%MATENT(1)
IF(IOP==26) THEN !AIRB
IF(MAT_CUR%MATVAL(5)>1.D20) THEN
TAUTO = .TRUE.
XC = 0.D0
YC = 0.D0
ZC = 0.D0
NNO = NCEL(1,ITYP)
IAD = INDOX(IEL,3)
DO I = 1, NNO ! CENTROID COORDINATES
XC = XC + X(1,NUMN(IAD+I-1))
YC = YC + X(2,NUMN(IAD+I-1))
ZC = ZC + X(3,NUMN(IAD+I-1))
END DO
XC = XC / NNO
YC = YC / NNO
ZC = ZC / NNO
DX = MAT_CUR%MATVAL(1) - XC ! DISTANCE
25
DY = MAT_CUR%MATVAL(2) - YC
DZ = MAT_CUR%MATVAL(3) - ZC
* additional calculations for dtstab required for the partitioning
D = SQRT (DX*DX + DY*DY + DZ*DZ)
IF(MAT_CUR%MATVAL(6)<4) THEN
COND=1
ELSE
COND=2
ENDIF
CALL TARRIVE_AIRB (MAT_CUR%MATVAL(4),
D, COND,T_ARR)
IF(T_ARR<T_ARR1) THEN
T_ARR1 = T_ARR
ENDIF
ELSE
TINIT = .TRUE.
ENDIF
ENDIF
ENDIF
END DO
IF(TAUTO) THEN
IF(TINIT) THEN
CALL ERRMSS('INIT_AIRB','TAUT NOT
COMPATIBLE WITH TINT')
STOP 'INIT_AIRB'
ENDIF
T_ARR1=-0.99*T_ARR1
CALL MECTSG('AUTOMATIC INITIAL TIME FOR
IMPE_AIRB')
CALL MECVAL('THE STARTING TIME IS ',T_ARR1)
DO IEL = 1, NELEM
ITYP = INDOX(IEL,1)
MATTYP = INDOX(IEL,2)
IF(MATTYP==16) THEN
MAT_CUR => MATERIALS(FNUMAT(IEL))
IOP=MAT_CUR%MATENT(1)
IF(IOP==26) THEN !AIRB
MAT_CUR%MATVAL(5) = T_ARR1
ENDIF
ENDIF
END DO
ENDIF
*
END SUBROUTINE INIT_AIRB
*=============================================
SUBROUTINE AIRB_PARAMETER (EQU, CHARGE, D,
P_MAX, T_START, T_D,
> P_NEG, T_NEG, B_BLAST)
* ------------------------------------------------------------------
* cond. aux limites air blast m.larcher 04-07
* ------------------------------------------------------------------
* charge = mass of explosive charge (in kg)
* equ = choose of different explosion models
* 1 = unconfined (full space), reflected (kingery)
* 2 = unconfined (full space), not reflected (kingery)
* 3 = unconfined (full space), not reflected (kinney)
* 4 = half-confined (half space), reflected (kingery)
* 5 = half-confined (half space), not reflected (kingery)
* d : distance between charge and clxx element centroid
* p_max : max peak blast pressure (output)
*
IMPLICIT NONE
*
*--- variables globales
REAL(8), INTENT(IN) :: D, CHARGE
INTEGER, INTENT(IN) :: EQU
REAL(8), INTENT(OUT) :: P_MAX, T_START, T_D,
P_NEG, T_NEG, B_BLAST
*--- variables locales
REAL(8) :: PARAM1, PARAM2, PARAM3,PARAM4
REAL(8) :: PARAM5, PARAM6, PARAM7,PARAM8
REAL(8) :: Z_BLAST, U_T_D, Y_CONWEP,
> P_MAX1, T_MAX1, T_D1, U_P_MAX, Z_BLAST1
REAL(8), DIMENSION(9) :: POLY_T_D
REAL(8), DIMENSION(12) :: POLY_P_MAX
INTEGER :: I,COND
*
*----- air blast pressure
*----- parameters of detonation for all models
Z_BLAST = D/CHARGE**0.333333D0
B_BLAST = 5.2777D0*(Z_BLAST**(-1.1975D0))
P_NEG = MIN(1.D5,79433.D0/(Z_BLAST**1.05D0))
IF(Z_BLAST<0.3D0) THEN
T_NEG = 0.0104D0 * CHARGE**(1./3.)
ELSE IF(Z_BLAST>1.9D0) THEN
T_NEG = 0.0139D0 * CHARGE**(1./3.)
ELSE
T_NEG = (3.125D0 * LOG10(Z_BLAST) + 12.01D0)*
> CHARGE**(1./3.)*1D-3
END IF
*----- conwep is used for all models with different parameters
*----- arrival time
IF(EQU<4) THEN
COND=1
ELSE
COND=2
ENDIF
*----- arrival time
CALL TARRIVE_AIRB (CHARGE, D, COND,T_START)
*----------------------------------------------------------------------
*begin different models
P_MAX=0
T_D=0
P_MAX1=0
T_D1=0
*--------------------------------------------------------------------
*baker incident
IF (EQU==3) THEN
PARAM1 = 808.D0*(1.D0+(Z_BLAST/4.5D0)**2.0)
PARAM2 = SQRT(1.D0+(Z_BLAST/0.048D0)**2.0)
PARAM3 = SQRT(1.D0+(Z_BLAST/0.32D0)**2.0)
PARAM4 = SQRT(1.D0+(Z_BLAST/1.35D0)**2.0)
*------- max pressure for this distance
P_MAX = 1D5 *
PARAM1/(PARAM2*PARAM3*PARAM4)
PARAM5 = 980.D0*(1.D0+(Z_BLAST/0.54D0)**10.D0)
PARAM6 = 1.D0+(Z_BLAST/0.02D0)**3.D0
PARAM7 = 1.D0+(Z_BLAST/0.74D0)**6.D0
PARAM8 = SQRT(1.D0+(Z_BLAST/6.9)**2.0)
T_D = 1D-3 * CHARGE**(1.D0/3.D0) *
>
PARAM5/(PARAM6*PARAM7*PARAM8)
RETURN
END IF
*--------------------------------------------------------------------
* formula for hemispherical reflected in kingery seems to be
wrong.
* therefore, the hemispherical formula is used for the pressure
* by dividing the charge with 1.8
*
IF(EQU==1) THEN
Z_BLAST1 = D/((CHARGE/1.8)**0.33333333D0)
ELSE
Z_BLAST1=Z_BLAST
ENDIF
* kingery spherical
26
IF(EQU==1 .OR. EQU==2) THEN
IF(Z_BLAST<0.888) THEN
U_T_D =
2.26367268496+5.11588554305*LOG10(Z_BLAST)
POLY_T_D = (/-0.686608550419, 0.164953518069,
0.127788499497,
> 0.00291430135946, 0.00187957449227,
0.0173413962543,
> 0.00269739758043, -0.00361976502798, -
0.00100926577934/)
ELSE IF(Z_BLAST>2.28) THEN
U_T_D = -3.130058+3.152472*LOG10(Z_BLAST)
POLY_T_D = (/0.62103, 0.096703, -0.00801302,
0.00482705,
> 0.00187587,-0.002467385,-0.000841116668,
0.00061932910, 0.0/)
ELSE
U_T_D = -
1.33361206714+9.2996288611*LOG10(Z_BLAST)
POLY_T_D = (/ 0.23031841078,-
0.0297944268969,0.0306329542941,
> 0.0183405574074, -0.0173964666286, -
0.00106321963576,
> 0.0056206003128, 0.0001618217499, -
0.0006860188944 /)
END IF
*--------------------------------------------------------------------
* kingery hemispherical
ELSE
IF(Z_BLAST<1.01) THEN
U_T_D =
1.92946154068+5.25099193925*LOG10(Z_BLAST)
POLY_T_D = (/-0.6142276, 0.1301437, 0.13872,
0.039157,
> -0.00475933, -0.00428144, 0.0, 0.0, 0.0/)
ELSE IF(Z_BLAST>2.78) THEN
U_T_D = -3.53626+3.463497*LOG10(Z_BLAST)
POLY_T_D =(/0.6869066, 0.09330353, -0.00058494, -
0.0022688499,
> -0.000295908, 0.0014802986, 0.0, 0.0, 0.0 /)
ELSE
U_T_D = -2.124925+9.2996288*LOG10(Z_BLAST)
POLY_T_D = (/0.31540924, -0.0297944, 0.0306329,
0.018340557,
> -0.0173964,-0.00106321,0.0056206,0.000161821,-
0.00068601889/)
END IF
END IF
*--------------------------------------------------------------------
* kingery spherical, reflected
* the formula in kingery seems to be wrong. therefore, the
hemispherical
* formula is used by dividing the charge with 1.8
*
* if(equ==1) then
* u_p_max = -
0.214362789151+1.35034249993*log10(z_blast)
* poly_p_max = (/3.22958031387, -2.21400538997,
0.35119031446,
* > 0.657599992109, 0.0141818951887, -0.243076636231,
* > -0.0158699803158, 0.0492741184234,
0.00227639644004,
* > -0.00397126276058, 0.0 , 0.0/)
*--------------------------------------------------------------------
IF(Z_BLAST1<40)THEN
* kingery spherical, incident
IF (EQU==2) THEN
U_P_MAX = -
0.214362789151+1.35034249993*LOG10(Z_BLAST1)
POLY_P_MAX = (/2.611368669, -1.69012801396,
0.00804973591951,
> 0.336743114941, -0.00516226351334, -0.0809228619888,
> -0.00478507266747, 0.00793030472242,
0.0007684469735,
> 0.0, 0.0, 0.0/)
*--------------------------------------------------------------------
* kingery hemispherical, reflected (also spherical reflected)
ELSE IF((EQU==1).OR.(EQU==4)) THEN
U_P_MAX = -
0.240657322658+1.36637719229*LOG10(Z_BLAST1)
POLY_P_MAX = (/3.4028321, -2.2103087, -0.218536586,
0.89531958,
> 0.24989, -0.569249, -0.1179168, 0.2241311, 0.0245620, -
0.0455116,
> -0.001909307, 0.003614711/)
*--------------------------------------------------------------------
* kingery hemispherical, incident
ELSE IF (EQU==5) THEN
U_P_MAX = -
0.214362789151+1.35034249993*LOG10(Z_BLAST1)
POLY_P_MAX = (/2.780769, -1.6958988, -0.1541937,
0.514050,
> 0.0988534, -0.2939126, -0.02681123,
0.109097,0.001628467,
> -0.0214631, 0.0001456723, 0.001678477/)
END IF
*--------------------------------------------------------------------
* kingery calculation
DO I = 1, 12
P_MAX1 = P_MAX1 +
POLY_P_MAX(I)*U_P_MAX**(I-1)
END DO
P_MAX= 1D3 * 10 ** P_MAX1
DO I = 1, 9
T_D1 = T_D1 + POLY_T_D(I)*U_T_D**(I-1)
END DO
T_D= (1D-3 * 10 ** T_D1)*CHARGE**(1./3.)
ELSE !Z>40
SELECT CASE (EQU)
CASE (1) !KINGERY SPHERICAL REFLECTED
P_MAX = 10 ** (-1.147D0 * LOG10(Z_BLAST1) +
5.375D0)
CASE (2) !KINGERY SPHERICAL, INCIDENT
P_MAX = 10 ** (-1.1D0 * LOG10(Z_BLAST1) + 5.D0)
CASE (4) !KINGERY HEMISPHERICAL, REFLECTED
Z_BLAST1 = D/(CHARGE*1.8)**0.333333D0
P_MAX = 10 ** (-1.147D0 * LOG10(Z_BLAST1) +
5.375D0)
CASE(5) !KINGERY HEMISPHERICAL, INCIDENT
Z_BLAST1 = D/(CHARGE*1.8)**0.333333D0
P_MAX = 10 ** (-1.1D0 * LOG10(Z_BLAST1) + 5.D0)
END SELECT
T_D = 10 ** (0.23D0 * LOG10(Z_BLAST1) - 2.594D0)
END IF !Z>40
*
END SUBROUTINE AIRB_PARAMETER
*=============================================
SUBROUTINE TARRIVE_AIRB (MASS, D,
COND,T_ARR)
* ------------------------------------------------------------------
* arrival time air blast m.larcher 02-08
* ------------------------------------------------------------------
* mass = mass of explosive charge (in kg)
* cond = choose of different explosion models
* 1 = unconfined (kingery)
27
* 2 = half-confined (kingery)
* d = distance between charge and clxx element centroid
* t_arr = arrival time of the explosion (output)
*
IMPLICIT NONE
*
*--- variables globales
REAL(8), INTENT(IN) :: MASS,D
INTEGER, INTENT(IN) :: COND
REAL(8), INTENT(OUT) :: T_ARR
*--- variables locales
REAL(8) :: T_START, Z_BLAST, Z_BLAST1,
Y_CONWEP, U_T_START, D_40
REAL(8), DIMENSION(10) :: POLY_T_START
INTEGER :: I

*----- air blast pressure
*----- parameters of detonation for all models
Z_BLAST = D/MASS**0.333333D0
*----- z bigger than 40 --> sound speed is used from the distance
z=40 on
IF (Z_BLAST > 40.D0) THEN
Z_BLAST1 = 40
ELSE
Z_BLAST1 = Z_BLAST
END IF
*----- time of explosion-------------------------------------------
*----- conwep is used for all models with different parameters
IF(COND==1) THEN
POLY_T_START = (/0.07207,1.36456,-0.057003,-
0.18283,0.011885,
> 0.043265, -0.000799736, -0.00436073, 0.0, 0.0/)
U_T_START = -0.25327+1.37407*LOG10(Z_BLAST1)
ELSE
POLY_T_START = (/-0.059163, 1.357064, 0.052492, -
0.19656395,
> -0.06017700, 0.0696360, 0.0215297, -0.01616589, -
0.0023253,
> 0.00147752/)
U_T_START = -0.2024257+1.37784*LOG10(Z_BLAST1)
END IF
Y_CONWEP = 0.0
DO I = 1, 10
Y_CONWEP = Y_CONWEP +
POLY_T_START(I)*U_T_START**(I-1)
END DO
T_ARR = (1D-3 * 10 ** Y_CONWEP)*MASS**(1./3.)
IF (Z_BLAST > 40.D0) THEN
D_40 = 40.D0 * MASS**0.333333D0
T_ARR = T_ARR + (D-D_40)/343.D0
END IF
*
END SUBROUTINE TARRIVE_AIRB
*============================================
END MODULE M_MATERIAL_I_AIRB

7.2 AIRB Program
airb.f
PROGRAMM AIRB
*--- variables locales
REAL(8) :: T_START ,T_D , T_NEG, T, P_MAX,
B_BLAST , Z_BLAST, D,
> P_MAX1, P_NEG, CHARGE,Z_BLAST1, I_POS, INCR,
I_POS1, TB, TE, TS,
> DB, DE, DS
INTEGER :: I, COND, EQU, FUNC, SUB_FUNC,
FILE_NUMBER
CHARACTER(255) :: FILE_NAME
*
WRITE (*,*) " "
WRITE (*,*) " AA I RRRRR BBBBB"
WRITE (*,*) " A A R R B B"
WRITE (*,*) " A A I R R B B"
WRITE (*,*) " A A I RRRRRR BBBBB"
WRITE (*,*) " AAAAAAAAAA I R RR B B"
WRITE (*,*) " A A I R RR B B"
WRITE (*,*) "A A I R RR BBBBB"
WRITE (*,*) " "
WRITE (*,*) "Air Blast Functions for EUROPLEXUS and
more..."
WRITE (*,*) " "
WRITE (*,*) "Details of the program are described in the"
WRITE (*,*) "Technical Note 'Pressure-Time Functions for
the"
WRITE (*,*) "Description of Air Blast Waves' (Martin
Larcher)"
WRITE (*,*) "PUBSY JRC 46829, 2008"
WRITE (*,*) " "

P = 0.D0 ! INITIALIZATION
WRITE (*,*) "FUNCTION: 1 Main values"
WRITE (*,*) " 2 Function of distance (main values)"
WRITE (*,*) " 3 Pressure-time curve (distance fix)"
WRITE (*,*) " 4 Pressure-distance curve (time fix)"
WRITE (*,*) " 5 Given: P_MAX --> Z_BLAST"
WRITE (*,*) " 6 Given: P_MAX, I_POS -->
D,CHARGE"
WRITE (*,*) " 0 Stop"
READ (*,*) FUNC
IF(FUNC==0) STOP
WRITE (*,*) "Write to a file. 0 for screen output."
WRITE (*,*) "FILENAME: "
READ (*,*) FILE_NAME
IF(FILE_NAME=="0") THEN
FILE_NUMBER = 6
ELSE
FILE_NUMBER = 1
OPEN(1,FILE=FILE_NAME)
ENDIF
WRITE (*,*) "EQUATION: 1 Kingery spherical reflected"
WRITE (*,*) " 2 Kingery spherical, incident"
WRITE (*,*) " 3 Kinney spherical, incident"
WRITE (*,*) " 4 Kingery hemispherical, reflected"
WRITE (*,*) " 5 Kingery hemispherical, incident"
READ (*,*) EQU
*----- air blast pressure
*----- parameters of detonation for all models
SELECT CASE (FUNC)
CASE (1)
WRITE (*,1101, ADVANCE='NO')
READ (*,*) CHARGE
WRITE (*,1105, ADVANCE='NO')
READ (*,*) D
Z_BLAST = D/CHARGE**0.333333D0
CALL AIRB_PARAMETER (EQU, CHARGE, D,
P_MAX, T_START, T_D,
> P_NEG, T_NEG, B_BLAST)
CALL AIRB_IMPULSE (EQU, CHARGE, D, I_POS)
WRITE(FILE_NUMBER,1001)
"Z_BLAST","P_MAX","T_START","T_D",
> "P_NEG", "T_NEG", "B_BLAST","I_POS"
28
WRITE(FILE_NUMBER,1002)
Z_BLAST,P_MAX,T_START,T_D,P_NEG,T_NEG,
> B_BLAST, I_POS
CASE (2)
WRITE (*,*) "Parameter over Distance"
WRITE (*,*) " 1 Peak pressure (P_MAX)"
WRITE (*,*) " 2 Arrival time (T_START)"
WRITE (*,*) " 3 Time of duration (positive) (T_D)"
WRITE (*,*) " 4 Minimum pressure (P_NEG)"
WRITE (*,*) " 5 Time of duration (negative) (T_NEG)"
WRITE (*,*) " 6 Form Parameter (B_BLAST)"
WRITE (*,*) " 7 Impulse (I_POS)"
READ (*,*) SUB_FUNC
WRITE (*,1101, ADVANCE='NO')
READ (*,*) CHARGE
WRITE (*,1110, ADVANCE='NO')
READ (*,*) DB
WRITE (*,1111, ADVANCE='NO')
READ (*,*) DE
WRITE (*,1112, ADVANCE='NO')
READ (*,*) DS
SELECT CASE (SUB_FUNC)
CASE (1)
WRITE(FILE_NUMBER,1003)
"D","Z_BLAST","P_MAX"
CASE (2)
WRITE(FILE_NUMBER,1003)
"D","Z_BLAST","T_START"
CASE (3)
WRITE(FILE_NUMBER,1003) "D","Z_BLAST","T_D"
CASE (4)
WRITE(FILE_NUMBER,1003)
"D","Z_BLAST","P_NEG"
CASE (5)
WRITE(FILE_NUMBER,1003)
"D","Z_BLAST","T_NEG"
CASE (6)
WRITE(FILE_NUMBER,1003)
"D","Z_BLAST","B_BLAST"
CASE (7)
WRITE(FILE_NUMBER,1003)
"D","Z_BLAST","I_POS"
END SELECT
DO D = DB, DE, DS
Z_BLAST = D/CHARGE**0.333333D0
CALL AIRB_PARAMETER (EQU, CHARGE, D,
P_MAX, T_START, T_D,
> P_NEG, T_NEG, B_BLAST)
CALL AIRB_IMPULSE (EQU, CHARGE, D, I_POS)
SELECT CASE (SUB_FUNC)
CASE (1)
WRITE(FILE_NUMBER,1004) D,Z_BLAST,P_MAX
CASE (2)
WRITE(FILE_NUMBER,1004) D,Z_BLAST,T_START
CASE (3)
WRITE(FILE_NUMBER,1004) D,Z_BLAST,T_D
CASE (4)
WRITE(FILE_NUMBER,1004) D,Z_BLAST,P_NEG
CASE (5)
WRITE(FILE_NUMBER,1004) D,Z_BLAST,T_NEG
CASE (6)
WRITE(FILE_NUMBER,1004)
D,Z_BLAST,B_BLAST
CASE (7)
WRITE(FILE_NUMBER,1004) D,Z_BLAST,I_POS
END SELECT
END DO
CASE (3)
WRITE (*,1101, ADVANCE='NO')
READ (*,*) CHARGE
WRITE (*,1105, ADVANCE='NO')
READ (*,*) D
Z_BLAST = D/CHARGE**0.333333D0
CALL AIRB_PARAMETER (EQU, CHARGE, D,
P_MAX, T_START, T_D,
> P_NEG, T_NEG, B_BLAST)
WRITE(*,*) "The arrival time is : ", T_START
WRITE (*,1107, ADVANCE='NO')
READ (*,*) TB
WRITE (*,1108, ADVANCE='NO')
READ (*,*) TE
WRITE (*,1109, ADVANCE='NO')
READ (*,*) TS
WRITE(FILE_NUMBER,1003) "T","T_CURR","P"
DO T = TB, TE, TS
T_CURR = T-T_START
P = P_MAX*(1.D0-T_CURR/T_D)*EXP(-
B_BLAST*T_CURR/T_D)
IF (T_CURR>T_D . AND . T_CURR<=T_D+T_NEG/2.)
THEN
! NEGATIVE PHASE
P = 2.*P_NEG/T_NEG*(T_D-T_CURR)
ELSE IF (T_CURR>T_D+T_NEG/2. . AND .
T_CURR<=T_D+T_NEG)THEN
! NEGATIVE PHASE
P = 2.*P_NEG/T_NEG*(T_CURR-T_D-T_NEG)
ELSE IF (T_CURR>T_D+T_NEG) THEN
P=0.D0 ! AFTER LOADING
END IF
IF (T_CURR<0) P=0.D0 !IF TIME STEP BEFORE AIRB
IF(P<-1D5)P=-1D5
WRITE(FILE_NUMBER,1004) T,T_CURR,P
END DO
CASE (4)
WRITE (*,1101, ADVANCE='NO')
READ (*,*) CHARGE
WRITE (*,1102, ADVANCE='NO')
READ (*,*) T
WRITE (*,1110, ADVANCE='NO')
READ (*,*) DB
WRITE (*,1111, ADVANCE='NO')
READ (*,*) DE
WRITE (*,1112, ADVANCE='NO')
READ (*,*) DS
WRITE(FILE_NUMBER,1003) "D","Z_BLAST","P"
DO D = DB, DE, DS
Z_BLAST = D/CHARGE**0.333333D0
CALL AIRB_PARAMETER (EQU, CHARGE, D,
P_MAX, T_START, T_D,
> P_NEG, T_NEG, B_BLAST)
T_CURR = T-T_START
P = P_MAX*(1.D0-T_CURR/T_D)*EXP(-
B_BLAST*T_CURR/T_D)
IF (T_CURR>T_D . AND . T_CURR<=T_D+T_NEG/2.)
THEN
! NEGATIVE PHASE
P = 2.*P_NEG/T_NEG*(T_D-T_CURR)
ELSE IF (T_CURR>T_D+T_NEG/2. . AND .
T_CURR<=T_D+T_NEG)THEN
! NEGATIVE PHASE
P = 2.*P_NEG/T_NEG*(T_CURR-T_D-T_NEG)
ELSE IF (T_CURR>T_D+T_NEG) THEN
P=0.D0 ! AFTER LOADING
END IF
IF (T_CURR<0) P=0.D0 !IF TIME STEP BEFORE AIRB
IF(P<-1D5)P=-1D5
29
WRITE(FILE_NUMBER,1004) D,Z_BLAST,P
END DO
CASE (5)
WRITE (*,1103, ADVANCE='NO')
READ (*,*) P_MAX1
CALL GET_Z (EQU, P_MAX1, Z_BLAST)
WRITE(FILE_NUMBER,*) "Z_BLAST = ", Z_BLAST
CASE (6)
WRITE (*,1103, ADVANCE='NO')
READ (*,*) P_MAX1
WRITE (*,1104, ADVANCE='NO')
READ (*,*) I_POS1
CALL GET_Z (EQU, P_MAX1, Z_BLAST)

INCR = 1.D0
D = 0.1D0
DO WHILE (INCR>0.001)
CHARGE = (D/Z_BLAST)**3.D0
CALL AIRB_IMPULSE (EQU, CHARGE, D, I_POS)
IF(I_POS1 <I_POS) THEN
INCR = INCR /2.D0
D = D - INCR
ELSE
D = D + INCR
ENDIF
END DO
CHARGE = (D/Z_BLAST)**3.D0
WRITE(FILE_NUMBER,*) "Z_BLAST = ", Z_BLAST
WRITE(FILE_NUMBER,*) "D = ", D
WRITE(FILE_NUMBER,*) "CHARGE = ", CHARGE
CALL AIRB_PARAMETER (EQU, CHARGE, D,
P_MAX, T_START, T_D,
> P_NEG, T_NEG, B_BLAST)
WRITE(FILE_NUMBER,1001)
"Z_BLAST","P_MAX","T_START","T_D",
> "P_NEG","T_NEG", "B_BLAST","I_POS"
WRITE(FILE_NUMBER,1002)
Z_BLAST,P_MAX,T_START,T_D,P_NEG,
> T_NEG,B_BLAST, I_POS
END SELECT
IF(FILE_NUMBER==1) CLOSE(1)
*--------------------------------------------------------------------
1001 FORMAT (8A12)
1002 FORMAT (8E12.4)
1003 FORMAT (3A12)
1004 FORMAT (3E12.4)
1101 FORMAT (1X, 'CHARGE (kg) : ')
1102 FORMAT (1X, 'TIME (s) : ')
1103 FORMAT (1X, 'P_MAX (Pa) : ')
1104 FORMAT (1X, 'I_POS (Pa s) : ')
1105 FORMAT (1X, 'DISTANCE (m) : ')
1107 FORMAT (1X, 'FIRST TIME STEP : ')
1108 FORMAT (1X, 'LAST TIME STEP : ')
1109 FORMAT (1X, 'TIME STEP SIZE : ')
1110 FORMAT (1X, 'MINIMUM DISTANCE : ')
1111 FORMAT (1X, 'MAXIMUM DISTANCE : ')
1112 FORMAT (1X, 'DISTANCE STEPS : ')
END PROGRAMM AIRB
*=============================================
SUBROUTINE TARRIVE_AIRB (MASS, D,
COND,T_ARR)

See m_material_i_airb.ff

*=============================================
SUBROUTINE AIRB_PARAMETER (EQU, CHARGE, D,
P_MAX, T_START, T_D,
> P_NEG, T_NEG, B_BLAST)

See m_material_i_airb.ff

*=============================================
SUBROUTINE AIRB_IMPULSE (EQU, CHARGE, D,
I_POS)
* ------------------------------------------------------------------
* cond. aux limites air blast m.larcher 07-08
* separet file - not used in EUROPLEXUS
* ------------------------------------------------------------------
* charge = mass of explosive charge (in kg)
* equ = choose of different explosion models
* 1 = unconfined (full space), reflected (kingery)
* 2 = unconfined (full space), not reflected (kingery)
* 4 = half-confined (half space), reflected (kingery)
* 5 = half-confined (half space), not reflected (kingery)
* d : distance between charge and clxx element centroid
* i_pos: positive impulse
*
IMPLICIT NONE
*
*--- variables globales
REAL(8), INTENT(IN) :: D, CHARGE
INTEGER, INTENT(IN) :: EQU
REAL(8), INTENT(OUT) :: I_POS
*--- variables locales
REAL(8) :: Z_BLAST, U_I_P,I_P1
REAL(8), DIMENSION(9) :: POLY_I_P
INTEGER :: I
*
*----- air blast pressure
*----- parameters of detonation for all models
Z_BLAST = D/CHARGE**0.333333D0
*----- conwep is used for all models with different parameters
*begin different models
I_P1=0.0
SELECT CASE(EQU)
CASE (1) !refleced spherical
U_I_P = -
0.204004553231+1.37882996018*LOG10(Z_BLAST)
POLY_I_P = (/2.55875660396,-
0.903118886091,0.101771877942,
> -0.0242139751146,0.0,0.0,0.0,0.0,0.0/)
CASE (2) !incident spherical
IF(Z_BLAST<0.792) THEN
U_I_P =
2.34723921354+3.24299066475*LOG10(Z_BLAST)
POLY_I_P = (/2.38630516757,-
0.443749377691,0.168825414684,
> 0.0348138030308,-0.010435192824,0.0,0.0,0.0,0.0/)
ELSE
U_I_P = -
1.75305660315+2.30629231803*LOG10(Z_BLAST)
POLY_I_P = (/1.55197227115,-0.40463292088,-
0.0142721946082,
> 0.00912366316617,-0.0006750681404,-
0.00800863718901,
> 0.00314819515931,0.00152044783382,-
0.0007470265099/)
END IF
CASE (4) !reflected hemispheical
U_I_P = -
0.246208804814+1.33422049854*LOG10(Z_BLAST)
POLY_I_P = (/2.70588058103,-
0.949516092853,0.112136118689,
> -0.0250659183287,0.0,0.0,0.0,0.0,0.0/)
CASE (5) !incident hemispheical
IF(Z_BLAST<0.955) THEN
30
U_I_P =
2.06761908721+3.0760329666*LOG10(Z_BLAST)
POLY_I_P = (/2.52455620925,-
0.52992763686,0.171335645235,
> 0.0450176963051,-0.0118964626402,0.0,0.0,0.0,0.0/)
ELSE
U_I_P = -
1.94708846747+2.40697745406*LOG10(Z_BLAST)
POLY_I_P = (/1.67231645863,-0.384519026965,-
0.0260816706301,
> 0.00595798753822,0.014544526107,-
0.00663289334734,
> -0.00284189327204,0.0013644816227,0.0/)
END IF
CASE DEFAULT
WRITE(*,*) "IMPUSLSE NOT YET DEFINED"
END SELECT
*--------------------------------------------------------------------
* kingery calculation
DO I = 1, 9
I_P1 = I_P1 + POLY_I_P(I)*U_I_P**(I-1)
END DO
I_POS= (CHARGE**0.33333333)* 10 ** I_P1
*
END SUBROUTINE AIRB_IMPULSE
*============================================
SUBROUTINE GET_Z (EQU, P_MAX1, Z_BLAST)
* ------------------------------------------------------------------
* returns Z for a given p_max
* ------------------------------------------------------------------
* equ = choose of different explosion models
* 1 = unconfined (full space), reflected (kingery)
* 2 = unconfined (full space), not reflected (kingery)
* 4 = half-confined (half space), reflected (kingery)
* 5 = half-confined (half space), not reflected (kingery)
* p_max1: given p_max
*
IMPLICIT NONE
*
*--- variables globales
REAL(8), INTENT(IN) :: P_MAX1
INTEGER, INTENT(IN) :: EQU
REAL(8), INTENT(OUT) :: Z_BLAST
*--- variables locales
REAL(8) :: INCR, CHARGE, P_MAX, D, T_START, T_D,
P_NEG,
> T_NEG, B_BLAST
*
INCR = 1.D0
Z_BLAST = 1.D0
D = 1.D0
DO WHILE (INCR>0.001)
CHARGE = (D/Z_BLAST)**3.D0
CALL AIRB_PARAMETER (EQU, CHARGE, D,
P_MAX, T_START, T_D,
> P_NEG, T_NEG, B_BLAST)
IF(P_MAX1 >P_MAX) THEN
INCR = INCR /2.D0
Z_BLAST = Z_BLAST - INCR
ELSE
Z_BLAST = Z_BLAST + INCR
ENDIF
END DO
END SUBROUTINE GET_Z
*============================================

31
European Commission

Joint Research Centre Institute for the Protection and Security of the Citizen
Title: Pressure-Time Functions for the Description of Air Blast Waves
Author: Martin Larcher
2008 33 pp. 21.0 x 29.7 cm

Abstract
This work is being conducted in the framework of the project RAILPROTECT, which deals with the security and
safety of rail transport against terrorist attacks. The bombing threat is only considered, and focus is placed on
predicting the effects of explosions in railway and metro stations and rolling stock and on assessing the
vulnerability of such structures.
The project is based on numerical simulations, which are carried out with the explicit Finite Element Code
EUROPLEXUS that is written for the calculation of fast dynamic fluid-structure interactions. This code has been
developed in a collaboration of the French Commissariat l'Energie Atomique (CEN Saclay) and the Joint
Research Centre of the European Commission (JRC Ispra).

There are several possibilities to simulate explosions, e.g., in trains and stations. The fasted one is to neglect
the influence of the air and to use only the structural part of the geometry. Then, the behaviour of the explosion
can be simulated by using a pressure-time function, which can be applied on the structure. This technical note
presents the pressure-time functions, which are implemented in EUROPLEXUS. In addition to this
implementation, an external routine is developed, which allows the calculation of several values of the pressure-
time function. This program allows also to calculate, e.g., the charge by a given peak pressure and positive
impulse, which is helpful by fitting experiments to a pressure-time function.

32
The mission of the JRC is to provide customer-driven scientific and technical support
for the conception, development, implementation and monitoring of EU policies. As a
service of the European Commission, the JRC functions as a reference centre of
science and technology for the Union. Close to the policy-making process, it serves
the common interest of the Member States, while being independent of special
interests, whether private or national.

Anda mungkin juga menyukai