Calculate normative heat loss of pipe that is legally affirmed by Minenergo Order 325.

## Usage

```
m325nhl(
year = 1986,
laying = "underground",
exp5k = TRUE,
insulation = 0,
d = 700,
temperature = 110,
len = 1,
duration = 1,
beta = FALSE,
extra = 2
)
```

## Arguments

- year
year when the pipe is put in operation after laying or total overhaul. Type:

`assert_integerish`

- laying
type of pipe laying depicting the position of pipe in space:

`air`

,`channel`

,`room`

,`tunnel`

,`underground`

.

Type:

`assert_subset`

.- exp5k
pipe regime flag: is pipe operated more that 5000 hours per year? Type:

`assert_logical`

.- insulation
insulation that covers the exterior of pipe:

`0`

no insulation

`1`

foamed polyurethane or analogue

`2`

polymer concrete

Type:

`assert_integer`

and`assert_subset`

.- d
internal diameter of pipe, [

*mm*]. Type:`assert_double`

.- temperature
temperature of heat carrier (water) inside the pipe, [

*°C*]. Type:`assert_double`

.- len
length of pipe, [

*m*]. Type:`assert_double`

.- duration
duration of heat loss, [

*hour*]. Type:`assert_double`

.- beta
should they consider additional heat loss of fittings? Type:

`assert_logical`

.- extra
number of points used for temperature extrapolation:

`2`

,`3`

, or`4`

. Type:`assert_choice`

.

## Value

Normative heat loss of cylindrical pipe during `duration`

, [*kcal*].
If `len`

of pipe is 1 *m* (meter) as well as `duration`

is set to
1 *h* (hour) (default values) then the return value is also the

*specific heat loss power*, [*kcal/m/h*], prescribed by

Minenergo Order 325.
Type: `assert_double`

.

## Details

Temperature extrapolation and pipe diameter interpolation are leveraged
for better accuracy. Both are linear as it dictated by
Minenergo Order 325.
Nevertheless, one could control the extrapolation behavior by `extra`

argument: use lower values of `extra`

for soft curvature near extrapolation
edges, and higher values for more physically reasoned behavior in far regions
of extrapolation.

## See also

Other Minenergo:
`m278hlair()`

,
`m278hlcha()`

,
`m278hlund()`

,
`m278insdata`

,
`m278inshcm()`

,
`m278soildata`

,
`m325beta()`

,
`m325nhldata`

,
`m325testbench`

## Examples

```
library(pipenostics)
## Consider a 1-meter length pipe with
pipe_diameter <- 700.0 # [mm]
pipe_dating <- 1980
pipe_laying <- "underground"
## Linear extrapolation adopted in Minenergo's Order 325 using last two points:
operation_temperature <- seq(0, 270, 10)
qs <- m325nhl(
year = pipe_dating, laying = pipe_laying, d = pipe_diameter,
temperature = operation_temperature
) # [kcal/m/h]
plot(
operation_temperature,
qs,
type = "b",
main = "Minenergo's Order 325. Normative heat loss of pipe",
sub = sprintf(
"%s pipe of diameter %i [mm] laid in %i",
pipe_laying, pipe_diameter, pipe_dating
),
xlab = "Temperature, [°C]",
ylab = "Specific heat loss power, [kcal/m/h]"
)
## Consider heat loss due fittings:
operation_temperature <- 65 # [°C]
fittings_qs <- m325nhl(
year = pipe_dating, laying = pipe_laying, d = pipe_diameter,
temperature = operation_temperature, beta = c(FALSE, TRUE)
) # [kcal/m/h]
print(fittings_qs); stopifnot(all(round(fittings_qs ,1) == c(272.0, 312.8)))
#> [1] 272.0 312.8
# [1] 272.0 312.8 # [kcal/m/h]
## Calculate heat flux:
operation_temperature <- c(65, 105) # [°C]
qs <- m325nhl(
year = pipe_dating, laying = pipe_laying, d = pipe_diameter,
temperature = operation_temperature
) # [kcal/m/h]
print(qs)
#> [1] 272.00 321.75
# [1] 272.00 321.75 # [kcal/m/h]
pipe_diameter <- pipe_diameter * 1e-3 # [m]
factor <- 2.701283 # [kcal/h/W]
flux <- qs/factor/pipe_diameter -> a # heat flux, [W/m^2]
print(flux)
#> [1] 143.8470 170.1572
# [1] 143.8470 170.1572 # [W/m^2]
## The above line is equivalent to:
flux <- flux_loss(qs, pipe_diameter) -> b
stopifnot(all.equal(a, b, tolerance = 5e-6))
```