You are on page 1of 34

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/264511656

Pressure-Time Functions for the Description of Air Blast Waves

Technical Report · January 2008

CITATIONS READS

31 2,781

1 author:

Martin Larcher
European Commission
134 PUBLICATIONS   1,275 CITATIONS   

SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Developping EUROPLEXUS View project

The influence of fluid-structure interaction on the dynamic response of blast-loaded ductile plates View project

All content following this page was uploaded by Martin Larcher on 26 April 2016.

The user has requested enhancement of the downloaded file.


Pressure-Time Functions for the
Description of Air Blast Waves

Martin Larcher

PUBSY JRC 46829


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
Distribution List
Lechner S.
Anthoine A.
Casadei F.
Dyngeland T.
Géradin M.
Giannopoulos G.
Gutierrez E.
Larcher M. (5 copies)
Paffumi E. (JRC Petten)
Pegon P.
Solomos G.

DG TREN

External:
Bung H. (CEA)
Faucher V. (CEA)
Galon P. (CEA)
Kill N. (Samtech)
Potapov S. (EDF)

S. Lechner
CONTENTS

1 Introduction ................................................................................................................................... 5
2 Air Blast Waves ............................................................................................................................. 6
2.1 Introduction .......................................................................................................................... 6
2.2 Literature Data ..................................................................................................................... 7
2.2.1 Maximum Pressure........................................................................................................... 9
2.2.2 Impulse ........................................................................................................................... 10
2.2.3 Negative Phase ............................................................................................................... 10
2.2.4 Wave Form Parameter ................................................................................................... 12
3 Air Blast Loading Function in EUROPLEXUS .......................................................................... 14
3.1 Used Function .................................................................................................................... 14
3.2 Implementation .................................................................................................................. 14
3.3 AIRB and Debris ................................................................................................................ 15
3.4 AIRB for Z>40 ................................................................................................................... 15
3.4.1 Arrival Time ................................................................................................................... 16
3.4.2 Peak Pressure ................................................................................................................. 16
3.4.3 Time of Duration ............................................................................................................ 17
4 External Program for AIRB Calculations.................................................................................... 19
5 Conclusion ................................................................................................................................... 21
6 References ................................................................................................................................... 22
7 Apendix ....................................................................................................................................... 23
7.1 EUROPLEXUS Code ........................................................................................................ 23
7.2 AIRB Program ................................................................................................................... 28

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

pmax

pmin
p0
t

ta td tn

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 ta 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 pmax. The pressure attains its maximum very fast (extremely short
rise-time), and then starts decreasing until it reaches the reference pressure po (in most cases
the normal atmospheric pressure).

- The positive phase duration td, which is the time for reaching the reference pressure. After
this point the pressure drops below the reference pressure until the maximum negative
pressure pmin. The duration of the negative phase is denoted as tn.

- The incident overpressure impulse, which is the integral of the overpressure curve over the
positive phase td.

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 ( t  t0  ta ):

   td
bt
t
p (t )  p0  pmax 1  e (1)
 td 

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:

d
Z 3
(2)
W

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.

 Kinney [6]: Equations for conventional and nuclear explosions. These equations have no

7
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 Kingery’s 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/kg1/3. The diagrams of Baker can be used
as an alternative. They are available up to Z = 1000 m/kg1/3.

The equation proposed by Kinney [6] describes the overpressure-distance relation for chemical
explosions as:

  Z 2 
808 1    
pmax
   4.5   (3)
p0 2 2 2
 Z   Z   Z 
1   1   1  
 0.048   0.32   1.35 

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]):

0.067 1  ( Z / 0.23) 4
I with I [ Pa  s ], Z [m / kg 1/ 3 ] (4)
Z 23
1  ( Z /1.55) 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/kg1/3.

800

600
impulse [Pa sec]

Kinney
Kingery
400

200

0
0 0.5 1 1.5 2 2.5 3
1/3
scaled distance [m/kg ]

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 can not 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:

0.35 5
pmin  10 Pa for Z  3.5
Z
pmin  104 Pa for Z  3.5 (5)
1/3
with Z [m/kg ]

The duration of the negative phase tn in the diagram of Krauthammer can be described with the
following function:

tn  0.0104  W 1/ 3 [s] for Z  0.3


tn   0.003125  log( Z )  0.01201 W 1/ 3
[s] for Z  0.3  Z  1.9
(6)
tn  0.0139  W 1/ 3
[s] for Z  1.9
1/3
with Z [m/kg ], W [kg]

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):
bt

 t  td
p  p0  pmax  1   for t  td
 td 
2p tn
p  p0  min (t  td ) for t  td  t  td 
tn 2 (7)
2 pmin tn
p  p0  (td  tn  t ) for t  td   t  td  tn
tn 2
p  p0 for t  td  tn

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
10
Kinney

8 Baker

Parameter b by using the impulse of the


postive phase
6
b [-]

0
0 5 10 15 20 25 30 35 40
Z [m/kg1/3]

Figure 7: Wave form parameter b – different methods

The exponential trend line for the curve generated by the impulse function has the following
equation:

b  5.2777  Z 1.1975
(8)
with Z [m/kg1/3 ]

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 pmin
and the duration of the negative phase tn. 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 User’s 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/kg1/3. This is done by the following equation:

d ( Z )  d ( Z  40)
ta ( Z )  ta ( Z  40)  (9)
343 m/s

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/kg1/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/kg1/3. Therefore, the equation of Baker is used for values Z>40
without any intersection to the equation of Kingery.

4000

3500
Kingery
Baker
3000
p [Pa]

2500

2000

1500

1000
10 20 30 40 50 60 70 80 90 100
1/3
Z [m/kg ]

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/kg1/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.

20000

16000 Kingery
Baker

12000
p [Pa]

8000

4000

0
0 10 20 30 40 50 60 70 80 90 100
1/3
Z [m/kg ]

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:

td = 10 0.230 log(Z) - 2.594 s for Z>40 m/kg1/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
10

6
t [ms]

Kingery
Baker
4

0
0 10 20 30 40 50 60 70 80 90 100
Z [m/kg1/3]

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/kg1/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/kg1/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, User’s 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
CHARACTER(LG_FMT) :: GET_FMT(N_MSG)
*IF FRANCAIS
7.1 EUROPLEXUS Code CHARACTER(32), PARAMETER :: NOM='IMPEDANCE
(EXPLOSION EN AIR)'
m_material_i_airb.ff DATA GET_FMT(:) /
>'X-COORD DE LA CHARGE',
C M_MATERIAL_I_AIRB TOUS FCASADEI 08/07/25 >'Y-COORD DE LA CHARGE',
02:11:54 >'Z-COORD DE LA CHARGE',
MODULE M_MATERIAL_I_AIRB >'MASSE DE LA CHARGE',
* >'TEMPS INITIAL DE L EXPLOSION',
* material of type "air blast" (16_26) >'CONFINEMENT (1=LIBRE, REFLECHIE, KINGERY,
* >2=LIBRE, NO REFLECHIE,KINGERY,
USE M_MATERIALS >3=LIBRE, REFLECHIE,BAKER,
USE M_MATERIALS_ARRAY >4=DEMI-ESPACE, REFLECHIE,KINGERY,
* >5=DEMI-ESPACE, NO REFLECHIE,KINGERY)',
IMPLICIT NONE >'NOEUD DE LA CHARGE',
SAVE >'ONLY POSITIVE PRESSURE?'/
* CELSE
PRIVATE CHARACTER(32), PARAMETER :: NOM='IMPEDANCE
PUBLIC :: MI_AIRB, CL_AIRB, INIT_AIRB (AIR BLAST)'
* DATA GET_FMT(:) /
CONTAINS >'X-COOR OF THE CHARGE',
*============================================= >'Y-COOR OF THE CHARGE',
SUBROUTINE MI_AIRB (INUMLDC, X) >'Z-COOR OF THE CHARGE',
* ------------------------------------------------------------------ >'MASS OF THE CHARGE',
* impedance : air blast m.larcher 04-07 >'INITIAL TIME OF THE EXPLOSION',
* ------------------------------------------------------------------ >'CONFINEMENT (1=UNCONFINED,
* iop=26 (airb) REFLECTED,KINGERY,
* xmut(1) = x-coordinate of explosive charge >2=UNCONFINED, NOT REFLECTED,KINGERY,
* xmut(2) = y-coordinate of explosive charge >3=UNCONFINED, REFLECTED,BAKER,
* xmut(3) = z-coordinate of explosive charge >4=HALF-SPACE, REFLECTED,KINGERY,
* xmut(4) = mass of explosive charge (in kg) >5=HALF-SPACE, NOT REFLECTED,KINGERY)',
* xmut(5) = initial time of the explosion >'NODE OF THE CHARGE',
* xmut(6) = choose of different explosion models >'ONLY POSITIVE PRESSURE?'/
* 1 = unconfined (full space), reflected (kingery) CENDIF
* 2 = unconfined (full space), not reflected (kingery) *
* 3 = unconfined (full space), not reflected (baker) CALL CREATE_MATERIAL (LENX, LENI, 0)
* 4 = half-confined (half space), reflected (kingery) NEWMAT%NAME = NOM
* 5 = half-confined (half space), not reflected NEWMAT%TYPE = 16 !! IMPEDANCE
(kingery) NEWMAT%MATENT(1) = 26 !! NUMERO DE
* xmut(8) = flag for only positive pressure L'IMPEDANCE
* NEWMAT%NUMLDC = INUMLDC
INCLUDE 'NONE.INC' NEWMAT%LGECR = LGECR(NEWMAT%TYPE)
* *
INCLUDE 'CARMA.INC' *----- lecture des parametres
INCLUDE 'CONTRO.INC' ! CALL
INCLUDE 'POUBTX.INC' LIRVAL(NMOT,MOT,NEWMAT%MATVAL,KOPT)
INCLUDE 'REDCOM.INC' KOPT(:) = 0
* *
*----- variables globales : 11 CALL LIRMOT (MOT, NMOT, IOP)
INTEGER, INTENT(IN) :: INUMLDC IF (IOP > 0) THEN
REAL(8), INTENT(IN) :: X(IDIM,*) KOPT(IOP) = 1
* SELECT CASE (IOP)
*----- variables locales : CASE (1:4,6) ! X, Y, Z, MASS, TINT, CONF
INTEGER, PARAMETER :: NMOT=9 , LENX=8 , LENI = CALL LIRE(3)
1 NEWMAT%MATVAL(IOP) = DPREC
CHARACTER*4 :: MOT(NMOT) CASE (5) ! TINT
INTEGER :: KOPT(NMOT), IOP, IH, NC(NPTL), NODE IF (KOPT(8) /= 0) THEN
LOGICAL :: IMPRIM CALL ERRMSS('MAT_AIRB',
* > 'TINT AND TAUT CANT BE USED
DATA MOT/'X ','Y ','Z TOGETHER')
','MASS','TINT','CONF','NODE', STOP 'MAT_AIRB 5'
& 'TAUT','OPOS'/ ENDIF
* CALL LIRE(3)
INTEGER, PARAMETER :: N_MSG = 8 , LG_FMT = 350 NEWMAT%MATVAL(IOP) = DPREC

23
CASE (7) ! POIN CALL
CALL LIRLEC (1, NC, IH) MECVAL(GET_FMT(4),NEWMAT%MATVAL(4))
IF (IH /= 1) THEN IF(NEWMAT%MATVAL(5)>1.D20) THEN
CALL ERRMSS('MAT_AIRB','ONLY ONE NODE CALL MECTEX(GET_FMT(5),'START TIME')
MUST BE GIVEN') ELSEIF(NEWMAT%MATVAL(5)<-1.D20) THEN
STOP 'MAT_AIRB 4' CALL MECTEX(GET_FMT(5),'AUTOMATIC')
ENDIF ELSE
NEWMAT%MATVAL(IOP) = NC(1) CALL
CASE (8) ! TAUT MECVAL(GET_FMT(5),NEWMAT%MATVAL(5))
IF (KOPT(5) /= 0) THEN ENDIF
CALL ERRMSS('MAT_AIRB', CALL
> 'TINT AND TAUT CANT BE USED MECVAL(GET_FMT(6),NEWMAT%MATVAL(6))
TOGETHER') IF (KOPT(7) /= 0) THEN
STOP 'MAT_AIRB 5' CALL
ENDIF MECNUM(GET_FMT(7),INT(NEWMAT%MATVAL(7)))
NEWMAT%MATVAL(5)=HUGE(0.D0) ! TAUT ENDIF
CASE (9) ! OPOS IF(NEWMAT%MATVAL(8)>0.5D0) THEN
NEWMAT%MATVAL(8)=1.D0 ! TAUT CALL MECTEX(GET_FMT(8),'ONLY POSITIVE
END SELECT PRESSURES')
GO TO 11 ELSE
ENDIF CALL MECTEX(GET_FMT(8),'ALSO NEGATIVE
* PRESSURES')
*----- donnees completes ? (1, 2, 4 ou 4, 7 indispensables) ENDIF
IF((KOPT(1)+KOPT(2)+KOPT(4)) /= 3) THEN ENDIF
IF((KOPT(4)+KOPT(7)) /= 2) THEN *
WRITE(BLABLA,1001) *IF FRANCAIS
CALL ERRMSS('MAT_AIRB',BLABLA) 1000 FORMAT('LOI NUMERO',I5,' : ',A)
STOP 'MAT_AIRB 3' 1001 FORMAT('LA DIRECTIVE "AIRB" EST
ENDIF INCOMPLETE')
ENDIF CELSE
* 1000 FORMAT('LAW NUMBER',I5,' : ',A)
* consistency checks 1001 FORMAT('THE DIRECTIVE "AIRB" IS
IF (KOPT(1)+KOPT(7) == 2 .OR. KOPT(2)+KOPT(7) == 2 INCOMPLETE')
.OR. CENDIF
> KOPT(3)+KOPT(7) == 2) THEN *
CALL ERRMSS ('MI_AIRB','X,Y,Z AND NODE ARE END SUBROUTINE MI_AIRB
MUTUALLY EXCLUSIVE') *==========================================
ENDIF SUBROUTINE CL_AIRB (MAT_CUR, ECR, D, P,
IF (KOPT(7) /= 0) THEN DTAIRB)
* user has specified node: extract its coordinates * ------------------------------------------------------------------
NODE = INT (NEWMAT%MATVAL(7) + 0.1) * cond. aux limites air blast m.larcher 04-07
NEWMAT%MATVAL(1) = X(1,NODE) * ------------------------------------------------------------------
NEWMAT%MATVAL(2) = X(2,NODE) * mat_cur : current material
IF (IDIM == 3) NEWMAT%MATVAL(3) = X(3,NODE) * matval(1) = x-coordinate of explosive charge
ENDIF * matval(2) = y-coordinate of explosive charge
IF (KOPT(3) /= 0) THEN * matval(3) = z-coordinate of explosive charge
IF (IDIM < 3) CALL ATTMSS ('MI_AIRB','Z UNUSED * matval(4) = mass of explosive charge (in kg)
IN 2D') * matval(5) = initial time of the explosion
ENDIF * matval(6) = choose of different explosion models
* * 1 = unconfined (full space), reflected (kingery)
* default values * 2 = unconfined (full space), not reflected
IF((KOPT(5) == 0).AND.(KOPT(8) == 0)) (kingery)
NEWMAT%MATVAL(5)=-HUGE(0.D0) * 3 = unconfined (full space), not reflected (kinney)
! TINT * 4 = half-confined (half space), reflected (kingery)
IF(KOPT(6) == 0) NEWMAT%MATVAL(6)=1.D0 ! * 5 = half-confined (half space), not reflected
CONF (kingery)
* * matval(8) = flag only positive pressure
*----- impressions * d : distance between charge and clxx element centroid
WRITE(BLABLA,1000) * (already computed in the clxx element)
NEWMAT%NUMLDC,NEWMAT%NAME * p : blast pressure (output)
CALL MECTSG(BLABLA) * ecr(1) : pressure (output)
IF(IMPRIM(8)) THEN * dtairb : maximal time step (output)
CALL *
MECVAL(GET_FMT(1),NEWMAT%MATVAL(1)) IMPLICIT NONE
CALL *
MECVAL(GET_FMT(2),NEWMAT%MATVAL(2)) INCLUDE 'TEMPX.INC' ! T = CURRENT TIME
CALL INCLUDE 'TEMPS1.INC' ! TINIZI = INITIAL TIME
MECVAL(GET_FMT(3),NEWMAT%MATVAL(3)) *

24
*--- variables globales ELSE IF (T_CURR>T_D+T_NEG) THEN
TYPE(MATERIAL), INTENT(INOUT) :: MAT_CUR P=0.D0 ! AFTER LOADING
REAL(8), INTENT(IN) :: D END IF
REAL(8), INTENT(OUT) :: P ELSE IF(T_CURR>T_D) THEN ! NO NEGATIVE
REAL(8), INTENT(INOUT) :: DTAIRB PRESSURE
REAL(8), INTENT(INOUT) :: ECR(*) P=0.D0
*--- variables locales ENDIF
REAL(8) :: T_START ,T_D , T_CURR, T_NEG IF (T_CURR<0) P=0.D0 !IF TIME STEP BEFORE AIRB
REAL(8) :: PARAM1, PARAM2, PARAM3,PARAM4 END IF !END OF CALCULATION
REAL(8) :: PARAM5, PARAM6, PARAM7,PARAM8 (T_CURR+DTSTAB>0)
REAL(8) :: P_MAX, B_BLAST , Z_BLAST, U_T_D, IF(P<-1D5)P=-1D5
Y_CONWEP,TINT, ECR(1) = P
> P_MAX1, T_MAX1, T_D1, U_P_MAX, P_NEG, *
DTSTAB, CHARGE,Z_BLAST1 END SUBROUTINE CL_AIRB
REAL(8), DIMENSION(9) :: POLY_T_D *=============================================
REAL(8), DIMENSION(12) :: POLY_P_MAX SUBROUTINE INIT_AIRB (INDOX,X,NUMN)
INTEGER :: I, COND, EQU * ------------------------------------------------------------------
* * calculation of the automatic start time of the air blast
P = 0.D0 ! INITIALIZATION m.larcher 02-08
DTSTAB = DTAIRB !STORING OF THE STABLE TIME * ------------------------------------------------------------------
STEP SIZE TO USE * indox : element info
!ALSO SMALLER TIME STEPS FOR THE * x : coordinates
FIRST TIME * numn : number of the nodes of the elements
!STEP WITH AIRB
DTAIRB = HUGE(DTAIRB) *
! INITIALISATION - ONLY IN THE POSITIVE USE M_MATERIALS
PHASE THE
! TIME STEP SIZE WILL BE CHANGED INCLUDE 'NONE.INC'
EQU = MAT_CUR%MATVAL(6) INCLUDE 'CAREL.INC'
CHARGE = MAT_CUR%MATVAL(4) INCLUDE 'CONTRO.INC'
TINT = MAT_CUR%MATVAL(5) *
*----- time of explosion------------------------------------------- *--- variables globales
IF (MAT_CUR%MATVAL(5)<-1.D20) INTEGER, INTENT(IN) :: INDOX(NELEM,*),NUMN(*)
MAT_CUR%MATVAL(5)=TINIZI REAL(8), INTENT(IN) :: X(IDIM,*)
*----- air blast pressure
*----- arrival time *--- variables locales
IF(EQU<4) THEN REAL(8) :: XC,YC,ZC,DX,DY,DZ, D, T_ARR, T_ARR1
COND=1 INTEGER :: I,IEL,ITYP,COND,MATTYP,IOP,NNO,IAD
ELSE TYPE(MATERIAL),POINTER :: MAT_CUR
COND=2 LOGICAL :: TAUTO,TINIT
ENDIF
*----- arrival time T_ARR1 = HUGE(T_ARR1)
CALL TARRIVE_AIRB (CHARGE, D, COND,T_START) TAUTO = .FALSE.
*----- time in the pressure curve TINIT = .FALSE.
T_CURR = T - TINT - T_START
IF (T_CURR+DTSTAB>0) THEN !ALSO THE TIME DO IEL = 1, NELEM
STEP BEFORE THE STARTING ITYP = INDOX(IEL,1)
!OF THE AIRB MATTYP = INDOX(IEL,2)
*---------------------------------------------------------------------- IF(MATTYP==16) THEN !IMPE
CALL AIRB_PARAMETER(EQU,CHARGE,D, P_MAX, MAT_CUR => MATERIALS(FNUMAT(IEL))
T_START, T_D, IOP=MAT_CUR%MATENT(1)
> P_NEG, T_NEG, B_BLAST) IF(IOP==26) THEN !AIRB
*end different models IF(MAT_CUR%MATVAL(5)>1.D20) THEN
1000 P = P_MAX*(1.D0-T_CURR/T_D)*EXP(- TAUTO = .TRUE.
B_BLAST*T_CURR/T_D) XC = 0.D0
IF (T_CURR<T_D) THEN ! POSTIVE PHASE IN 20 YC = 0.D0
STEPS ZC = 0.D0
DTAIRB = T_D/20.D0 NNO = NCEL(1,ITYP)
END IF IAD = INDOX(IEL,3)
IF(MAT_CUR%MATVAL(8)<0.5D0) THEN DO I = 1, NNO ! CENTROID COORDINATES
IF (T_CURR>T_D . AND . T_CURR<=T_D+T_NEG/2.) XC = XC + X(1,NUMN(IAD+I-1))
THEN YC = YC + X(2,NUMN(IAD+I-1))
! NEGATIVE PHASE ZC = ZC + X(3,NUMN(IAD+I-1))
P = 2.*P_NEG/T_NEG*(T_D-T_CURR) END DO
ELSE IF (T_CURR>T_D+T_NEG/2. . AND . XC = XC / NNO
T_CURR<=T_D+T_NEG)THEN YC = YC / NNO
! NEGATIVE PHASE ZC = ZC / NNO
P = 2.*P_NEG/T_NEG*(T_CURR-T_D-T_NEG) DX = MAT_CUR%MATVAL(1) - XC ! DISTANCE

25
DY = MAT_CUR%MATVAL(2) - YC *--- variables locales
DZ = MAT_CUR%MATVAL(3) - ZC REAL(8) :: PARAM1, PARAM2, PARAM3,PARAM4
* additional calculations for dtstab required for the partitioning REAL(8) :: PARAM5, PARAM6, PARAM7,PARAM8
D = SQRT (DX*DX + DY*DY + DZ*DZ) REAL(8) :: Z_BLAST, U_T_D, Y_CONWEP,
IF(MAT_CUR%MATVAL(6)<4) THEN > P_MAX1, T_MAX1, T_D1, U_P_MAX, Z_BLAST1
COND=1 REAL(8), DIMENSION(9) :: POLY_T_D
ELSE REAL(8), DIMENSION(12) :: POLY_P_MAX
COND=2 INTEGER :: I,COND
ENDIF *
CALL TARRIVE_AIRB (MAT_CUR%MATVAL(4), *----- air blast pressure
D, COND,T_ARR) *----- parameters of detonation for all models
IF(T_ARR<T_ARR1) THEN Z_BLAST = D/CHARGE**0.333333D0
T_ARR1 = T_ARR B_BLAST = 5.2777D0*(Z_BLAST**(-1.1975D0))
ENDIF P_NEG = MIN(1.D5,79433.D0/(Z_BLAST**1.05D0))
ELSE IF(Z_BLAST<0.3D0) THEN
TINIT = .TRUE. T_NEG = 0.0104D0 * CHARGE**(1./3.)
ENDIF ELSE IF(Z_BLAST>1.9D0) THEN
ENDIF T_NEG = 0.0139D0 * CHARGE**(1./3.)
ENDIF ELSE
END DO T_NEG = (3.125D0 * LOG10(Z_BLAST) + 12.01D0)*
IF(TAUTO) THEN > CHARGE**(1./3.)*1D-3
IF(TINIT) THEN END IF
CALL ERRMSS('INIT_AIRB','TAUT NOT *----- conwep is used for all models with different parameters
COMPATIBLE WITH TINT') *----- arrival time
STOP 'INIT_AIRB' IF(EQU<4) THEN
ENDIF COND=1
T_ARR1=-0.99*T_ARR1 ELSE
CALL MECTSG('AUTOMATIC INITIAL TIME FOR COND=2
IMPE_AIRB') ENDIF
CALL MECVAL('THE STARTING TIME IS ',T_ARR1) *----- arrival time
DO IEL = 1, NELEM CALL TARRIVE_AIRB (CHARGE, D, COND,T_START)
ITYP = INDOX(IEL,1) *----------------------------------------------------------------------
MATTYP = INDOX(IEL,2) *begin different models
IF(MATTYP==16) THEN P_MAX=0
MAT_CUR => MATERIALS(FNUMAT(IEL)) T_D=0
IOP=MAT_CUR%MATENT(1) P_MAX1=0
IF(IOP==26) THEN !AIRB T_D1=0
MAT_CUR%MATVAL(5) = T_ARR1 *--------------------------------------------------------------------
ENDIF *baker incident
ENDIF IF (EQU==3) THEN
END DO PARAM1 = 808.D0*(1.D0+(Z_BLAST/4.5D0)**2.0)
ENDIF PARAM2 = SQRT(1.D0+(Z_BLAST/0.048D0)**2.0)
* PARAM3 = SQRT(1.D0+(Z_BLAST/0.32D0)**2.0)
END SUBROUTINE INIT_AIRB PARAM4 = SQRT(1.D0+(Z_BLAST/1.35D0)**2.0)
*============================================= *------- max pressure for this distance
SUBROUTINE AIRB_PARAMETER (EQU, CHARGE, D, P_MAX = 1D5 *
P_MAX, T_START, T_D, PARAM1/(PARAM2*PARAM3*PARAM4)
> P_NEG, T_NEG, B_BLAST) PARAM5 = 980.D0*(1.D0+(Z_BLAST/0.54D0)**10.D0)
* ------------------------------------------------------------------ PARAM6 = 1.D0+(Z_BLAST/0.02D0)**3.D0
* cond. aux limites air blast m.larcher 04-07 PARAM7 = 1.D0+(Z_BLAST/0.74D0)**6.D0
* ------------------------------------------------------------------ PARAM8 = SQRT(1.D0+(Z_BLAST/6.9)**2.0)
* charge = mass of explosive charge (in kg) T_D = 1D-3 * CHARGE**(1.D0/3.D0) *
* equ = choose of different explosion models >
* 1 = unconfined (full space), reflected (kingery) PARAM5/(PARAM6*PARAM7*PARAM8)
* 2 = unconfined (full space), not reflected (kingery) RETURN
* 3 = unconfined (full space), not reflected (kinney) END IF
* 4 = half-confined (half space), reflected (kingery) *--------------------------------------------------------------------
* 5 = half-confined (half space), not reflected (kingery) * formula for hemispherical reflected in kingery seems to be
* d : distance between charge and clxx element centroid wrong.
* p_max : max peak blast pressure (output) * therefore, the hemispherical formula is used for the pressure
* * by dividing the charge with 1.8
IMPLICIT NONE *
* IF(EQU==1) THEN
*--- variables globales Z_BLAST1 = D/((CHARGE/1.8)**0.33333333D0)
REAL(8), INTENT(IN) :: D, CHARGE ELSE
INTEGER, INTENT(IN) :: EQU Z_BLAST1=Z_BLAST
REAL(8), INTENT(OUT) :: P_MAX, T_START, T_D, ENDIF
P_NEG, T_NEG, B_BLAST * kingery spherical

26
IF(EQU==1 .OR. EQU==2) THEN U_P_MAX = -
IF(Z_BLAST<0.888) THEN 0.214362789151+1.35034249993*LOG10(Z_BLAST1)
U_T_D = POLY_P_MAX = (/2.611368669, -1.69012801396,
2.26367268496+5.11588554305*LOG10(Z_BLAST) 0.00804973591951,
POLY_T_D = (/-0.686608550419, 0.164953518069, > 0.336743114941, -0.00516226351334, -0.0809228619888,
0.127788499497, > -0.00478507266747, 0.00793030472242,
> 0.00291430135946, 0.00187957449227, 0.0007684469735,
0.0173413962543, > 0.0, 0.0, 0.0/)
> 0.00269739758043, -0.00361976502798, - *--------------------------------------------------------------------
0.00100926577934/) * kingery hemispherical, reflected (also spherical reflected)
ELSE IF(Z_BLAST>2.28) THEN ELSE IF((EQU==1).OR.(EQU==4)) THEN
U_T_D = -3.130058+3.152472*LOG10(Z_BLAST) U_P_MAX = -
POLY_T_D = (/0.62103, 0.096703, -0.00801302, 0.240657322658+1.36637719229*LOG10(Z_BLAST1)
0.00482705, POLY_P_MAX = (/3.4028321, -2.2103087, -0.218536586,
> 0.00187587,-0.002467385,-0.000841116668, 0.89531958,
0.00061932910, 0.0/) > 0.24989, -0.569249, -0.1179168, 0.2241311, 0.0245620, -
ELSE 0.0455116,
U_T_D = - > -0.001909307, 0.003614711/)
1.33361206714+9.2996288611*LOG10(Z_BLAST) *--------------------------------------------------------------------
POLY_T_D = (/ 0.23031841078,- * kingery hemispherical, incident
0.0297944268969,0.0306329542941, ELSE IF (EQU==5) THEN
> 0.0183405574074, -0.0173964666286, - U_P_MAX = -
0.00106321963576, 0.214362789151+1.35034249993*LOG10(Z_BLAST1)
> 0.0056206003128, 0.0001618217499, - POLY_P_MAX = (/2.780769, -1.6958988, -0.1541937,
0.0006860188944 /) 0.514050,
END IF > 0.0988534, -0.2939126, -0.02681123,
*-------------------------------------------------------------------- 0.109097,0.001628467,
* kingery hemispherical > -0.0214631, 0.0001456723, 0.001678477/)
ELSE END IF
IF(Z_BLAST<1.01) THEN *--------------------------------------------------------------------
U_T_D = * kingery calculation
1.92946154068+5.25099193925*LOG10(Z_BLAST) DO I = 1, 12
POLY_T_D = (/-0.6142276, 0.1301437, 0.13872, P_MAX1 = P_MAX1 +
0.039157, POLY_P_MAX(I)*U_P_MAX**(I-1)
> -0.00475933, -0.00428144, 0.0, 0.0, 0.0/) END DO
ELSE IF(Z_BLAST>2.78) THEN P_MAX= 1D3 * 10 ** P_MAX1
U_T_D = -3.53626+3.463497*LOG10(Z_BLAST) DO I = 1, 9
POLY_T_D =(/0.6869066, 0.09330353, -0.00058494, - T_D1 = T_D1 + POLY_T_D(I)*U_T_D**(I-1)
0.0022688499, END DO
> -0.000295908, 0.0014802986, 0.0, 0.0, 0.0 /) T_D= (1D-3 * 10 ** T_D1)*CHARGE**(1./3.)
ELSE ELSE !Z>40
U_T_D = -2.124925+9.2996288*LOG10(Z_BLAST) SELECT CASE (EQU)
POLY_T_D = (/0.31540924, -0.0297944, 0.0306329, CASE (1) !KINGERY SPHERICAL REFLECTED
0.018340557, P_MAX = 10 ** (-1.147D0 * LOG10(Z_BLAST1) +
> -0.0173964,-0.00106321,0.0056206,0.000161821,- 5.375D0)
0.00068601889/) CASE (2) !KINGERY SPHERICAL, INCIDENT
END IF P_MAX = 10 ** (-1.1D0 * LOG10(Z_BLAST1) + 5.D0)
END IF CASE (4) !KINGERY HEMISPHERICAL, REFLECTED
*-------------------------------------------------------------------- Z_BLAST1 = D/(CHARGE*1.8)**0.333333D0
* kingery spherical, reflected P_MAX = 10 ** (-1.147D0 * LOG10(Z_BLAST1) +
* the formula in kingery seems to be wrong. therefore, the 5.375D0)
hemispherical CASE(5) !KINGERY HEMISPHERICAL, INCIDENT
* formula is used by dividing the charge with 1.8 Z_BLAST1 = D/(CHARGE*1.8)**0.333333D0
* P_MAX = 10 ** (-1.1D0 * LOG10(Z_BLAST1) + 5.D0)
* if(equ==1) then END SELECT
* u_p_max = - T_D = 10 ** (0.23D0 * LOG10(Z_BLAST1) - 2.594D0)
0.214362789151+1.35034249993*log10(z_blast) END IF !Z>40
* poly_p_max = (/3.22958031387, -2.21400538997, *
0.35119031446, END SUBROUTINE AIRB_PARAMETER
* > 0.657599992109, 0.0141818951887, -0.243076636231, *=============================================
* > -0.0158699803158, 0.0492741184234, SUBROUTINE TARRIVE_AIRB (MASS, D,
0.00227639644004, COND,T_ARR)
* > -0.00397126276058, 0.0 , 0.0/) * ------------------------------------------------------------------
*-------------------------------------------------------------------- * arrival time air blast m.larcher 02-08
IF(Z_BLAST1<40)THEN * ------------------------------------------------------------------
* kingery spherical, incident * mass = mass of explosive charge (in kg)
IF (EQU==2) THEN * cond = choose of different explosion models
* 1 = unconfined (kingery)

27
* 2 = half-confined (kingery) > DB, DE, DS
* d = distance between charge and clxx element centroid INTEGER :: I, COND, EQU, FUNC, SUB_FUNC,
* t_arr = arrival time of the explosion (output) FILE_NUMBER
* CHARACTER(255) :: FILE_NAME
IMPLICIT NONE *
* WRITE (*,*) " "
*--- variables globales WRITE (*,*) " AA I RRRRR BBBBB"
REAL(8), INTENT(IN) :: MASS,D WRITE (*,*) " A A R R B B"
INTEGER, INTENT(IN) :: COND WRITE (*,*) " A A I R R B B"
REAL(8), INTENT(OUT) :: T_ARR WRITE (*,*) " A A I RRRRRR BBBBB"
*--- variables locales WRITE (*,*) " AAAAAAAAAA I R RR B B"
REAL(8) :: T_START, Z_BLAST, Z_BLAST1, WRITE (*,*) " A A I R RR B B"
Y_CONWEP, U_T_START, D_40 WRITE (*,*) "A A I R RR BBBBB"
REAL(8), DIMENSION(10) :: POLY_T_START WRITE (*,*) " "
INTEGER :: I WRITE (*,*) "Air Blast Functions for EUROPLEXUS and
more..."
*----- air blast pressure WRITE (*,*) " "
*----- parameters of detonation for all models WRITE (*,*) "Details of the program are described in the"
Z_BLAST = D/MASS**0.333333D0 WRITE (*,*) "Technical Note 'Pressure-Time Functions for
*----- z bigger than 40 --> sound speed is used from the distance the"
z=40 on WRITE (*,*) "Description of Air Blast Waves' (Martin
IF (Z_BLAST > 40.D0) THEN Larcher)"
Z_BLAST1 = 40 WRITE (*,*) "PUBSY JRC 46829, 2008"
ELSE WRITE (*,*) " "
Z_BLAST1 = Z_BLAST
END IF P = 0.D0 ! INITIALIZATION
*----- time of explosion------------------------------------------- WRITE (*,*) "FUNCTION: 1 Main values"
*----- conwep is used for all models with different parameters WRITE (*,*) " 2 Function of distance (main values)"
IF(COND==1) THEN WRITE (*,*) " 3 Pressure-time curve (distance fix)"
POLY_T_START = (/0.07207,1.36456,-0.057003,- WRITE (*,*) " 4 Pressure-distance curve (time fix)"
0.18283,0.011885, WRITE (*,*) " 5 Given: P_MAX --> Z_BLAST"
> 0.043265, -0.000799736, -0.00436073, 0.0, 0.0/) WRITE (*,*) " 6 Given: P_MAX, I_POS -->
U_T_START = -0.25327+1.37407*LOG10(Z_BLAST1) D,CHARGE"
ELSE WRITE (*,*) " 0 Stop"
POLY_T_START = (/-0.059163, 1.357064, 0.052492, - READ (*,*) FUNC
0.19656395, IF(FUNC==0) STOP
> -0.06017700, 0.0696360, 0.0215297, -0.01616589, - WRITE (*,*) "Write to a file. 0 for screen output."
0.0023253, WRITE (*,*) "FILENAME: "
> 0.00147752/) READ (*,*) FILE_NAME
U_T_START = -0.2024257+1.37784*LOG10(Z_BLAST1) IF(FILE_NAME=="0") THEN
END IF FILE_NUMBER = 6
Y_CONWEP = 0.0 ELSE
DO I = 1, 10 FILE_NUMBER = 1
Y_CONWEP = Y_CONWEP + OPEN(1,FILE=FILE_NAME)
POLY_T_START(I)*U_T_START**(I-1) ENDIF
END DO WRITE (*,*) "EQUATION: 1 Kingery spherical reflected"
T_ARR = (1D-3 * 10 ** Y_CONWEP)*MASS**(1./3.) WRITE (*,*) " 2 Kingery spherical, incident"
IF (Z_BLAST > 40.D0) THEN WRITE (*,*) " 3 Kinney spherical, incident"
D_40 = 40.D0 * MASS**0.333333D0 WRITE (*,*) " 4 Kingery hemispherical, reflected"
T_ARR = T_ARR + (D-D_40)/343.D0 WRITE (*,*) " 5 Kingery hemispherical, incident"
END IF READ (*,*) EQU
* *----- air blast pressure
END SUBROUTINE TARRIVE_AIRB *----- parameters of detonation for all models
*============================================ SELECT CASE (FUNC)
END MODULE M_MATERIAL_I_AIRB CASE (1)
WRITE (*,1101, ADVANCE='NO')
READ (*,*) CHARGE
WRITE (*,1105, ADVANCE='NO')
7.2 AIRB Program READ (*,*) D
Z_BLAST = D/CHARGE**0.333333D0
airb.f CALL AIRB_PARAMETER (EQU, CHARGE, D,
P_MAX, T_START, T_D,
PROGRAMM AIRB > P_NEG, T_NEG, B_BLAST)
*--- variables locales CALL AIRB_IMPULSE (EQU, CHARGE, D, I_POS)
REAL(8) :: T_START ,T_D , T_NEG, T, P_MAX, WRITE(FILE_NUMBER,1001)
B_BLAST , Z_BLAST, D, "Z_BLAST","P_MAX","T_START","T_D",
> P_MAX1, P_NEG, CHARGE,Z_BLAST1, I_POS, INCR, > "P_NEG", "T_NEG", "B_BLAST","I_POS"
I_POS1, TB, TE, TS,

28
WRITE(FILE_NUMBER,1002) WRITE (*,1101, ADVANCE='NO')
Z_BLAST,P_MAX,T_START,T_D,P_NEG,T_NEG, READ (*,*) CHARGE
> B_BLAST, I_POS WRITE (*,1105, ADVANCE='NO')
CASE (2) READ (*,*) D
WRITE (*,*) "Parameter over Distance" Z_BLAST = D/CHARGE**0.333333D0
WRITE (*,*) " 1 Peak pressure (P_MAX)" CALL AIRB_PARAMETER (EQU, CHARGE, D,
WRITE (*,*) " 2 Arrival time (T_START)" P_MAX, T_START, T_D,
WRITE (*,*) " 3 Time of duration (positive) (T_D)" > P_NEG, T_NEG, B_BLAST)
WRITE (*,*) " 4 Minimum pressure (P_NEG)" WRITE(*,*) "The arrival time is : ", T_START
WRITE (*,*) " 5 Time of duration (negative) (T_NEG)" WRITE (*,1107, ADVANCE='NO')
WRITE (*,*) " 6 Form Parameter (B_BLAST)" READ (*,*) TB
WRITE (*,*) " 7 Impulse (I_POS)" WRITE (*,1108, ADVANCE='NO')
READ (*,*) SUB_FUNC READ (*,*) TE
WRITE (*,1101, ADVANCE='NO') WRITE (*,1109, ADVANCE='NO')
READ (*,*) CHARGE READ (*,*) TS
WRITE (*,1110, ADVANCE='NO') WRITE(FILE_NUMBER,1003) "T","T_CURR","P"
READ (*,*) DB DO T = TB, TE, TS
WRITE (*,1111, ADVANCE='NO') T_CURR = T-T_START
READ (*,*) DE P = P_MAX*(1.D0-T_CURR/T_D)*EXP(-
WRITE (*,1112, ADVANCE='NO') B_BLAST*T_CURR/T_D)
READ (*,*) DS IF (T_CURR>T_D . AND . T_CURR<=T_D+T_NEG/2.)
SELECT CASE (SUB_FUNC) THEN
CASE (1) ! NEGATIVE PHASE
WRITE(FILE_NUMBER,1003) P = 2.*P_NEG/T_NEG*(T_D-T_CURR)
"D","Z_BLAST","P_MAX" ELSE IF (T_CURR>T_D+T_NEG/2. . AND .
CASE (2) T_CURR<=T_D+T_NEG)THEN
WRITE(FILE_NUMBER,1003) ! NEGATIVE PHASE
"D","Z_BLAST","T_START" P = 2.*P_NEG/T_NEG*(T_CURR-T_D-T_NEG)
CASE (3) ELSE IF (T_CURR>T_D+T_NEG) THEN
WRITE(FILE_NUMBER,1003) "D","Z_BLAST","T_D" P=0.D0 ! AFTER LOADING
CASE (4) END IF
WRITE(FILE_NUMBER,1003) IF (T_CURR<0) P=0.D0 !IF TIME STEP BEFORE AIRB
"D","Z_BLAST","P_NEG" IF(P<-1D5)P=-1D5
CASE (5) WRITE(FILE_NUMBER,1004) T,T_CURR,P
WRITE(FILE_NUMBER,1003) END DO
"D","Z_BLAST","T_NEG" CASE (4)
CASE (6) WRITE (*,1101, ADVANCE='NO')
WRITE(FILE_NUMBER,1003) READ (*,*) CHARGE
"D","Z_BLAST","B_BLAST" WRITE (*,1102, ADVANCE='NO')
CASE (7) READ (*,*) T
WRITE(FILE_NUMBER,1003) WRITE (*,1110, ADVANCE='NO')
"D","Z_BLAST","I_POS" READ (*,*) DB
END SELECT WRITE (*,1111, ADVANCE='NO')
DO D = DB, DE, DS READ (*,*) DE
Z_BLAST = D/CHARGE**0.333333D0 WRITE (*,1112, ADVANCE='NO')
CALL AIRB_PARAMETER (EQU, CHARGE, D, READ (*,*) DS
P_MAX, T_START, T_D, WRITE(FILE_NUMBER,1003) "D","Z_BLAST","P"
> P_NEG, T_NEG, B_BLAST) DO D = DB, DE, DS
CALL AIRB_IMPULSE (EQU, CHARGE, D, I_POS) Z_BLAST = D/CHARGE**0.333333D0
SELECT CASE (SUB_FUNC) CALL AIRB_PARAMETER (EQU, CHARGE, D,
CASE (1) P_MAX, T_START, T_D,
WRITE(FILE_NUMBER,1004) D,Z_BLAST,P_MAX > P_NEG, T_NEG, B_BLAST)
CASE (2) T_CURR = T-T_START
WRITE(FILE_NUMBER,1004) D,Z_BLAST,T_START P = P_MAX*(1.D0-T_CURR/T_D)*EXP(-
CASE (3) B_BLAST*T_CURR/T_D)
WRITE(FILE_NUMBER,1004) D,Z_BLAST,T_D IF (T_CURR>T_D . AND . T_CURR<=T_D+T_NEG/2.)
CASE (4) THEN
WRITE(FILE_NUMBER,1004) D,Z_BLAST,P_NEG ! NEGATIVE PHASE
CASE (5) P = 2.*P_NEG/T_NEG*(T_D-T_CURR)
WRITE(FILE_NUMBER,1004) D,Z_BLAST,T_NEG ELSE IF (T_CURR>T_D+T_NEG/2. . AND .
CASE (6) T_CURR<=T_D+T_NEG)THEN
WRITE(FILE_NUMBER,1004) ! NEGATIVE PHASE
D,Z_BLAST,B_BLAST P = 2.*P_NEG/T_NEG*(T_CURR-T_D-T_NEG)
CASE (7) ELSE IF (T_CURR>T_D+T_NEG) THEN
WRITE(FILE_NUMBER,1004) D,Z_BLAST,I_POS P=0.D0 ! AFTER LOADING
END SELECT END IF
END DO IF (T_CURR<0) P=0.D0 !IF TIME STEP BEFORE AIRB
CASE (3) IF(P<-1D5)P=-1D5

29
WRITE(FILE_NUMBER,1004) D,Z_BLAST,P
END DO See m_material_i_airb.ff
CASE (5)
WRITE (*,1103, ADVANCE='NO') *=============================================
READ (*,*) P_MAX1 SUBROUTINE AIRB_IMPULSE (EQU, CHARGE, D,
CALL GET_Z (EQU, P_MAX1, Z_BLAST) I_POS)
WRITE(FILE_NUMBER,*) "Z_BLAST = ", Z_BLAST * ------------------------------------------------------------------
CASE (6) * cond. aux limites air blast m.larcher 07-08
WRITE (*,1103, ADVANCE='NO') * separet file - not used in EUROPLEXUS
READ (*,*) P_MAX1 * ------------------------------------------------------------------
WRITE (*,1104, ADVANCE='NO') * charge = mass of explosive charge (in kg)
READ (*,*) I_POS1 * equ = choose of different explosion models
CALL GET_Z (EQU, P_MAX1, Z_BLAST) * 1 = unconfined (full space), reflected (kingery)
* 2 = unconfined (full space), not reflected (kingery)
INCR = 1.D0 * 4 = half-confined (half space), reflected (kingery)
D = 0.1D0 * 5 = half-confined (half space), not reflected (kingery)
DO WHILE (INCR>0.001) * d : distance between charge and clxx element centroid
CHARGE = (D/Z_BLAST)**3.D0 * i_pos: positive impulse
CALL AIRB_IMPULSE (EQU, CHARGE, D, I_POS) *
IF(I_POS1 <I_POS) THEN IMPLICIT NONE
INCR = INCR /2.D0 *
D = D - INCR *--- variables globales
ELSE REAL(8), INTENT(IN) :: D, CHARGE
D = D + INCR INTEGER, INTENT(IN) :: EQU
ENDIF REAL(8), INTENT(OUT) :: I_POS
END DO *--- variables locales
CHARGE = (D/Z_BLAST)**3.D0 REAL(8) :: Z_BLAST, U_I_P,I_P1
WRITE(FILE_NUMBER,*) "Z_BLAST = ", Z_BLAST REAL(8), DIMENSION(9) :: POLY_I_P
WRITE(FILE_NUMBER,*) "D = ", D INTEGER :: I
WRITE(FILE_NUMBER,*) "CHARGE = ", CHARGE *
CALL AIRB_PARAMETER (EQU, CHARGE, D, *----- air blast pressure
P_MAX, T_START, T_D, *----- parameters of detonation for all models
> P_NEG, T_NEG, B_BLAST) Z_BLAST = D/CHARGE**0.333333D0
WRITE(FILE_NUMBER,1001) *----- conwep is used for all models with different parameters
"Z_BLAST","P_MAX","T_START","T_D", *begin different models
> "P_NEG","T_NEG", "B_BLAST","I_POS" I_P1=0.0
WRITE(FILE_NUMBER,1002) SELECT CASE(EQU)
Z_BLAST,P_MAX,T_START,T_D,P_NEG, CASE (1) !refleced spherical
> T_NEG,B_BLAST, I_POS U_I_P = -
END SELECT 0.204004553231+1.37882996018*LOG10(Z_BLAST)
IF(FILE_NUMBER==1) CLOSE(1) POLY_I_P = (/2.55875660396,-
*-------------------------------------------------------------------- 0.903118886091,0.101771877942,
1001 FORMAT (8A12) > -0.0242139751146,0.0,0.0,0.0,0.0,0.0/)
1002 FORMAT (8E12.4) CASE (2) !incident spherical
1003 FORMAT (3A12) IF(Z_BLAST<0.792) THEN
1004 FORMAT (3E12.4) U_I_P =
1101 FORMAT (1X, 'CHARGE (kg) : ') 2.34723921354+3.24299066475*LOG10(Z_BLAST)
1102 FORMAT (1X, 'TIME (s) : ') POLY_I_P = (/2.38630516757,-
1103 FORMAT (1X, 'P_MAX (Pa) : ') 0.443749377691,0.168825414684,
1104 FORMAT (1X, 'I_POS (Pa s) : ') > 0.0348138030308,-0.010435192824,0.0,0.0,0.0,0.0/)
1105 FORMAT (1X, 'DISTANCE (m) : ') ELSE
1107 FORMAT (1X, 'FIRST TIME STEP : ') U_I_P = -
1108 FORMAT (1X, 'LAST TIME STEP : ') 1.75305660315+2.30629231803*LOG10(Z_BLAST)
1109 FORMAT (1X, 'TIME STEP SIZE : ') POLY_I_P = (/1.55197227115,-0.40463292088,-
1110 FORMAT (1X, 'MINIMUM DISTANCE : ') 0.0142721946082,
1111 FORMAT (1X, 'MAXIMUM DISTANCE : ') > 0.00912366316617,-0.0006750681404,-
1112 FORMAT (1X, 'DISTANCE STEPS : ') 0.00800863718901,
END PROGRAMM AIRB > 0.00314819515931,0.00152044783382,-
*============================================= 0.0007470265099/)
SUBROUTINE TARRIVE_AIRB (MASS, D, END IF
COND,T_ARR) CASE (4) !reflected hemispheical
U_I_P = -
See m_material_i_airb.ff 0.246208804814+1.33422049854*LOG10(Z_BLAST)
POLY_I_P = (/2.70588058103,-
*============================================= 0.949516092853,0.112136118689,
SUBROUTINE AIRB_PARAMETER (EQU, CHARGE, D, > -0.0250659183287,0.0,0.0,0.0,0.0,0.0/)
P_MAX, T_START, T_D, CASE (5) !incident hemispheical
> P_NEG, T_NEG, B_BLAST) 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.

33

View publication stats

You might also like