diff --git a/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/dynamic_displacement_history_comparison_2D.png b/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/dynamic_displacement_history_comparison_2D.png new file mode 100644 index 00000000..42632abb Binary files /dev/null and b/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/dynamic_displacement_history_comparison_2D.png differ diff --git a/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/dynamic_pore_pressure_history_comparison_2D.png b/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/dynamic_pore_pressure_history_comparison_2D.png new file mode 100644 index 00000000..b170315c Binary files /dev/null and b/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/dynamic_pore_pressure_history_comparison_2D.png differ diff --git a/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/freeField2D_meshes.png b/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/freeField2D_meshes.png new file mode 100644 index 00000000..4e30a803 Binary files /dev/null and b/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/freeField2D_meshes.png differ diff --git a/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/freeField2D_schematic.pdf b/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/freeField2D_schematic.pdf new file mode 100644 index 00000000..0f2d1696 Binary files /dev/null and b/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/freeField2D_schematic.pdf differ diff --git a/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/freeField2D_schematic.png b/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/freeField2D_schematic.png new file mode 100644 index 00000000..34809024 Binary files /dev/null and b/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/freeField2D_schematic.png differ diff --git a/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/freeField2D_schematic.svg b/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/freeField2D_schematic.svg new file mode 100644 index 00000000..da6bb315 --- /dev/null +++ b/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/freeField2D_schematic.svg @@ -0,0 +1,472 @@ + + + + + + + + 2026-10-21T15:16:33.777781 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LAYER 1 + + + LAYER 2 + + + LAYER 3 + + + + + + + + 30 m + + + + + + + + 20 m + + + + + + + + 8 m + + + + + + + + 2 m + + + + + + + + 2 m width + + + WATER TABLE + + + y = 28 m · 2 m below surface + + + P1 Mid-column + + + y = 15 m · average of nodes 61 and 62 + + + P2 Ground surface + + + y = 30 m · average of nodes 121 and 122 + + + + + + + + + + + HORIZONTAL MOTION INPUT + + + + + + A + t +   + t + h + e +   + b + a + s + e + : +   + ( + ) + = + ( + ) + F + t + c + v + t + x + i + n + + + + + Elastic half-space + Horizontal Lysmer dashpot + + + + + + + + + + + y + + + x + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2D FREE-FIELD SOIL COLUMN + + + Plane strain / SSPquadUP or Tri31UP / out-of-plane thickness: 2 m + + + Comparison histories: horizontal displacement, vertical displacement and pore pressure. + + + Diamonds mark comparison elevations; circles mark the two averaged nodes. Width exaggerated for clarity. + + + + + + + + + + + + + + diff --git a/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/gravity_displacement_comparison_2D.png b/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/gravity_displacement_comparison_2D.png new file mode 100644 index 00000000..6c52a9b5 Binary files /dev/null and b/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/gravity_displacement_comparison_2D.png differ diff --git a/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/gravity_pore_pressure_comparison_2D.png b/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/gravity_pore_pressure_comparison_2D.png new file mode 100644 index 00000000..c9493bed Binary files /dev/null and b/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/gravity_pore_pressure_comparison_2D.png differ diff --git a/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/gravity_strain_comparison_2D.png b/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/gravity_strain_comparison_2D.png new file mode 100644 index 00000000..d8f9a4db Binary files /dev/null and b/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/gravity_strain_comparison_2D.png differ diff --git a/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/gravity_stress_comparison_2D.png b/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/gravity_stress_comparison_2D.png new file mode 100644 index 00000000..48f0f7a4 Binary files /dev/null and b/source/user/examples/UWExamples/freeField2D_UPcomparison/figures/gravity_stress_comparison_2D.png differ diff --git a/source/user/examples/UWExamples/freeField2D_UPcomparison/freeField2D_SSPquadUP.tcl b/source/user/examples/UWExamples/freeField2D_UPcomparison/freeField2D_SSPquadUP.tcl new file mode 100644 index 00000000..28fb6252 --- /dev/null +++ b/source/user/examples/UWExamples/freeField2D_UPcomparison/freeField2D_SSPquadUP.tcl @@ -0,0 +1,253 @@ +# Plane-strain SSPquadUP version of freeField3D_SSPbrickUP.tcl. +# One counterclockwise four-node quadrilateral per original column cell. +# Units: kN, m, s. Soil DOFs: ux, uy, integral(p); nodeVel DOF 3 is pressure. +# Same materials, layering, drainage, gravity stages and x input motion as 3D. +# Plane strain omits the original out-of-plane motion and g*sin(slope). +# Thickness=2 m preserves the original 2 m x 2 m base area and x dashpot. +# Retain the original freeField3D_SSPbrickUP.tcl stabilization coefficient alpha. + +set here [file normalize [file dirname [info script]]] +set resultsDir [file join $here results] +file mkdir $resultsDir +wipe + +# Geometry and mesh (layer 1 is at the bottom). +set soilThick 30.0 +set grade 2.0 +set numLayers 3 +set layerThick(1) 20.0 +set layerThick(2) 8.0 +set layerThick(3) 2.0 +set nElemY(1) 40 +set nElemY(2) 16 +set nElemY(3) 4 +set width 2.0 +set thickness 2.0 +set waterTable 2.0 +set waterHeight [expr {$soilThick-$waterTable}] +set nCells 0 +for {set k 1} {$k <= $numLayers} {incr k} { + set sElemY($k) [expr {$layerThick($k)/$nElemY($k)}] + incr nCells $nElemY($k) +} +set nSoilNodes [expr {2*($nCells+1)}] +set nSoilElements $nCells + +# Two nodes at every elevation, numbered left then right, bottom to top. +model BasicBuilder -ndm 2 -ndf 3 +set nodesInfo [open [file join $resultsDir sspquadup_nodesInfo.dat] w] +set level 0 +set y 0.0 +for {set k 1} {$k <= $numLayers} {incr k} { + for {set j 0} {$j < $nElemY($k)} {incr j} { + foreach {side x} [list 0 0.0 1 $width] { + set tag [expr {2*$level+$side+1}] + node $tag $x $y + puts $nodesInfo "$tag $x $y" + if {$y >= $waterHeight-1.0e-10} { fix $tag 0 0 1 } + } + incr level + set y [expr {$y+$sElemY($k)}] + } +} +foreach {side x} [list 0 0.0 1 $width] { + set tag [expr {2*$level+$side+1}] + node $tag $x $soilThick + puts $nodesInfo "$tag $x $soilThick" + fix $tag 0 0 1 +} +close $nodesInfo + +# Free-field displacement ties; pressures remain independent except drainage. +fix 1 0 1 0 +fix 2 0 1 0 +equalDOF 1 2 1 +for {set level 1} {$level <= $nCells} {incr level} { + equalDOF [expr {2*$level+1}] [expr {2*$level+2}] 1 2 +} + +# Material dimension is 2 (PlaneStrain); remaining parameters match 3D. +set slope [expr {atan($grade/100.0)}] +set g -9.81 +nDMaterial PressureDependMultiYield02 3 2 1.8 9.0e4 2.2e5 32 0.1 \ + 101.0 0.5 26 0.067 0.23 0.06 \ + 0.27 20 5.0 3.0 1.0 \ + 0.0 0.77 0.9 0.02 0.7 101.0 +set xWgt(3) 0.0 +set yWgt(3) [expr $g*cos($slope)] +set uBulk(3) 2.2e6 +set xPerm(3) 1.0e-2 +set yPerm(3) 1.0e-2 +set eVoid(3) 0.77 + +nDMaterial PressureDependMultiYield02 2 2 2.24 9.0e4 2.2e5 32 0.1 \ + 101.0 0.5 26 0.067 0.23 0.06 \ + 0.27 20 5.0 3.0 1.0 \ + 0.0 0.77 0.9 0.02 0.7 101.0 +set xWgt(2) 0.0 +set yWgt(2) [expr $g*cos($slope)] +set uBulk(2) 2.2e6 +set xPerm(2) 1.0e-5 +set yPerm(2) 1.0e-5 +set eVoid(2) 0.77 + +nDMaterial PressureDependMultiYield02 1 2 2.45 1.3e5 2.6e5 39 0.1 \ + 101.0 0.5 26 0.010 0.0 0.35 \ + 0.0 20 5.0 3.0 1.0 \ + 0.0 0.47 0.9 0.02 0.7 101.0 +set xWgt(1) 0.0 +set yWgt(1) [expr $g*cos($slope)] +set uBulk(1) 2.2e6 +set xPerm(1) 1.0e-2 +set yPerm(1) 1.0e-2 +set eVoid(1) 0.47 + + +# One quadrilateral per rectangle: bottom-left, bottom-right, top-right, top-left. +set alpha 1.5e-6 +set cell 0 +set eleTag 0 +set connectivity {} +set elemInfo [open [file join $resultsDir sspquadup_elementInfo.dat] w] +puts $elemInfo "# tag node1 node2 node3 node4 layer cell" +for {set k 1} {$k <= $numLayers} {incr k} { + set firstElement($k) [expr {$eleTag+1}] + for {set j 0} {$j < $nElemY($k)} {incr j} { + set n1 [expr {2*$cell+1}] + set n2 [expr {$n1+1}] + set n3 [expr {$n1+3}] + set n4 [expr {$n1+2}] + incr eleTag + # As in freeField3D_SSPbrickUP.tcl: high permeability during gravity. + # Pass fluid bulk directly; SSPquadUP computes porosity internally. + element SSPquadUP $eleTag $n1 $n2 $n3 $n4 $k $thickness \ + $uBulk($k) 1.0 1.0 1.0 $eVoid($k) $alpha $xWgt($k) $yWgt($k) + lappend connectivity [list $eleTag $n1 $n2 $n3 $n4 $k] + puts $elemInfo "$eleTag $n1 $n2 $n3 $n4 $k [expr {$cell+1}]" + incr cell + } + set lastElement($k) $eleTag +} +close $elemInfo +if {$eleTag != $nSoilElements} { error "Unexpected quadrilateral count" } +puts "SSPquadUP column: $nSoilNodes soil nodes, $nSoilElements quadrilaterals." + +# One horizontal Lysmer dashpot; auxiliary nodes have displacement DOFs only. +model BasicBuilder -ndm 2 -ndf 2 +set dashF [expr {$nSoilNodes+1}] +set dashX [expr {$nSoilNodes+2}] +node $dashF 0.0 0.0 +node $dashX 0.0 0.0 +fix $dashF 1 1 +fix $dashX 0 1 +equalDOF 1 $dashX 1 +set rockVS 700.0 +set rockDen 2.5 +set colArea [expr {$width*$thickness}] +set dashpotCoeff [expr {$rockVS*$rockDen*$colArea}] +uniaxialMaterial Viscous [expr {$numLayers+1}] $dashpotCoeff 1 +element zeroLength [expr {$nSoilElements+1}] $dashF $dashX \ + -mat [expr {$numLayers+1}] -dir 1 +model BasicBuilder -ndm 2 -ndf 3 + +# GiD mesh contains only soil nodes and quadrilaterals. +set meshFile [open [file join $resultsDir sspquadup_freeField2D.flavia.msh] w] +puts $meshFile "MESH ffSSPquadUP dimension 2 ElemType Quadrilateral Nnode 4" +puts $meshFile "Coordinates" +for {set tag 1} {$tag <= $nSoilNodes} {incr tag} { + puts $meshFile "$tag [join [nodeCoord $tag] { }] 0.0" +} +puts $meshFile "End Coordinates" +puts $meshFile "Elements" +foreach entry $connectivity { puts $meshFile [join $entry { }] } +puts $meshFile "End Elements" +close $meshFile + +# Recorder columns: time, followed by node/element tags in ascending order. +# Element stress2D3/strain2D3 have xx, yy, xy (engineering shear strain). +proc recordColumn {prefix recDT} { + global resultsDir nSoilNodes nSoilElements + recorder Node -file [file join $resultsDir ${prefix}displacement.out] \ + -time -dT $recDT -nodeRange 1 $nSoilNodes -dof 1 2 disp + recorder Node -file [file join $resultsDir ${prefix}velocity.out] \ + -time -dT $recDT -nodeRange 1 $nSoilNodes -dof 1 2 vel + recorder Node -file [file join $resultsDir ${prefix}acceleration.out] \ + -time -dT $recDT -nodeRange 1 $nSoilNodes -dof 1 2 accel + recorder Node -file [file join $resultsDir ${prefix}porePressure.out] \ + -time -dT $recDT -nodeRange 1 $nSoilNodes -dof 3 vel + recorder Element -file [file join $resultsDir ${prefix}stress.out] \ + -time -dT $recDT -eleRange 1 $nSoilElements stress2D3 + recorder Element -file [file join $resultsDir ${prefix}strain.out] \ + -time -dT $recDT -eleRange 1 $nSoilElements strain2D3 +} +recordColumn sspquadup_G 0.0 + +# Analysis settings and staged gravity from freeField3D_SSPbrickUP.tcl. +set motionDT 0.005 +set motionSteps 7990 +set duration [expr {$motionDT*$motionSteps}] +# Retain the source model's selected motion timestep, 0.005 s. +set dT $motionDT +set gamma 0.5 +set beta 0.25 +# Rayleigh damping remains disabled, as in freeField3D.tcl. +for {set k 1} {$k <= $numLayers} {incr k} { + updateMaterialStage -material $k -stage 0 +} +constraints Penalty 1.0e14 1.0e14 +test NormDispIncr 1.0e-5 30 1 +algorithm Newton +numberer Plain +system SparseGeneral +integrator Newmark $gamma $beta +analysis Transient +set startT [clock seconds] +set ok [analyze 20 500.0] +if {$ok != 0} { error "Elastic gravity failed at [getTime], code $ok" } +puts "Finished with elastic gravity analysis..." +for {set k 1} {$k <= $numLayers} {incr k} { + updateMaterialStage -material $k -stage 1 +} +set ok [analyze 40 0.05] +if {$ok != 0} { error "Plastic gravity failed at [getTime], code $ok" } +puts "Finished with plastic gravity analysis..." + +# Apply layer permeabilities to the quadrilaterals in each layer. +# SSPquadUP uses hPerm/vPerm; Tri31UP uses xPerm/yPerm. +for {set k 1} {$k <= $numLayers} {incr k} { + setParameter -value $xPerm($k) -eleRange $firstElement($k) $lastElement($k) hPerm + setParameter -value $yPerm($k) -eleRange $firstElement($k) $lastElement($k) vPerm +} +setTime 0.0 +wipeAnalysis +remove recorders +set recDT [expr {10*$motionDT}] +recordColumn sspquadup_ $recDT + +# Same incident-wave velocity record and x-direction force factor as 3D. +set velocityFile [file join $here yerbaNSvelocity.out] +if {![file isfile $velocityFile]} { error "Input motion not found: $velocityFile" } +timeSeries Path 10 -dt $motionDT -filePath $velocityFile -factor $dashpotCoeff +pattern Plain 10 10 { + load 1 1.0 0.0 0.0 +} +constraints Penalty 1.0e14 1.0e14 +test NormDispIncr 1.0e-3 55 1 +algorithm KrylovNewton +numberer Plain +system SparseGeneral +integrator Newmark $gamma $beta +analysis Transient +set ok [analyze $motionSteps $dT] +# Up to two timestep halvings, as in the original; retry only remaining time. +for {set retry 0} {$ok != 0 && $retry < 2} {incr retry} { + set dT [expr {$dT/2.0}] + set remaining [expr {int(ceil(($duration-[getTime])/$dT-1.0e-8))}] + puts "Reducing timestep to $dT at [getTime]; $remaining remaining steps." + set ok [analyze $remaining $dT] +} +if {$ok != 0} { error "SSPquadUP dynamic analysis failed at [getTime], code $ok" } +if {abs([getTime]-$duration) > 1.0e-7} { error "Dynamic analysis ended short of $duration" } +puts "Finished with SSPquadUP dynamic analysis at [getTime] s." +puts "Analysis execution time: [expr {[clock seconds]-$startT}] seconds" +wipe diff --git a/source/user/examples/UWExamples/freeField2D_UPcomparison/freeField2D_Tri31UP.tcl b/source/user/examples/UWExamples/freeField2D_UPcomparison/freeField2D_Tri31UP.tcl new file mode 100644 index 00000000..d77af603 --- /dev/null +++ b/source/user/examples/UWExamples/freeField2D_UPcomparison/freeField2D_Tri31UP.tcl @@ -0,0 +1,255 @@ +# Plane-strain Tri31UP version of freeField3D.tcl. +# Two counterclockwise triangles per original cell (Tri31UP_twoEle_example.tcl). +# Units: kN, m, s. Soil DOFs: ux, uy, integral(p); nodeVel DOF 3 is pressure. +# Same materials, layering, drainage, gravity stages and x input motion as 3D. +# Plane strain omits the original out-of-plane motion and g*sin(slope). +# Thickness=2 m preserves the original 2 m x 2 m base area and x dashpot. +# Original alpha is retained as a starting value, not calibrated for triangles. + +set here [file normalize [file dirname [info script]]] +set resultsDir [file join $here results] +file mkdir $resultsDir +wipe + +# Geometry and mesh (layer 1 is at the bottom). +set soilThick 30.0 +set grade 2.0 +set numLayers 3 +set layerThick(1) 20.0 +set layerThick(2) 8.0 +set layerThick(3) 2.0 +set nElemY(1) 40 +set nElemY(2) 16 +set nElemY(3) 4 +set width 2.0 +set thickness 2.0 +set waterTable 2.0 +set waterHeight [expr {$soilThick-$waterTable}] +set nCells 0 +for {set k 1} {$k <= $numLayers} {incr k} { + set sElemY($k) [expr {$layerThick($k)/$nElemY($k)}] + incr nCells $nElemY($k) +} +set nSoilNodes [expr {2*($nCells+1)}] +set nSoilElements [expr {2*$nCells}] + +# Two nodes at every elevation, numbered left then right, bottom to top. +model BasicBuilder -ndm 2 -ndf 3 +set nodesInfo [open [file join $resultsDir tri31UP_nodesInfo.dat] w] +set level 0 +set y 0.0 +for {set k 1} {$k <= $numLayers} {incr k} { + for {set j 0} {$j < $nElemY($k)} {incr j} { + foreach {side x} [list 0 0.0 1 $width] { + set tag [expr {2*$level+$side+1}] + node $tag $x $y + puts $nodesInfo "$tag $x $y" + if {$y >= $waterHeight-1.0e-10} { fix $tag 0 0 1 } + } + incr level + set y [expr {$y+$sElemY($k)}] + } +} +foreach {side x} [list 0 0.0 1 $width] { + set tag [expr {2*$level+$side+1}] + node $tag $x $soilThick + puts $nodesInfo "$tag $x $soilThick" + fix $tag 0 0 1 +} +close $nodesInfo + +# Free-field displacement ties; pressures remain independent except drainage. +fix 1 0 1 0 +fix 2 0 1 0 +equalDOF 1 2 1 +for {set level 1} {$level <= $nCells} {incr level} { + equalDOF [expr {2*$level+1}] [expr {2*$level+2}] 1 2 +} + +# Material dimension is 2 (PlaneStrain); remaining parameters match 3D. +set slope [expr {atan($grade/100.0)}] +set g -9.81 +nDMaterial PressureDependMultiYield02 3 2 1.8 9.0e4 2.2e5 32 0.1 \ + 101.0 0.5 26 0.067 0.23 0.06 \ + 0.27 20 5.0 3.0 1.0 \ + 0.0 0.77 0.9 0.02 0.7 101.0 +set xWgt(3) 0.0 +set yWgt(3) [expr $g*cos($slope)] +set uBulk(3) 2.2e6 +set xPerm(3) 1.0e-2 +set yPerm(3) 1.0e-2 +set eVoid(3) 0.77 + +nDMaterial PressureDependMultiYield02 2 2 2.24 9.0e4 2.2e5 32 0.1 \ + 101.0 0.5 26 0.067 0.23 0.06 \ + 0.27 20 5.0 3.0 1.0 \ + 0.0 0.77 0.9 0.02 0.7 101.0 +set xWgt(2) 0.0 +set yWgt(2) [expr $g*cos($slope)] +set uBulk(2) 2.2e6 +set xPerm(2) 1.0e-5 +set yPerm(2) 1.0e-5 +set eVoid(2) 0.77 + +nDMaterial PressureDependMultiYield02 1 2 2.45 1.3e5 2.6e5 39 0.1 \ + 101.0 0.5 26 0.010 0.0 0.35 \ + 0.0 20 5.0 3.0 1.0 \ + 0.0 0.47 0.9 0.02 0.7 101.0 +set xWgt(1) 0.0 +set yWgt(1) [expr $g*cos($slope)] +set uBulk(1) 2.2e6 +set xPerm(1) 1.0e-2 +set yPerm(1) 1.0e-2 +set eVoid(1) 0.47 + + +# Two triangles share diagonal bottom-left--top-right in each rectangle. +set alpha 1.5e-6 +set cell 0 +set eleTag 0 +set connectivity {} +set elemInfo [open [file join $resultsDir tri31UP_elementInfo.dat] w] +puts $elemInfo "# tag node1 node2 node3 layer cell" +for {set k 1} {$k <= $numLayers} {incr k} { + set firstElement($k) [expr {$eleTag+1}] + for {set j 0} {$j < $nElemY($k)} {incr j} { + set n1 [expr {2*$cell+1}] + set n2 [expr {$n1+1}] + set n3 [expr {$n1+3}] + set n4 [expr {$n1+2}] + foreach triangle [list [list $n1 $n2 $n3] [list $n1 $n3 $n4]] { + incr eleTag + lassign $triangle a b c + # As in freeField3D.tcl: high permeability during gravity. + # Pass fluid bulk directly; Tri31UP computes porosity internally. + element Tri31UP $eleTag $a $b $c $k $thickness \ + $uBulk($k) 1.0 1.0 1.0 $eVoid($k) $alpha $xWgt($k) $yWgt($k) + lappend connectivity [list $eleTag $a $b $c $k] + puts $elemInfo "$eleTag $a $b $c $k [expr {$cell+1}]" + } + incr cell + } + set lastElement($k) $eleTag +} +close $elemInfo +if {$eleTag != $nSoilElements} { error "Unexpected triangle count" } +puts "Tri31UP column: $nSoilNodes soil nodes, $nSoilElements triangles." + +# One horizontal Lysmer dashpot; auxiliary nodes have displacement DOFs only. +model BasicBuilder -ndm 2 -ndf 2 +set dashF [expr {$nSoilNodes+1}] +set dashX [expr {$nSoilNodes+2}] +node $dashF 0.0 0.0 +node $dashX 0.0 0.0 +fix $dashF 1 1 +fix $dashX 0 1 +equalDOF 1 $dashX 1 +set rockVS 700.0 +set rockDen 2.5 +set colArea [expr {$width*$thickness}] +set dashpotCoeff [expr {$rockVS*$rockDen*$colArea}] +uniaxialMaterial Viscous [expr {$numLayers+1}] $dashpotCoeff 1 +element zeroLength [expr {$nSoilElements+1}] $dashF $dashX \ + -mat [expr {$numLayers+1}] -dir 1 +model BasicBuilder -ndm 2 -ndf 3 + +# GiD mesh contains only soil nodes and triangles. +set meshFile [open [file join $resultsDir tri31UP_freeField2D.flavia.msh] w] +puts $meshFile "MESH ffTri31UP dimension 2 ElemType Triangle Nnode 3" +puts $meshFile "Coordinates" +for {set tag 1} {$tag <= $nSoilNodes} {incr tag} { + puts $meshFile "$tag [join [nodeCoord $tag] { }] 0.0" +} +puts $meshFile "End Coordinates" +puts $meshFile "Elements" +foreach entry $connectivity { puts $meshFile [join $entry { }] } +puts $meshFile "End Elements" +close $meshFile + +# Recorder columns: time, followed by node/element tags in ascending order. +# Element stress2D3/strain2D3 have xx, yy, xy (engineering shear strain). +proc recordColumn {prefix recDT} { + global resultsDir nSoilNodes nSoilElements + recorder Node -file [file join $resultsDir ${prefix}displacement.out] \ + -time -dT $recDT -nodeRange 1 $nSoilNodes -dof 1 2 disp + recorder Node -file [file join $resultsDir ${prefix}velocity.out] \ + -time -dT $recDT -nodeRange 1 $nSoilNodes -dof 1 2 vel + recorder Node -file [file join $resultsDir ${prefix}acceleration.out] \ + -time -dT $recDT -nodeRange 1 $nSoilNodes -dof 1 2 accel + recorder Node -file [file join $resultsDir ${prefix}porePressure.out] \ + -time -dT $recDT -nodeRange 1 $nSoilNodes -dof 3 vel + recorder Element -file [file join $resultsDir ${prefix}stress.out] \ + -time -dT $recDT -eleRange 1 $nSoilElements stress2D3 + recorder Element -file [file join $resultsDir ${prefix}strain.out] \ + -time -dT $recDT -eleRange 1 $nSoilElements strain2D3 +} +recordColumn tri31UP_G 0.0 + +# Analysis settings and staged gravity from freeField3D.tcl. +set motionDT 0.005 +set motionSteps 7990 +set duration [expr {$motionDT*$motionSteps}] +# Retain the source model's selected motion timestep, 0.005 s. +set dT $motionDT +set gamma 0.5 +set beta 0.25 +# Rayleigh damping remains disabled, as in freeField3D.tcl. +for {set k 1} {$k <= $numLayers} {incr k} { + updateMaterialStage -material $k -stage 0 +} +constraints Penalty 1.0e14 1.0e14 +test NormDispIncr 1.0e-5 30 1 +algorithm Newton +numberer Plain +system SparseGeneral +integrator Newmark $gamma $beta +analysis Transient +set startT [clock seconds] +set ok [analyze 20 500.0] +if {$ok != 0} { error "Elastic gravity failed at [getTime], code $ok" } +puts "Finished with elastic gravity analysis..." +for {set k 1} {$k <= $numLayers} {incr k} { + updateMaterialStage -material $k -stage 1 +} +set ok [analyze 40 0.05] +if {$ok != 0} { error "Plastic gravity failed at [getTime], code $ok" } +puts "Finished with plastic gravity analysis..." + +# Apply layer permeabilities to both triangles in every original cell. +for {set k 1} {$k <= $numLayers} {incr k} { + setParameter -value $xPerm($k) -eleRange $firstElement($k) $lastElement($k) xPerm + setParameter -value $yPerm($k) -eleRange $firstElement($k) $lastElement($k) yPerm +} +setTime 0.0 +wipeAnalysis +remove recorders +set recDT [expr {10*$motionDT}] +recordColumn tri31UP_ $recDT + +# Same incident-wave velocity record and x-direction force factor as 3D. +set velocityFile [file join $here yerbaNSvelocity.out] +if {![file isfile $velocityFile]} { error "Input motion not found: $velocityFile" } +timeSeries Path 10 -dt $motionDT -filePath $velocityFile -factor $dashpotCoeff +pattern Plain 10 10 { + load 1 1.0 0.0 0.0 +} +constraints Penalty 1.0e14 1.0e14 +test NormDispIncr 1.0e-3 55 1 +algorithm KrylovNewton +numberer Plain +system SparseGeneral +integrator Newmark $gamma $beta +analysis Transient +set ok [analyze $motionSteps $dT] +# Up to two timestep halvings, as in the original; retry only remaining time. +for {set retry 0} {$ok != 0 && $retry < 2} {incr retry} { + set dT [expr {$dT/2.0}] + set remaining [expr {int(ceil(($duration-[getTime])/$dT-1.0e-8))}] + puts "Reducing timestep to $dT at [getTime]; $remaining remaining steps." + set ok [analyze $remaining $dT] +} +if {$ok != 0} { error "Tri31UP dynamic analysis failed at [getTime], code $ok" } +if {abs([getTime]-$duration) > 1.0e-7} { error "Dynamic analysis ended short of $duration" } +puts "Finished with Tri31UP dynamic analysis at [getTime] s." +puts "Analysis execution time: [expr {[clock seconds]-$startT}] seconds" +wipe diff --git a/source/user/examples/UWExamples/freeField2D_UPcomparison/freeField2D_meshes.py b/source/user/examples/UWExamples/freeField2D_UPcomparison/freeField2D_meshes.py new file mode 100644 index 00000000..ff266f47 --- /dev/null +++ b/source/user/examples/UWExamples/freeField2D_UPcomparison/freeField2D_meshes.py @@ -0,0 +1,121 @@ +"""Plot the exported SSPquadUP and Tri31UP free-field meshes side by side. + +Run: python freeField2D_meshes.py +Reads results/sspquadup_freeField2D.flavia.msh and +results/tri31UP_freeField2D.flavia.msh; writes figures/freeField2D_meshes.png. +""" + +from pathlib import Path +import re + +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt +from matplotlib.collections import LineCollection +from matplotlib.lines import Line2D +from matplotlib.patches import Patch +import numpy as np + + +HERE = Path(__file__).resolve().parent +RESULTS = HERE / "results" +FIGURES = HERE / "figures" +MODELS = ( + ("SSPquadUP", "sspquadup_freeField2D.flavia.msh", "quadrilateral", 4), + ("Tri31UP", "tri31UP_freeField2D.flavia.msh", "triangle", 3), +) +MATERIALS = { + 1: ("tab:blue", "Material 1: 0-20 m"), + 2: ("tab:orange", "Material 2: 20-28 m"), + 3: ("tab:purple", "Material 3: 28-30 m"), +} + + +def read_mesh(path: Path, topology: str, node_count: int): + """Read actual coordinates, connectivity and material tags from GiD.""" + nodes, elements = {}, {} + section = None + header_found = False + for line_number, line in enumerate(path.read_text().splitlines(), 1): + line = line.strip() + if not line or line.startswith("#"): + continue + if line.upper().startswith("MESH "): + header = re.search(r"dimension\s+2\s+ElemType\s+(\w+)\s+Nnode\s+(\d+)", line, re.I) + if header is None or (header[1].lower(), int(header[2])) != (topology, node_count): + raise ValueError(f"{path}:{line_number}: unexpected 2D mesh header") + header_found = True + section = None + elif line.lower() in ("coordinates", "elements"): + section = line.lower() + elif line.lower().startswith("end "): + section = None + elif section == "coordinates": + fields = line.split() + tag = int(fields[0]) + xy = tuple(map(float, fields[1:3])) + if tag in nodes or len(xy) != 2 or not np.isfinite(xy).all(): + raise ValueError(f"{path}:{line_number}: invalid or duplicate node") + nodes[tag] = xy + elif section == "elements": + fields = list(map(int, line.split())) + if len(fields) != node_count + 2 or fields[0] in elements: + raise ValueError(f"{path}:{line_number}: invalid or duplicate element") + elements[fields[0]] = (tuple(fields[1:-1]), fields[-1]) + if not header_found or not nodes or not elements: + raise ValueError(f"{path}: incomplete mesh") + for tag, (connectivity, material) in elements.items(): + if len(set(connectivity)) != node_count or any(node not in nodes for node in connectivity): + raise ValueError(f"{path}: element {tag} has invalid connectivity") + if material not in MATERIALS: + raise ValueError(f"{path}: unsupported material {material}") + xy = np.asarray([nodes[node] for node in connectivity]) + area = 0.5 * np.sum(xy[:, 0] * np.roll(xy[:, 1], -1) - xy[:, 1] * np.roll(xy[:, 0], -1)) + if area <= 0: + raise ValueError(f"{path}: element {tag} has nonpositive area") + return nodes, elements + + +def main() -> None: + meshes = [read_mesh(RESULTS / filename, topology, count) + for _, filename, topology, count in MODELS] + all_xy = np.asarray([xy for nodes, _ in meshes for xy in nodes.values()]) + lower, upper = all_xy.min(axis=0), all_xy.max(axis=0) + figure, axes = plt.subplots(1, 2, figsize=(7, 12), sharex=True, sharey=True, + constrained_layout=True) + for axis, (label, _, _, _), (nodes, elements) in zip(axes, MODELS, meshes): + for material, (color, _) in MATERIALS.items(): + edges = set() + for connectivity, layer in elements.values(): + if layer == material: + for a, b in zip(connectivity, connectivity[1:] + connectivity[:1]): + edges.add(tuple(sorted((a, b)))) + if edges: + segments = [(nodes[a], nodes[b]) for a, b in sorted(edges)] + axis.add_collection(LineCollection(segments, colors=color, linewidths=0.9)) + xy = np.asarray(list(nodes.values())) + axis.scatter(xy[:, 0], xy[:, 1], s=6, color="tab:red", zorder=3) + axis.set_title(f"{label}\n{len(elements)} elements, {len(nodes)} nodes") + axis.set_xlabel("x [m]") + axis.set_xlim(lower[0] - 0.25, upper[0] + 0.25) + axis.set_ylim(lower[1] - 0.5, upper[1] + 0.5) + axis.set_xticks((lower[0], upper[0])) + axis.set_yticks(np.arange(lower[1], upper[1] + 0.1, 5.0)) + axis.set_aspect("equal", adjustable="box") + print(f"{label}: {len(elements)} elements, {len(nodes)} three-DOF nodes") + axes[0].set_ylabel("Elevation y [m]") + handles = [Patch(facecolor=color, label=label) for color, label in MATERIALS.values()] + handles.append(Line2D([], [], color="tab:red", marker="o", linestyle="none", + markersize=4, label="Node: $u_x,u_y,p$")) + figure.legend(handles=handles, loc="outside lower center", ncol=2, fontsize=9) + figure.suptitle("2D plane-strain free-field meshes (true geometric aspect ratio)") + FIGURES.mkdir(parents=True, exist_ok=True) + output = FIGURES / "freeField2D_meshes.png" + figure.savefig(output, dpi=220) + plt.close(figure) + print(f"Wrote {output}") + + +if __name__ == "__main__": + main() diff --git a/source/user/examples/UWExamples/freeField2D_UPcomparison/freeField2D_schematic.py b/source/user/examples/UWExamples/freeField2D_UPcomparison/freeField2D_schematic.py new file mode 100644 index 00000000..6ac02b3c --- /dev/null +++ b/source/user/examples/UWExamples/freeField2D_UPcomparison/freeField2D_schematic.py @@ -0,0 +1,131 @@ +"""Draw the layered 2D free-field problem and history-comparison locations. + +Run: python freeField2D_schematic.py +Writes PNG, SVG and PDF versions into figures/. +""" + +from pathlib import Path + +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt +from matplotlib.patches import Polygon, Rectangle + + +HERE = Path(__file__).resolve().parent +FIGURES = HERE / "figures" +INK = "#19324A" +MUTED = "#53677B" +WATER = "#008CA8" +LAYERS = ( + (1, 0, 20, "#C9DFEF", "#3D759E"), + (2, 20, 28, "#F5D8AA", "#AA7030"), + (3, 28, 30, "#DED5EE", "#7E629F"), +) + + +def dimension(axis, x, lower, upper, label, *, overall=False): + color = INK if overall else MUTED + axis.annotate("", (x, upper), (x, lower), + arrowprops=dict(arrowstyle="<->", color=color, lw=1.1, + shrinkA=0, shrinkB=0)) + for y in (lower, upper): + axis.plot([x - 0.15, -0.15], [y, y], color=color, lw=0.55, alpha=0.5) + axis.text(x - 0.22, (lower + upper) / 2, label, color=color, + fontsize=12 if overall else 10, rotation=90 if overall else 0, + ha="right", va="center") + + +def main() -> None: + plt.rcParams.update({"font.family": "DejaVu Sans", "font.size": 11, + "svg.fonttype": "none"}) + figure = plt.figure(figsize=(11, 10), facecolor="white") + figure.text(0.075, 0.95, "2D FREE-FIELD SOIL COLUMN", fontsize=22, + fontweight="bold", color=INK) + figure.text(0.075, 0.913, "Plane strain / SSPquadUP or Tri31UP / out-of-plane thickness: 2 m", + fontsize=11, color=MUTED) + axis = figure.add_axes((0.075, 0.12, 0.87, 0.76)) + axis.set_xlim(-5, 12) + axis.set_ylim(-6, 35) + axis.axis("off") + # The displayed width is exaggerated for readability; dimensions are actual. + left, right = 0.0, 2.8 + for layer, bottom, top, fill, accent in LAYERS: + axis.add_patch(Rectangle((left, bottom), right, top - bottom, + facecolor=fill, edgecolor="none")) + axis.text((left + right) / 2, (bottom + top) / 2, f"LAYER {layer}", + color=accent, fontsize=12 if layer != 3 else 10, + fontweight="bold", ha="center", va="center") + axis.add_patch(Rectangle((left, 0), right, 30, fill=False, edgecolor=INK, lw=1.6)) + axis.plot([left, right], [20, 20], color=INK, lw=1.0) + # Elastic half-space below the column; not an extra soil layer. + axis.add_patch(Rectangle((-0.2, -1.1), right + 0.4, 1.1, + facecolor="#E6EBF0", edgecolor="#98A8B6", hatch="///", lw=0.5)) + axis.plot([left, right], [0, 0], color=INK, lw=2) + + dimension(axis, -3.0, 0, 30, "30 m", overall=True) + for _, bottom, top, _, _ in LAYERS: + dimension(axis, -0.9, bottom, top, f"{top-bottom} m") + axis.annotate("", (left, 33), (right, 33), + arrowprops=dict(arrowstyle="<->", color=INK, lw=1.1, shrinkA=0, shrinkB=0)) + for x in (left, right): + axis.plot([x, x], [30.5, 33.5], color=MUTED, lw=0.6) + axis.text((left + right) / 2, 33.5, "2 m width", ha="center", color=INK, fontsize=11) + + # Water table coincides with the layer 2 / layer 3 interface. + axis.plot([-0.25, 5.0], [28, 28], color=WATER, lw=1.8, dashes=(5, 3)) + axis.add_patch(Polygon(((4.55, 28.5), (4.95, 28.5), (4.75, 28)), + closed=True, facecolor=WATER, edgecolor=WATER)) + axis.plot([4.9, 5.7], [28, 28], color=WATER, lw=1.0) + axis.text(6.0, 28.0, "WATER TABLE", fontsize=11, color=WATER, + va="center", fontweight="bold") + axis.text(6.0, 26.7, "y = 28 m · 2 m below surface", fontsize=10, color=MUTED) + + # These are representative elevations: each history averages both end nodes. + for name, y, text_y, title, nodes in ( + ("P1", 15, 15, "Mid-column", "61 and 62"), + ("P2", 30, 31.3, "Ground surface", "121 and 122"), + ): + axis.plot([left, right], [y, y], color=INK, lw=1.1, dashes=(3, 3)) + axis.scatter([left, right], [y, y], s=52, facecolor="white", + edgecolor=INK, linewidth=1.6, zorder=5) + axis.scatter([(left + right) / 2], [y], s=46, color=INK, marker="D", zorder=5) + axis.plot([right + 0.12, 5.3, 5.7], [y, text_y, text_y], color=INK, lw=1.0) + axis.text(6.0, text_y, f"{name} {title}", fontsize=12, color=INK, + fontweight="bold", va="center") + axis.text(6.0, text_y - 1.3, f"y = {y} m · average of nodes {nodes}", + fontsize=9.5, color=MUTED) + + # A horizontal incident-wave load and the absorbing boundary act at the base. + axis.annotate("", (right - 0.15, -2.4), (left + 0.15, -2.4), + arrowprops=dict(arrowstyle="<->", color="#BE593C", lw=2.4)) + axis.annotate("", (left, 0), (left, -2.4), + arrowprops=dict(arrowstyle="-", color="#BE593C", lw=1.1)) + axis.text(6.0, -0.8, "HORIZONTAL MOTION INPUT", fontsize=11, + color="#BE593C", fontweight="bold") + axis.text(6.0, -2.15, r"At the base: $F_x(t)=c\,v_{in}(t)$", color=MUTED, fontsize=10) + axis.plot([right + 0.15, 5.5], [-2.4, -2.4], color="#BE593C", lw=1.0) + axis.text((left + right) / 2, -4.0, "Elastic half-space\nHorizontal Lysmer dashpot", + ha="center", va="center", color=MUTED, fontsize=10, linespacing=1.5) + axis.annotate("", (10.0, 4.1), (10.0, 1.1), + arrowprops=dict(arrowstyle="->", color=MUTED, lw=1.1)) + axis.annotate("", (11.4, 1.1), (10.0, 1.1), + arrowprops=dict(arrowstyle="->", color=MUTED, lw=1.1)) + axis.text(9.7, 4.3, "y", color=MUTED, fontsize=10) + axis.text(11.5, 0.9, "x", color=MUTED, fontsize=10) + + figure.text(0.075, 0.075, "Comparison histories: horizontal displacement, vertical displacement and pore pressure.", + fontsize=10, color=INK) + figure.text(0.075, 0.05, "Diamonds mark comparison elevations; circles mark the two averaged nodes. Width exaggerated for clarity.", + fontsize=9, color=MUTED) + FIGURES.mkdir(parents=True, exist_ok=True) + for suffix in ("png", "svg", "pdf"): + output = FIGURES / f"freeField2D_schematic.{suffix}" + figure.savefig(output, dpi=240, facecolor="white") + print(f"Wrote {output}") + plt.close(figure) + + +if __name__ == "__main__": + main() diff --git a/source/user/examples/UWExamples/freeField2D_UPcomparison/freefield_plot_utils.py b/source/user/examples/UWExamples/freeField2D_UPcomparison/freefield_plot_utils.py new file mode 100644 index 00000000..b763a200 --- /dev/null +++ b/source/user/examples/UWExamples/freeField2D_UPcomparison/freefield_plot_utils.py @@ -0,0 +1,105 @@ +"""Shared result readers and formatting for the 2D and 3D plotting scripts.""" + +from pathlib import Path + +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt +import numpy as np + + +RESULTS = Path(__file__).resolve().parent / "results" +N_CELLS = 60 +N_LEVELS = N_CELLS + 1 +N_CORNERS_PER_LEVEL = 4 +N_CORNER_NODES = N_CORNERS_PER_LEVEL * N_LEVELS +N_PRESSURE_NODES = N_CORNER_NODES +N_C3D10_NODES = 1089 +N_TETS_PER_CELL = 6 +LEVELS = {"Mid-column (y = 15 m)": 30, "Top (y = 30 m)": 60} +ELEVATION_NODES = np.linspace(0.0, 30.0, N_LEVELS) +ELEVATION_CELLS = 0.5 * (ELEVATION_NODES[:-1] + ELEVATION_NODES[1:]) + + +def load_complete_rows(path: Path, expected_columns: int) -> np.ndarray: + """Read complete numeric rows, tolerating a result still being written.""" + if not path.is_file(): + raise FileNotFoundError(f"Required dynamic result not found: {path}") + rows = [] + with path.open("r", encoding="utf-8", errors="replace") as stream: + for line_number, line in enumerate(stream, 1): + fields = line.split() + if len(fields) != expected_columns: + if line_number == 1: + raise ValueError(f"{path.name}: expected {expected_columns} columns, " + f"found {len(fields)} in its first row") + continue + try: + rows.append(np.asarray(fields, dtype=float)) + except ValueError: + continue + if not rows: + raise ValueError(f"No complete rows are available in {path}") + return np.vstack(rows) + + +def corner_average(history: np.ndarray, values_per_node: int, level: int) -> np.ndarray: + first = 1 + values_per_node * N_CORNERS_PER_LEVEL * level + last = first + values_per_node * N_CORNERS_PER_LEVEL + return history[:, first:last].reshape(len(history), N_CORNERS_PER_LEVEL, values_per_node).mean(axis=1) + + +def common_histories(*histories: np.ndarray): + common_times = np.round(histories[0][:, 0], 9) + for history in histories[1:]: + common_times = np.intersect1d(common_times, np.round(history[:, 0], 9)) + if common_times.size == 0: + raise ValueError("The histories currently have no common recorded times") + aligned = [] + for history in histories: + lookup = {round(time, 9): index for index, time in enumerate(history[:, 0])} + rows = np.asarray([lookup[float(time)] for time in common_times]) + aligned.append(history[rows]) + return common_times, *aligned + + +def final_row(name: str, expected_columns: int) -> np.ndarray: + path = RESULTS / name + if not path.is_file(): + raise FileNotFoundError(f"Required gravity result not found: {path}") + data = np.loadtxt(path, ndmin=2) + if data.shape[1] != expected_columns: + raise ValueError(f"{path.name}: expected {expected_columns} columns, found {data.shape[1]}") + return data[-1] + + +def displacement_profile(name: str, node_count: int): + history = final_row(name, 1 + 3 * node_count) + corners = history[1:1 + 3 * N_CORNER_NODES] + return history[0], corners.reshape(N_LEVELS, N_CORNERS_PER_LEVEL, 3).mean(axis=1) + + +def pore_pressure_profile(name: str): + history = final_row(name, 1 + N_CORNER_NODES) + return history[0], history[1:].reshape(N_LEVELS, N_CORNERS_PER_LEVEL).mean(axis=1) + + +def element_profile(name: str, values_per_element: int, elements_per_cell: int): + history = final_row(name, 1 + N_CELLS * elements_per_cell * values_per_element) + values = history[1:].reshape(N_CELLS, elements_per_cell, values_per_element).mean(axis=1) + return history[0], values + + +def style_axis(axis, xlabel: str): + axis.set_xlabel(xlabel) + axis.set_ylabel("Elevation y [m]") + axis.grid(alpha=0.3) + + +def profile_limits(*profiles: np.ndarray) -> tuple[float, float]: + """Use all models/components, include zero, and add 5% padding.""" + lower = min(0.0, *(float(np.min(values)) for values in profiles)) + upper = max(0.0, *(float(np.max(values)) for values in profiles)) + padding = 0.05 * (upper - lower) if upper > lower else 1.0e-12 + return lower - padding, upper + padding diff --git a/source/user/examples/UWExamples/freeField2D_UPcomparison/index.rst b/source/user/examples/UWExamples/freeField2D_UPcomparison/index.rst new file mode 100644 index 00000000..fa490977 --- /dev/null +++ b/source/user/examples/UWExamples/freeField2D_UPcomparison/index.rst @@ -0,0 +1,36 @@ +Two-dimensional free-field element comparison +============================================= + +This example compares the gravity and dynamic plane-strain free-field +response of a soil column using :ref:`SSPquadUP` and :ref:`Tri31UP`. +Dynamic displacement and pore-water pressure histories are compared +at mid-column and at the ground surface. + +.. figure:: figures/freeField2D_schematic.png + :alt: Layered two-dimensional free-field soil column with a water table, base motion input, and response comparison locations. + :width: 800px + :align: center + + Soil column used for the two-dimensional free-field response comparison. + +Tcl model files +--------------- + +* :download:`SSPquadUP ` +* :download:`Tri31UP ` + +Input velocity record used by both Tcl models: +:download:`yerbaNSvelocity.out `. +Save this file in the same directory as the Tcl model files. + +Python scripts +-------------- + +* :download:`Gravity-response comparison ` +* :download:`Dynamic-history comparison ` +* :download:`Shared plotting utility ` +* :download:`Column schematic ` +* :download:`Mesh comparison ` + +Keep the Python scripts together beside the ``results`` directory generated +by the Tcl models. The plotting scripts require NumPy and Matplotlib. diff --git a/source/user/examples/UWExamples/freeField2D_UPcomparison/plot_dynamic_history_comparison_2D.py b/source/user/examples/UWExamples/freeField2D_UPcomparison/plot_dynamic_history_comparison_2D.py new file mode 100644 index 00000000..4b02389f --- /dev/null +++ b/source/user/examples/UWExamples/freeField2D_UPcomparison/plot_dynamic_history_comparison_2D.py @@ -0,0 +1,77 @@ +"""Compare SSPquadUP and Tri31UP plane-strain dynamic histories. + +Run: python plot_dynamic_history_comparison_2D.py +Reads results/sspquadup_*.out and results/tri31UP_*.out. +Writes displacement and pore-pressure comparison plots into figures/. +Profiles average the left and right nodes at y=15 m and y=30 m. +""" + +from pathlib import Path + +from freefield_plot_utils import ( + LEVELS, N_LEVELS, RESULTS, common_histories, load_complete_rows, np, plt, +) + + +HERE = Path(__file__).resolve().parent +FIGURES = HERE / "figures" +FIGURES.mkdir(parents=True, exist_ok=True) +NODES_PER_LEVEL = 2 +N_NODES = NODES_PER_LEVEL * N_LEVELS +MODELS = ( + ("SSPquadUP", "sspquadup_", "tab:blue", "-"), + ("Tri31UP", "tri31UP_", "tab:red", "--"), +) + + +def level_average(history: np.ndarray, components: int, level: int) -> np.ndarray: + """Average both nodes' recorded components at one elevation.""" + start = 1 + level * NODES_PER_LEVEL * components + stop = start + NODES_PER_LEVEL * components + return history[:, start:stop].reshape(len(history), NODES_PER_LEVEL, components).mean(axis=1) + + +def plot_histories(histories: list[np.ndarray], pressure: bool) -> Path: + times, *aligned = common_histories(*histories) + components = 1 if pressure else 2 + labels = ("$p$ [kPa]",) if pressure else ("$u_x$ [m]", "$u_y$ [m]") + figure, axes = plt.subplots( + len(LEVELS), components, figsize=(11, 8) if pressure else (13, 9), + sharex=True, squeeze=False, constrained_layout=True, + ) + for row, (location, level) in enumerate(LEVELS.items()): + for model, history in zip(MODELS, aligned): + label, _, color, linestyle = model + values = level_average(history, components, level) + for component, axis in enumerate(axes[row]): + axis.plot(times, values[:, component], color=color, + linestyle=linestyle, lw=1.6, label=label) + for component, axis in enumerate(axes[row]): + axis.set_ylabel(f"{location}\n{labels[component]}") + axis.grid(alpha=0.3) + if row == len(LEVELS) - 1: + axis.set_xlabel("Time [s]") + axes[0, 0].legend(loc="best") + quantity = "pore_pressure" if pressure else "displacement" + figure.suptitle(f"2D free-field {quantity.replace('_', ' ')} histories: SSPquadUP vs Tri31UP") + output = FIGURES / f"dynamic_{quantity}_history_comparison_2D.png" + figure.savefig(output, dpi=200) + plt.close(figure) + print(f"{quantity}: {len(times)} shared recorded times through t={times[-1]:g} s") + return output + + +def main() -> None: + displacements, pressures = [], [] + for label, prefix, _, _ in MODELS: + displacement = load_complete_rows(RESULTS / f"{prefix}displacement.out", 1 + 2 * N_NODES) + pressure = load_complete_rows(RESULTS / f"{prefix}porePressure.out", 1 + N_NODES) + displacements.append(displacement) + pressures.append(pressure) + print(f"{label}: {len(displacement)} displacement rows, {len(pressure)} pressure rows") + for output in (plot_histories(displacements, False), plot_histories(pressures, True)): + print(f"Wrote {output}") + + +if __name__ == "__main__": + main() diff --git a/source/user/examples/UWExamples/freeField2D_UPcomparison/plot_gravity_results_comparison_2D.py b/source/user/examples/UWExamples/freeField2D_UPcomparison/plot_gravity_results_comparison_2D.py new file mode 100644 index 00000000..36e1ef43 --- /dev/null +++ b/source/user/examples/UWExamples/freeField2D_UPcomparison/plot_gravity_results_comparison_2D.py @@ -0,0 +1,92 @@ +"""Compare final SSPquadUP and Tri31UP plane-strain gravity results. + +Run: python plot_gravity_results_comparison_2D.py +Reads results/sspquadup_G*.out and results/tri31UP_G*.out. +Writes figures/gravity_*_comparison_2D.png. +Average two nodes per elevation and two equal-area triangles per original cell. +""" + +from pathlib import Path + +from freefield_plot_utils import ( + ELEVATION_CELLS, ELEVATION_NODES, N_CELLS, element_profile, final_row, + np, plt, profile_limits, style_axis, +) + + +HERE = Path(__file__).resolve().parent +FIGURES = HERE / "figures" +FIGURES.mkdir(parents=True, exist_ok=True) +MODELS = ( + ("SSPquadUP", "sspquadup_", 1, "tab:blue", "-"), + ("Tri31UP", "tri31UP_", 2, "tab:red", "--"), +) + + +def nodal_profile(name: str, components: int) -> tuple[float, np.ndarray]: + """Average the left and right nodes at each original elevation.""" + history = final_row(name, 1 + 2 * (N_CELLS + 1) * components) + values = history[1:].reshape(N_CELLS + 1, 2, components).mean(axis=1) + return history[0], values + + +def plot_profiles(profiles: list[np.ndarray], quantity: str, + labels: tuple[str, ...], nodal: bool) -> Path: + shared_scale = quantity in ("displacement", "pore_pressure", "stress") + limits = profile_limits(*profiles) if shared_scale else None + count = len(labels) + figure, axes = plt.subplots( + 1, count, figsize=(7, 8) if count == 1 else (5 * count, 7), + sharex=shared_scale, sharey=True, squeeze=False, constrained_layout=True, + ) + elevations = ELEVATION_NODES if nodal else ELEVATION_CELLS + for component, axis in enumerate(axes.flat): + for model, values in zip(MODELS, profiles): + label, _, _, color, linestyle = model + axis.plot(values[:, component], elevations, color=color, + linestyle=linestyle, lw=2, label=label) + style_axis(axis, labels[component]) + if limits is not None: + axis.set_xlim(limits) + for interface in (20.0, 28.0): + axis.axhline(interface, color="0.6", ls=":", lw=0.8) + axes.flat[0].legend(loc="best") + figure.suptitle(f"Final 2D gravity {quantity.replace('_', ' ')}: SSPquadUP vs Tri31UP") + output = FIGURES / f"gravity_{quantity}_comparison_2D.png" + figure.savefig(output, dpi=220) + plt.close(figure) + return output + + +def main() -> None: + displacements, pressures, stresses, strains = [], [], [], [] + for label, prefix, elements_per_cell, _, _ in MODELS: + dt, displacement = nodal_profile(f"{prefix}Gdisplacement.out", 2) + pt, pressure = nodal_profile(f"{prefix}GporePressure.out", 1) + st, stress = element_profile(f"{prefix}Gstress.out", 3, elements_per_cell) + et, strain = element_profile(f"{prefix}Gstrain.out", 3, elements_per_cell) + displacements.append(displacement) + pressures.append(pressure) + stresses.append(stress) + strains.append(strain) + print(f"{label}: final displacement/pressure/stress/strain times = {dt:g}/{pt:g}/{st:g}/{et:g}") + outputs = [ + plot_profiles(displacements, "displacement", ("$u_x$ [m]", "$u_y$ [m]"), True), + plot_profiles(pressures, "pore_pressure", ("$p$ [kPa]",), True), + plot_profiles(stresses, "stress", + (r"$\sigma_{xx}$ [kPa]", r"$\sigma_{yy}$ [kPa]", r"$\tau_{xy}$ [kPa]"), False), + plot_profiles(strains, "strain", + (r"$\epsilon_{xx}$", r"$\epsilon_{yy}$", r"$\gamma_{xy}$"), False), + ] + for quantity, profiles, units in ( + ("displacement", displacements, "m"), ("pore pressure", pressures, "kPa"), + ("stress", stresses, "kPa"), ("strain", strains, ""), + ): + difference = np.max(np.abs(profiles[1] - profiles[0])) + print(f"Maximum {quantity} difference (Tri31UP vs SSPquadUP): {difference:.6e} {units}".rstrip()) + for output in outputs: + print(f"Wrote {output}") + + +if __name__ == "__main__": + main() diff --git a/source/user/examples/UWExamples/freeField2D_UPcomparison/yerbaNSvelocity.out b/source/user/examples/UWExamples/freeField2D_UPcomparison/yerbaNSvelocity.out new file mode 100644 index 00000000..e1209541 --- /dev/null +++ b/source/user/examples/UWExamples/freeField2D_UPcomparison/yerbaNSvelocity.out @@ -0,0 +1,7990 @@ + 0.0000000e+000 + 1.8137186e-004 + 3.3846731e-004 + 3.9773823e-004 + 4.0427321e-004 + 4.1893860e-004 + 4.3290092e-004 + 4.4634178e-004 + 4.5955975e-004 + 4.7288561e-004 + 4.8651841e-004 + 5.0042410e-004 + 5.1444317e-004 + 5.2842765e-004 + 5.4219855e-004 + 5.5544798e-004 + 5.6773722e-004 + 5.7855714e-004 + 5.8744073e-004 + 5.9406527e-004 + 5.9822460e-004 + 5.9975349e-004 + 5.9846687e-004 + 5.9412775e-004 + 5.8648789e-004 + 5.7533077e-004 + 5.6046020e-004 + 5.4168399e-004 + 5.1889214e-004 + 4.9224917e-004 + 4.6237268e-004 + 4.3032064e-004 + 3.9743256e-004 + 3.6529284e-004 + 3.3573002e-004 + 3.1060572e-004 + 2.9172837e-004 + 2.8102185e-004 + 2.8042493e-004 + 2.9152843e-004 + 3.1531488e-004 + 3.5194687e-004 + 4.0048356e-004 + 4.5881284e-004 + 5.2416290e-004 + 5.9392078e-004 + 6.6605972e-004 + 7.3886347e-004 + 8.1026535e-004 + 8.7740156e-004 + 9.3707354e-004 + 9.8688952e-004 + 1.0262114e-003 + 1.0566294e-003 + 1.0817627e-003 + 1.1065751e-003 + 1.1362734e-003 + 1.1747307e-003 + 1.2237114e-003 + 1.2833193e-003 + 1.3525567e-003 + 1.4298988e-003 + 1.5138166e-003 + 1.6025511e-003 + 1.6937662e-003 + 1.7846587e-003 + 1.8717934e-003 + 1.9506623e-003 + 2.0158488e-003 + 2.0621142e-003 + 2.0854700e-003 + 2.0834804e-003 + 2.0558888e-003 + 2.0055761e-003 + 1.9387745e-003 + 1.8646828e-003 + 1.7938351e-003 + 1.7347754e-003 + 1.6913764e-003 + 1.6638837e-003 + 1.6522186e-003 + 1.6581472e-003 + 1.6860951e-003 + 1.7419614e-003 + 1.8299320e-003 + 1.9496684e-003 + 2.0954082e-003 + 2.2573127e-003 + 2.4249866e-003 + 2.5914926e-003 + 2.7544215e-003 + 2.9131314e-003 + 3.0646812e-003 + 3.2013767e-003 + 3.3118229e-003 + 3.3851344e-003 + 3.4148870e-003 + 3.3988174e-003 + 3.3350554e-003 + 3.2195411e-003 + 3.0467849e-003 + 2.8131572e-003 + 2.5211037e-003 + 2.1811961e-003 + 1.8100149e-003 + 1.4250870e-003 + 1.0395707e-003 + 6.6004457e-004 + 2.8796733e-004 + -7.7669249e-005 + -4.3705390e-004 + -7.8676907e-004 + -1.1197654e-003 + -1.4269331e-003 + -1.6994561e-003 + -1.9326191e-003 + -2.1291742e-003 + -2.2994126e-003 + -2.4578669e-003 + -2.6184523e-003 + -2.7888360e-003 + -2.9662035e-003 + -3.1378938e-003 + -3.2871688e-003 + -3.4017515e-003 + -3.4811500e-003 + -3.5379640e-003 + -3.5918640e-003 + -3.6603436e-003 + -3.7525674e-003 + -3.8681682e-003 + -3.9983428e-003 + -4.1293058e-003 + -4.2485512e-003 + -4.3497805e-003 + -4.4322014e-003 + -4.4967291e-003 + -4.5453266e-003 + -4.5825774e-003 + -4.6142941e-003 + -4.6436062e-003 + -4.6683754e-003 + -4.6815172e-003 + -4.6743643e-003 + -4.6418349e-003 + -4.5849002e-003 + -4.5086195e-003 + -4.4197279e-003 + -4.3256732e-003 + -4.2337185e-003 + -4.1494785e-003 + -4.0757940e-003 + -4.0138124e-003 + -3.9651660e-003 + -3.9310193e-003 + -3.9090777e-003 + -3.8946352e-003 + -3.8847687e-003 + -3.8798709e-003 + -3.8805459e-003 + -3.8806353e-003 + -3.8623728e-003 + -3.8009127e-003 + -3.6753643e-003 + -3.4785454e-003 + -3.2214458e-003 + -2.9302675e-003 + -2.6365033e-003 + -2.3633080e-003 + -2.1150655e-003 + -1.8806374e-003 + -1.6480423e-003 + -1.4137689e-003 + -1.1775959e-003 + -9.2935252e-004 + -6.4063522e-004 + -2.6962388e-004 + 2.2343504e-004 + 8.6048212e-004 + 1.6389397e-003 + 2.5341521e-003 + 3.5075536e-003 + 4.5177151e-003 + 5.5310833e-003 + 6.5294721e-003 + 7.5080033e-003 + 8.4637575e-003 + 9.3876264e-003 + 1.0264695e-002 + 1.1076723e-002 + 1.1804801e-002 + 1.2434216e-002 + 1.2958900e-002 + 1.3383868e-002 + 1.3725874e-002 + 1.4011029e-002 + 1.4269067e-002 + 1.4522616e-002 + 1.4774520e-002 + 1.5003749e-002 + 1.5173260e-002 + 1.5241579e-002 + 1.5171936e-002 + 1.4942142e-002 + 1.4553483e-002 + 1.4028940e-002 + 1.3397699e-002 + 1.2674314e-002 + 1.1846458e-002 + 1.0876741e-002 + 9.7174021e-003 + 8.3361716e-003 + 6.7427633e-003 + 5.0013507e-003 + 3.2202757e-003 + 1.5216966e-003 + 8.2728424e-006 + -1.2512244e-003 + -2.2144633e-003 + -2.8530457e-003 + -3.1462249e-003 + -3.0820385e-003 + -2.6616827e-003 + -1.9072092e-003 + -8.7300407e-004 + 3.5141133e-004 + 1.6498348e-003 + 2.8917852e-003 + 3.9538205e-003 + 4.7492673e-003 + 5.2478181e-003 + 5.4703706e-003 + 5.4681646e-003 + 5.3014747e-003 + 5.0223090e-003 + 4.6640901e-003 + 4.2406899e-003 + 3.7565694e-003 + 3.2212041e-003 + 2.6539178e-003 + 2.0790601e-003 + 1.5240600e-003 + 1.0220933e-003 + 6.0609618e-004 + 2.9610855e-004 + 9.0633356e-005 + -3.7937691e-005 + -1.3772335e-004 + -2.5723718e-004 + -4.2123372e-004 + -6.2112723e-004 + -8.2689810e-004 + -1.0076669e-003 + -1.1502686e-003 + -1.2661903e-003 + -1.3826203e-003 + -1.5284419e-003 + -1.7214542e-003 + -1.9582470e-003 + -2.2123570e-003 + -2.4452359e-003 + -2.6225026e-003 + -2.7193859e-003 + -2.7163004e-003 + -2.5973788e-003 + -2.3553694e-003 + -1.9985509e-003 + -1.5505817e-003 + -1.0408448e-003 + -4.9646292e-004 + 5.3873316e-005 + 5.7205896e-004 + 1.0139412e-003 + 1.3427756e-003 + 1.5414404e-003 + 1.6149959e-003 + 1.5867800e-003 + 1.4964632e-003 + 1.3941386e-003 + 1.3230870e-003 + 1.3020099e-003 + 1.3249774e-003 + 1.3841549e-003 + 1.4968782e-003 + 1.7071084e-003 + 2.0574142e-003 + 2.5584050e-003 + 3.1788352e-003 + 3.8638591e-003 + 4.5620499e-003 + 5.2300404e-003 + 5.8237966e-003 + 6.3041885e-003 + 6.6490704e-003 + 6.8570059e-003 + 6.9548551e-003 + 7.0092233e-003 + 7.1152433e-003 + 7.3586375e-003 + 7.7784987e-003 + 8.3540960e-003 + 9.0201022e-003 + 9.7022594e-003 + 1.0351851e-002 + 1.0955743e-002 + 1.1526447e-002 + 1.2087046e-002 + 1.2654606e-002 + 1.3233245e-002 + 1.3823097e-002 + 1.4432156e-002 + 1.5082209e-002 + 1.5809602e-002 + 1.6655078e-002 + 1.7637292e-002 + 1.8729838e-002 + 1.9862017e-002 + 2.0940821e-002 + 2.1885747e-002 + 2.2658822e-002 + 2.3272660e-002 + 2.3776332e-002 + 2.4231193e-002 + 2.4689248e-002 + 2.5183096e-002 + 2.5734884e-002 + 2.6375213e-002 + 2.7147418e-002 + 2.8089715e-002 + 2.9210767e-002 + 3.0470735e-002 + 3.1775249e-002 + 3.2991270e-002 + 3.3987709e-002 + 3.4684080e-002 + 3.5073241e-002 + 3.5208925e-002 + 3.5172442e-002 + 3.5029844e-002 + 3.4799603e-002 + 3.4451700e-002 + 3.3941280e-002 + 3.3254103e-002 + 3.2432716e-002 + 3.1569031e-002 + 3.0763614e-002 + 3.0078662e-002 + 2.9517648e-002 + 2.9036856e-002 + 2.8577951e-002 + 2.8097722e-002 + 2.7573892e-002 + 2.6991092e-002 + 2.6322993e-002 + 2.5525854e-002 + 2.4553551e-002 + 2.3383256e-002 + 2.2029678e-002 + 2.0536474e-002 + 1.8953621e-002 + 1.7319694e-002 + 1.5654335e-002 + 1.3963040e-002 + 1.2254493e-002 + 1.0562022e-002 + 8.9553325e-003 + 7.5262204e-003 + 6.3511403e-003 + 5.4574344e-003 + 4.8224276e-003 + 4.3979913e-003 + 4.1282408e-003 + 3.9566899e-003 + 3.8340035e-003 + 3.7245492e-003 + 3.6025268e-003 + 3.4353026e-003 + 3.1718306e-003 + 2.7533967e-003 + 2.1377120e-003 + 1.3140677e-003 + 3.0194411e-004 + -8.5912738e-004 + -2.1224622e-003 + -3.4447559e-003 + -4.7888250e-003 + -6.1141928e-003 + -7.3581087e-003 + -8.4202919e-003 + -9.1706405e-003 + -9.4881461e-003 + -9.3098519e-003 + -8.6587401e-003 + -7.6317391e-003 + -6.3531188e-003 + -4.9121048e-003 + -3.3244604e-003 + -1.5577885e-003 + 4.1379767e-004 + 2.5743342e-003 + 4.8469174e-003 + 7.0961915e-003 + 9.1738785e-003 + 1.0982556e-002 + 1.2498737e-002 + 1.3747569e-002 + 1.4770583e-002 + 1.5605485e-002 + 1.6272033e-002 + 1.6760411e-002 + 1.7031712e-002 + 1.7028880e-002 + 1.6692332e-002 + 1.5991001e-002 + 1.4950311e-002 + 1.3655571e-002 + 1.2227703e-002 + 1.0776382e-002 + 9.3640534e-003 + 8.0042023e-003 + 6.6849929e-003 + 5.4014146e-003 + 4.1766285e-003 + 3.0553164e-003 + 2.0746598e-003 + 1.2419718e-003 + 5.3451785e-004 + -9.3269509e-005 + -7.0867883e-004 + -1.4052884e-003 + -2.3000825e-003 + -3.5058085e-003 + -5.0927659e-003 + -7.0693900e-003 + -9.3881359e-003 + -1.1970758e-002 + -1.4737140e-002 + -1.7620775e-002 + -2.0563550e-002 + -2.3483671e-002 + -2.6249106e-002 + -2.8685287e-002 + -3.0592148e-002 + -3.1774990e-002 + -3.2103830e-002 + -3.1568058e-002 + -3.0293228e-002 + -2.8498366e-002 + -2.6412238e-002 + -2.4211228e-002 + -2.2004915e-002 + -1.9851170e-002 + -1.7776167e-002 + -1.5794740e-002 + -1.3937870e-002 + -1.2276467e-002 + -1.0912651e-002 + -9.9327581e-003 + -9.3622923e-003 + -9.1507148e-003 + -9.1895944e-003 + -9.3609396e-003 + -9.5864736e-003 + -9.8387737e-003 + -1.0113617e-002 + -1.0396427e-002 + -1.0650022e-002 + -1.0836175e-002 + -1.0948250e-002 + -1.1017614e-002 + -1.1089426e-002 + -1.1184658e-002 + -1.1267833e-002 + -1.1242246e-002 + -1.0978829e-002 + -1.0365598e-002 + -9.3543023e-003 + -7.9750187e-003 + -6.3191795e-003 + -4.5145625e-003 + -2.6973328e-003 + -9.8765252e-004 + 5.1866410e-004 + 1.7567855e-003 + 2.7016800e-003 + 3.3628660e-003 + 3.7745764e-003 + 3.9927170e-003 + 4.0896339e-003 + 4.1383619e-003 + 4.1861050e-003 + 4.2322630e-003 + 4.2381538e-003 + 4.1565607e-003 + 3.9515237e-003 + 3.6180146e-003 + 3.1962195e-003 + 2.7621177e-003 + 2.3887204e-003 + 2.0849995e-003 + 1.7657574e-003 + 1.2757165e-003 + 4.3835780e-004 + -8.8686716e-004 + -2.7551274e-003 + -5.1184596e-003 + -7.8475015e-003 + -1.0776558e-002 + -1.3753745e-002 + -1.6675675e-002 + -1.9484790e-002 + -2.2149376e-002 + -2.4654449e-002 + -2.7001994e-002 + -2.9210949e-002 + -3.1300355e-002 + -3.3259872e-002 + -3.5036669e-002 + -3.6563719e-002 + -3.7813737e-002 + -3.8830841e-002 + -3.9722405e-002 + -4.0621026e-002 + -4.1634646e-002 + -4.2807247e-002 + -4.4107753e-002 + -4.5449867e-002 + -4.6731024e-002 + -4.7871414e-002 + -4.8830994e-002 + -4.9603583e-002 + -5.0200541e-002 + -5.0631127e-002 + -5.0897038e-002 + -5.1010779e-002 + -5.1013134e-002 + -5.0965355e-002 + -5.0926959e-002 + -5.0938255e-002 + -5.1018831e-002 + -5.1177865e-002 + -5.1419562e-002 + -5.1744262e-002 + -5.2149192e-002 + -5.2627108e-002 + -5.3162018e-002 + -5.3728770e-002 + -5.4301421e-002 + -5.4860245e-002 + -5.5389084e-002 + -5.5857992e-002 + -5.6208773e-002 + -5.6378449e-002 + -5.6352557e-002 + -5.6197531e-002 + -5.6044458e-002 + -5.6030801e-002 + -5.6229056e-002 + -5.6607392e-002 + -5.7042813e-002 + -5.7392206e-002 + -5.7583050e-002 + -5.7646100e-002 + -5.7690559e-002 + -5.7861077e-002 + -5.8282166e-002 + -5.9011210e-002 + -6.0023012e-002 + -6.1224667e-002 + -6.2495278e-002 + -6.3745838e-002 + -6.4971726e-002 + -6.6247316e-002 + -6.7663933e-002 + -6.9260866e-002 + -7.0993187e-002 + -7.2753682e-002 + -7.4420415e-002 + -7.5900777e-002 + -7.7156868e-002 + -7.8200695e-002 + -7.9062382e-002 + -7.9750980e-002 + -8.0243319e-002 + -8.0505413e-002 + -8.0524860e-002 + -8.0339374e-002 + -8.0042213e-002 + -7.9755987e-002 + -7.9592683e-002 + -7.9628291e-002 + -7.9900134e-002 + -8.0413247e-002 + -8.1154987e-002 + -8.2113301e-002 + -8.3274845e-002 + -8.4601600e-002 + -8.6011943e-002 + -8.7394428e-002 + -8.8643559e-002 + -8.9683847e-002 + -9.0486097e-002 + -9.1073016e-002 + -9.1497544e-002 + -9.1812119e-002 + -9.2047640e-002 + -9.2208420e-002 + -9.2280771e-002 + -9.2243759e-002 + -9.2082962e-002 + -9.1808364e-002 + -9.1464102e-002 + -9.1117419e-002 + -9.0832811e-002 + -9.0654787e-002 + -9.0606669e-002 + -9.0692423e-002 + -9.0895731e-002 + -9.1184436e-002 + -9.1523120e-002 + -9.1881801e-002 + -9.2239519e-002 + -9.2577633e-002 + -9.2864405e-002 + -9.3053423e-002 + -9.3097570e-002 + -9.2965954e-002 + -9.2654594e-002 + -9.2185944e-002 + -9.1589625e-002 + -9.0871213e-002 + -9.0000806e-002 + -8.8935202e-002 + -8.7653337e-002 + -8.6186054e-002 + -8.4626830e-002 + -8.3107515e-002 + -8.1746162e-002 + -8.0599446e-002 + -7.9655337e-002 + -7.8857906e-002 + -7.8137632e-002 + -7.7445634e-002 + -7.6778850e-002 + -7.6180695e-002 + -7.5716189e-002 + -7.5442070e-002 + -7.5397550e-002 + -7.5614961e-002 + -7.6136695e-002 + -7.7014510e-002 + -7.8284396e-002 + -7.9926465e-002 + -8.1829735e-002 + -8.3814392e-002 + -8.5706427e-002 + -8.7395945e-002 + -8.8851649e-002 + -9.0096822e-002 + -9.1155470e-002 + -9.2010553e-002 + -9.2613108e-002 + -9.2910773e-002 + -9.2867636e-002 + -9.2494319e-002 + -9.1882101e-002 + -9.1198977e-002 + -9.0630832e-002 + -9.0302347e-002 + -9.0221388e-002 + -9.0283795e-002 + -9.0342791e-002 + -9.0284208e-002 + -9.0059227e-002 + -8.9679497e-002 + -8.9181988e-002 + -8.8583112e-002 + -8.7860040e-002 + -8.6963851e-002 + -8.5844795e-002 + -8.4468239e-002 + -8.2823424e-002 + -8.0928488e-002 + -7.8819705e-002 + -7.6541576e-002 + -7.4144522e-002 + -7.1685205e-002 + -6.9226095e-002 + -6.6836925e-002 + -6.4598594e-002 + -6.2586237e-002 + -6.0847572e-002 + -5.9404247e-002 + -5.8259219e-002 + -5.7396907e-002 + -5.6782491e-002 + -5.6352801e-002 + -5.6018650e-002 + -5.5699733e-002 + -5.5363549e-002 + -5.5040103e-002 + -5.4795062e-002 + -5.4668350e-002 + -5.4614759e-002 + -5.4499370e-002 + -5.4139416e-002 + -5.3371789e-002 + -5.2135849e-002 + -5.0499918e-002 + -4.8634074e-002 + -4.6757870e-002 + -4.5075634e-002 + -4.3723021e-002 + -4.2732046e-002 + -4.2048562e-002 + -4.1586372e-002 + -4.1273585e-002 + -4.1074497e-002 + -4.0982824e-002 + -4.1004283e-002 + -4.1148156e-002 + -4.1419141e-002 + -4.1793310e-002 + -4.2199886e-002 + -4.2533662e-002 + -4.2681422e-002 + -4.2541713e-002 + -4.2040963e-002 + -4.1152987e-002 + -3.9914580e-002 + -3.8411681e-002 + -3.6752320e-002 + -3.5031539e-002 + -3.3281278e-002 + -3.1467648e-002 + -2.9544569e-002 + -2.7498386e-002 + -2.5365627e-002 + -2.3228425e-002 + -2.1180668e-002 + -1.9298748e-002 + -1.7618051e-002 + -1.6107489e-002 + -1.4680272e-002 + -1.3222820e-002 + -1.1620613e-002 + -9.7997989e-003 + -7.7619171e-003 + -5.5653228e-003 + -3.2727816e-003 + -9.3640902e-004 + 1.4021706e-003 + 3.7242506e-003 + 6.0042029e-003 + 8.1997550e-003 + 1.0279649e-002 + 1.2222393e-002 + 1.4022042e-002 + 1.5687168e-002 + 1.7215721e-002 + 1.8587365e-002 + 1.9771591e-002 + 2.0741332e-002 + 2.1487432e-002 + 2.2008846e-002 + 2.2305365e-002 + 2.2376141e-002 + 2.2198779e-002 + 2.1758418e-002 + 2.1091791e-002 + 2.0248158e-002 + 1.9261916e-002 + 1.8166083e-002 + 1.6970038e-002 + 1.5698965e-002 + 1.4449095e-002 + 1.3323697e-002 + 1.2408978e-002 + 1.1790856e-002 + 1.1478423e-002 + 1.1388556e-002 + 1.1400782e-002 + 1.1386538e-002 + 1.1274545e-002 + 1.1072418e-002 + 1.0827054e-002 + 1.0616667e-002 + 1.0540479e-002 + 1.0695138e-002 + 1.1155543e-002 + 1.1940172e-002 + 1.2994823e-002 + 1.4217246e-002 + 1.5501358e-002 + 1.6772174e-002 + 1.7992155e-002 + 1.9167861e-002 + 2.0333010e-002 + 2.1504801e-002 + 2.2663736e-002 + 2.3772411e-002 + 2.4790579e-002 + 2.5679028e-002 + 2.6441041e-002 + 2.7123756e-002 + 2.7789454e-002 + 2.8513647e-002 + 2.9355308e-002 + 3.0324384e-002 + 3.1377061e-002 + 3.2435235e-002 + 3.3421232e-002 + 3.4295175e-002 + 3.5065427e-002 + 3.5764759e-002 + 3.6432326e-002 + 3.7082817e-002 + 3.7694005e-002 + 3.8235513e-002 + 3.8696034e-002 + 3.9111691e-002 + 3.9555032e-002 + 4.0086011e-002 + 4.0715461e-002 + 4.1387989e-002 + 4.2004560e-002 + 4.2487606e-002 + 4.2808476e-002 + 4.2976140e-002 + 4.3053012e-002 + 4.3139118e-002 + 4.3331401e-002 + 4.3710363e-002 + 4.4330328e-002 + 4.5207760e-002 + 4.6318179e-002 + 4.7596525e-002 + 4.8933429e-002 + 5.0196069e-002 + 5.1266078e-002 + 5.2064829e-002 + 5.2564126e-002 + 5.2796296e-002 + 5.2859290e-002 + 5.2874841e-002 + 5.2938570e-002 + 5.3111950e-002 + 5.3420513e-002 + 5.3843289e-002 + 5.4315056e-002 + 5.4743054e-002 + 5.5040243e-002 + 5.5167274e-002 + 5.5151266e-002 + 5.5073724e-002 + 5.5032693e-002 + 5.5103892e-002 + 5.5329229e-002 + 5.5714591e-002 + 5.6245203e-002 + 5.6913154e-002 + 5.7710640e-002 + 5.8614627e-002 + 5.9583965e-002 + 6.0557698e-002 + 6.1461667e-002 + 6.2214601e-002 + 6.2751883e-002 + 6.3042815e-002 + 6.3067706e-002 + 6.2799611e-002 + 6.2206058e-002 + 6.1271451e-002 + 6.0031898e-002 + 5.8600809e-002 + 5.7151695e-002 + 5.5856589e-002 + 5.4828678e-002 + 5.4106875e-002 + 5.3684515e-002 + 5.3521397e-002 + 5.3564031e-002 + 5.3782172e-002 + 5.4145136e-002 + 5.4589534e-002 + 5.5027263e-002 + 5.5361518e-002 + 5.5503228e-002 + 5.5399707e-002 + 5.5060859e-002 + 5.4553866e-002 + 5.3966292e-002 + 5.3381286e-002 + 5.2877277e-002 + 5.2517032e-002 + 5.2359235e-002 + 5.2477367e-002 + 5.2928453e-002 + 5.3716245e-002 + 5.4771081e-002 + 5.5948178e-002 + 5.7069269e-002 + 5.7992147e-002 + 5.8653795e-002 + 5.9072884e-002 + 5.9334318e-002 + 5.9538968e-002 + 5.9746783e-002 + 5.9946766e-002 + 6.0050471e-002 + 5.9947373e-002 + 5.9591867e-002 + 5.9032318e-002 + 5.8365957e-002 + 5.7701214e-002 + 5.7155252e-002 + 5.6813302e-002 + 5.6705317e-002 + 5.6818426e-002 + 5.7095338e-002 + 5.7454870e-002 + 5.7807919e-002 + 5.8064987e-002 + 5.8175843e-002 + 5.8163287e-002 + 5.8099301e-002 + 5.8066463e-002 + 5.8134171e-002 + 5.8335115e-002 + 5.8652589e-002 + 5.9020963e-002 + 5.9351684e-002 + 5.9562613e-002 + 5.9588242e-002 + 5.9385406e-002 + 5.8945838e-002 + 5.8315162e-002 + 5.7589683e-002 + 5.6891127e-002 + 5.6340194e-002 + 5.6012178e-002 + 5.5911354e-002 + 5.6001088e-002 + 5.6241185e-002 + 5.6602951e-002 + 5.7062008e-002 + 5.7587440e-002 + 5.8132489e-002 + 5.8633418e-002 + 5.9033119e-002 + 5.9303600e-002 + 5.9452854e-002 + 5.9519213e-002 + 5.9560699e-002 + 5.9638383e-002 + 5.9793982e-002 + 6.0029290e-002 + 6.0297165e-002 + 6.0524638e-002 + 6.0654717e-002 + 6.0671078e-002 + 6.0593930e-002 + 6.0476415e-002 + 6.0370303e-002 + 6.0272641e-002 + 6.0134847e-002 + 5.9890260e-002 + 5.9499766e-002 + 5.9000206e-002 + 5.8480374e-002 + 5.8015169e-002 + 5.7615707e-002 + 5.7224283e-002 + 5.6736765e-002 + 5.6059555e-002 + 5.5176437e-002 + 5.4159874e-002 + 5.3144850e-002 + 5.2262211e-002 + 5.1555645e-002 + 5.0972036e-002 + 5.0402791e-002 + 4.9731646e-002 + 4.8889901e-002 + 4.7880025e-002 + 4.6754081e-002 + 4.5585340e-002 + 4.4445695e-002 + 4.3366327e-002 + 4.2315789e-002 + 4.1224296e-002 + 4.0022394e-002 + 3.8674335e-002 + 3.7188510e-002 + 3.5612531e-002 + 3.4027418e-002 + 3.2530302e-002 + 3.1208787e-002 + 3.0109900e-002 + 2.9212229e-002 + 2.8442737e-002 + 2.7727744e-002 + 2.7014793e-002 + 2.6285274e-002 + 2.5574474e-002 + 2.4942851e-002 + 2.4439713e-002 + 2.4109370e-002 + 2.3979703e-002 + 2.4052455e-002 + 2.4325125e-002 + 2.4791505e-002 + 2.5434983e-002 + 2.6217240e-002 + 2.7058807e-002 + 2.7857080e-002 + 2.8522506e-002 + 2.9014582e-002 + 2.9350169e-002 + 2.9568181e-002 + 2.9718565e-002 + 2.9840799e-002 + 2.9930229e-002 + 2.9966437e-002 + 2.9932545e-002 + 2.9820828e-002 + 2.9645107e-002 + 2.9419335e-002 + 2.9152385e-002 + 2.8863404e-002 + 2.8587081e-002 + 2.8363509e-002 + 2.8219257e-002 + 2.8157736e-002 + 2.8149912e-002 + 2.8148750e-002 + 2.8103945e-002 + 2.7961835e-002 + 2.7683370e-002 + 2.7251788e-002 + 2.6674726e-002 + 2.5988974e-002 + 2.5245831e-002 + 2.4480549e-002 + 2.3707464e-002 + 2.2937362e-002 + 2.2177155e-002 + 2.1425572e-002 + 2.0663644e-002 + 1.9855556e-002 + 1.8976828e-002 + 1.8023471e-002 + 1.6999085e-002 + 1.5905856e-002 + 1.4732371e-002 + 1.3461797e-002 + 1.2090026e-002 + 1.0633363e-002 + 9.1395180e-003 + 7.6761777e-003 + 6.3022975e-003 + 5.0563685e-003 + 3.9597954e-003 + 3.0286238e-003 + 2.2798802e-003 + 1.7154198e-003 + 1.3123408e-003 + 1.0289798e-003 + 8.0314184e-004 + 5.6508589e-004 + 2.6862246e-004 + -9.8475343e-005 + -5.1621189e-004 + -9.2907033e-004 + -1.2558897e-003 + -1.4108924e-003 + -1.3316518e-003 + -1.0203400e-003 + -5.6715260e-004 + -1.1336673e-004 + 2.1501673e-004 + 3.5281978e-004 + 3.1030413e-004 + 1.4569090e-004 + -7.4210486e-005 + -2.8503255e-004 + -4.3447180e-004 + -4.9329902e-004 + -4.3573770e-004 + -2.2043744e-004 + 1.9374331e-004 + 8.2931965e-004 + 1.6886017e-003 + 2.7563262e-003 + 4.0001299e-003 + 5.3687970e-003 + 6.7967732e-003 + 8.2015458e-003 + 9.4779183e-003 + 1.0514104e-002 + 1.1218904e-002 + 1.1550787e-002 + 1.1541377e-002 + 1.1294468e-002 + 1.0956356e-002 + 1.0670749e-002 + 1.0536445e-002 + 1.0582623e-002 + 1.0778639e-002 + 1.1072972e-002 + 1.1415705e-002 + 1.1760449e-002 + 1.2088753e-002 + 1.2423793e-002 + 1.2806601e-002 + 1.3280392e-002 + 1.3864015e-002 + 1.4528003e-002 + 1.5209272e-002 + 1.5821154e-002 + 1.6273515e-002 + 1.6499516e-002 + 1.6463219e-002 + 1.6162569e-002 + 1.5621149e-002 + 1.4883529e-002 + 1.4001697e-002 + 1.3017021e-002 + 1.1968296e-002 + 1.0903707e-002 + 9.8933479e-003 + 9.0243589e-003 + 8.3732862e-003 + 7.9837279e-003 + 7.8484874e-003 + 7.9137122e-003 + 8.1004156e-003 + 8.3204020e-003 + 8.4889753e-003 + 8.5294614e-003 + 8.3733570e-003 + 7.9804361e-003 + 7.3599123e-003 + 6.5544968e-003 + 5.6250492e-003 + 4.6514063e-003 + 3.7113933e-003 + 2.8592319e-003 + 2.1312488e-003 + 1.5611230e-003 + 1.1945918e-003 + 1.0829104e-003 + 1.2568555e-003 + 1.7204515e-003 + 2.4482679e-003 + 3.3827381e-003 + 4.4637315e-003 + 5.6647256e-003 + 7.0060607e-003 + 8.5386636e-003 + 1.0290941e-002 + 1.2235032e-002 + 1.4300013e-002 + 1.6379002e-002 + 1.8333739e-002 + 2.0022094e-002 + 2.1339952e-002 + 2.2246377e-002 + 2.2756355e-002 + 2.2926475e-002 + 2.2842254e-002 + 2.2608273e-002 + 2.2332309e-002 + 2.2112122e-002 + 2.2046198e-002 + 2.2226187e-002 + 2.2704022e-002 + 2.3480735e-002 + 2.4504130e-002 + 2.5663934e-002 + 2.6812602e-002 + 2.7808663e-002 + 2.8565371e-002 + 2.9083786e-002 + 2.9443282e-002 + 2.9740606e-002 + 3.0016895e-002 + 3.0231335e-002 + 3.0284915e-002 + 3.0083822e-002 + 2.9598304e-002 + 2.8863417e-002 + 2.7952693e-002 + 2.6954447e-002 + 2.5948838e-002 + 2.5003385e-002 + 2.4180880e-002 + 2.3528532e-002 + 2.3067434e-002 + 2.2799416e-002 + 2.2717391e-002 + 2.2815979e-002 + 2.3094489e-002 + 2.3554263e-002 + 2.4183304e-002 + 2.4948843e-002 + 2.5817284e-002 + 2.6757206e-002 + 2.7720018e-002 + 2.8614222e-002 + 2.9294849e-002 + 2.9612853e-002 + 2.9496521e-002 + 2.8988631e-002 + 2.8222806e-002 + 2.7366984e-002 + 2.6562290e-002 + 2.5892903e-002 + 2.5400805e-002 + 2.5109824e-002 + 2.5027546e-002 + 2.5145464e-002 + 2.5450272e-002 + 2.5926665e-002 + 2.6551006e-002 + 2.7290566e-002 + 2.8114700e-002 + 2.9011324e-002 + 2.9988146e-002 + 3.1054403e-002 + 3.2207196e-002 + 3.3430758e-002 + 3.4693493e-002 + 3.5957843e-002 + 3.7207550e-002 + 3.8447079e-002 + 3.9678317e-002 + 4.0885065e-002 + 4.2036770e-002 + 4.3116966e-002 + 4.4141740e-002 + 4.5156505e-002 + 4.6214025e-002 + 4.7338018e-002 + 4.8508764e-002 + 4.9676814e-002 + 5.0796871e-002 + 5.1863575e-002 + 5.2905663e-002 + 5.3954671e-002 + 5.5024447e-002 + 5.6103049e-002 + 5.7153427e-002 + 5.8108754e-002 + 5.8883988e-002 + 5.9414290e-002 + 5.9684940e-002 + 5.9749825e-002 + 5.9709868e-002 + 5.9650544e-002 + 5.9616941e-002 + 5.9621456e-002 + 5.9661890e-002 + 5.9753010e-002 + 5.9934563e-002 + 6.0259935e-002 + 6.0775477e-002 + 6.1491685e-002 + 6.2364939e-002 + 6.3291865e-002 + 6.4130691e-002 + 6.4751118e-002 + 6.5077736e-002 + 6.5106453e-002 + 6.4904432e-002 + 6.4589759e-002 + 6.4274603e-002 + 6.4012223e-002 + 6.3795638e-002 + 6.3586570e-002 + 6.3341501e-002 + 6.3040155e-002 + 6.2701986e-002 + 6.2374066e-002 + 6.2112485e-002 + 6.1957097e-002 + 6.1907155e-002 + 6.1930194e-002 + 6.1995744e-002 + 6.2101832e-002 + 6.2284263e-002 + 6.2602143e-002 + 6.3092422e-002 + 6.3726965e-002 + 6.4407901e-002 + 6.4997725e-002 + 6.5373493e-002 + 6.5480677e-002 + 6.5355649e-002 + 6.5102049e-002 + 6.4832592e-002 + 6.4612500e-002 + 6.4430796e-002 + 6.4213839e-002 + 6.3869376e-002 + 6.3326747e-002 + 6.2563197e-002 + 6.1617867e-002 + 6.0583139e-002 + 5.9579084e-002 + 5.8721996e-002 + 5.8094616e-002 + 5.7729470e-002 + 5.7614390e-002 + 5.7724999e-002 + 5.8044132e-002 + 5.8549892e-002 + 5.9198646e-002 + 5.9912639e-002 + 6.0588332e-002 + 6.1132945e-002 + 6.1497296e-002 + 6.1681260e-002 + 6.1726366e-002 + 6.1689277e-002 + 6.1611070e-002 + 6.1508641e-002 + 6.1377103e-002 + 6.1204375e-002 + 6.0985044e-002 + 6.0724696e-002 + 6.0439342e-002 + 6.0159545e-002 + 5.9930312e-002 + 5.9783818e-002 + 5.9727477e-002 + 5.9754640e-002 + 5.9851063e-002 + 6.0012072e-002 + 6.0250996e-002 + 6.0594652e-002 + 6.1078917e-002 + 6.1738428e-002 + 6.2602031e-002 + 6.3690480e-002 + 6.5010130e-002 + 6.6541524e-002 + 6.8226994e-002 + 6.9981339e-002 + 7.1718567e-002 + 7.3367746e-002 + 7.4883382e-002 + 7.6247819e-002 + 7.7456855e-002 + 7.8509629e-002 + 7.9402185e-002 + 8.0120385e-002 + 8.0649090e-002 + 8.0985600e-002 + 8.1142645e-002 + 8.1146682e-002 + 8.1037818e-002 + 8.0877662e-002 + 8.0742308e-002 + 8.0695688e-002 + 8.0778009e-002 + 8.0997621e-002 + 8.1324406e-002 + 8.1707504e-002 + 8.2094241e-002 + 8.2422324e-002 + 8.2605353e-002 + 8.2550223e-002 + 8.2184066e-002 + 8.1484289e-002 + 8.0516983e-002 + 7.9419640e-002 + 7.8337332e-002 + 7.7369126e-002 + 7.6544316e-002 + 7.5841334e-002 + 7.5229070e-002 + 7.4695492e-002 + 7.4256804e-002 + 7.3964225e-002 + 7.3887954e-002 + 7.4080505e-002 + 7.4556200e-002 + 7.5278206e-002 + 7.6168148e-002 + 7.7141078e-002 + 7.8129344e-002 + 7.9090003e-002 + 8.0002065e-002 + 8.0868395e-002 + 8.1718409e-002 + 8.2597430e-002 + 8.3553400e-002 + 8.4619924e-002 + 8.5779230e-002 + 8.6931277e-002 + 8.7921508e-002 + 8.8599351e-002 + 8.8875933e-002 + 8.8772882e-002 + 8.8411075e-002 + 8.7940123e-002 + 8.7460316e-002 + 8.6975143e-002 + 8.6405220e-002 + 8.5654580e-002 + 8.4656199e-002 + 8.3387146e-002 + 8.1884440e-002 + 8.0235848e-002 + 7.8558010e-002 + 7.6961899e-002 + 7.5510916e-002 + 7.4219084e-002 + 7.3071177e-002 + 7.2032544e-002 + 7.1059724e-002 + 7.0119660e-002 + 6.9196758e-002 + 6.8283033e-002 + 6.7382807e-002 + 6.6529115e-002 + 6.5764459e-002 + 6.5107083e-002 + 6.4554948e-002 + 6.4093968e-002 + 6.3694294e-002 + 6.3333561e-002 + 6.2999681e-002 + 6.2666409e-002 + 6.2303940e-002 + 6.1892246e-002 + 6.1424545e-002 + 6.0915140e-002 + 6.0387757e-002 + 5.9849486e-002 + 5.9300964e-002 + 5.8753037e-002 + 5.8210154e-002 + 5.7681924e-002 + 5.7192652e-002 + 5.6761937e-002 + 5.6402789e-002 + 5.6103363e-002 + 5.5809688e-002 + 5.5451080e-002 + 5.4981932e-002 + 5.4392045e-002 + 5.3689541e-002 + 5.2910956e-002 + 5.2119231e-002 + 5.1398154e-002 + 5.0831366e-002 + 5.0442133e-002 + 5.0204340e-002 + 5.0074215e-002 + 5.0003565e-002 + 4.9971281e-002 + 4.9955164e-002 + 4.9920067e-002 + 4.9856574e-002 + 4.9767195e-002 + 4.9654244e-002 + 4.9528537e-002 + 4.9392182e-002 + 4.9219066e-002 + 4.8940215e-002 + 4.8462926e-002 + 4.7739345e-002 + 4.6799155e-002 + 4.5741870e-002 + 4.4715616e-002 + 4.3842599e-002 + 4.3172546e-002 + 4.2700038e-002 + 4.2396642e-002 + 4.2253531e-002 + 4.2281755e-002 + 4.2478419e-002 + 4.2813836e-002 + 4.3215265e-002 + 4.3570865e-002 + 4.3780766e-002 + 4.3789352e-002 + 4.3590811e-002 + 4.3218156e-002 + 4.2711984e-002 + 4.2100863e-002 + 4.1407911e-002 + 4.0652104e-002 + 3.9819867e-002 + 3.8884948e-002 + 3.7863134e-002 + 3.6787391e-002 + 3.5663345e-002 + 3.4465675e-002 + 3.3147702e-002 + 3.1654396e-002 + 2.9930809e-002 + 2.7949859e-002 + 2.5720776e-002 + 2.3284757e-002 + 2.0703887e-002 + 1.8024397e-002 + 1.5276062e-002 + 1.2478602e-002 + 9.6541150e-003 + 6.8428731e-003 + 4.1118656e-003 + 1.5571108e-003 + -7.4087968e-004 + -2.7486002e-003 + -4.4827305e-003 + -6.0060924e-003 + -7.3860884e-003 + -8.6735570e-003 + -9.9234392e-003 + -1.1164329e-002 + -1.2379840e-002 + -1.3561371e-002 + -1.4724102e-002 + -1.5889152e-002 + -1.7095986e-002 + -1.8383361e-002 + -1.9743299e-002 + -2.1139557e-002 + -2.2534949e-002 + -2.3894834e-002 + -2.5212491e-002 + -2.6513074e-002 + -2.7816062e-002 + -2.9111828e-002 + -3.0374009e-002 + -3.1590378e-002 + -3.2747004e-002 + -3.3808238e-002 + -3.4761580e-002 + -3.5618548e-002 + -3.6393321e-002 + -3.7118296e-002 + -3.7836028e-002 + -3.8562972e-002 + -3.9263173e-002 + -3.9856916e-002 + -4.0236378e-002 + -4.0311309e-002 + -4.0048623e-002 + -3.9442679e-002 + -3.8527048e-002 + -3.7396432e-002 + -3.6151469e-002 + -3.4883152e-002 + -3.3683061e-002 + -3.2609948e-002 + -3.1681580e-002 + -3.0892317e-002 + -3.0239927e-002 + -2.9717302e-002 + -2.9270264e-002 + -2.8812330e-002 + -2.8266481e-002 + -2.7587046e-002 + -2.6777922e-002 + -2.5885304e-002 + -2.4973650e-002 + -2.4114965e-002 + -2.3370924e-002 + -2.2784428e-002 + -2.2389745e-002 + -2.2218896e-002 + -2.2275107e-002 + -2.2516326e-002 + -2.2902703e-002 + -2.3409320e-002 + -2.4013351e-002 + -2.4734528e-002 + -2.5605083e-002 + -2.6605461e-002 + -2.7705601e-002 + -2.8890473e-002 + -3.0124968e-002 + -3.1372131e-002 + -3.2633972e-002 + -3.3931878e-002 + -3.5286902e-002 + -3.6706461e-002 + -3.8180236e-002 + -3.9696579e-002 + -4.1205680e-002 + -4.2620274e-002 + -4.3887723e-002 + -4.5014913e-002 + -4.6018605e-002 + -4.6899935e-002 + -4.7680227e-002 + -4.8409531e-002 + -4.9145045e-002 + -4.9934275e-002 + -5.0807139e-002 + -5.1765429e-002 + -5.2784826e-002 + -5.3842539e-002 + -5.4917449e-002 + -5.5977473e-002 + -5.6980840e-002 + -5.7879598e-002 + -5.8637598e-002 + -5.9219309e-002 + -5.9597646e-002 + -5.9794164e-002 + -5.9841678e-002 + -5.9757425e-002 + -5.9567289e-002 + -5.9298526e-002 + -5.8962309e-002 + -5.8541100e-002 + -5.7988693e-002 + -5.7251302e-002 + -5.6283439e-002 + -5.5078866e-002 + -5.3701323e-002 + -5.2262742e-002 + -5.0902012e-002 + -4.9759897e-002 + -4.8936135e-002 + -4.8478642e-002 + -4.8384741e-002 + -4.8609356e-002 + -4.9085523e-002 + -4.9751638e-002 + -5.0548112e-002 + -5.1418937e-002 + -5.2336984e-002 + -5.3293163e-002 + -5.4297493e-002 + -5.5372158e-002 + -5.6507820e-002 + -5.7665833e-002 + -5.8818019e-002 + -5.9925855e-002 + -6.0922025e-002 + -6.1756488e-002 + -6.2406309e-002 + -6.2855627e-002 + -6.3083047e-002 + -6.3044915e-002 + -6.2713565e-002 + -6.2106448e-002 + -6.1231753e-002 + -6.0098675e-002 + -5.8765729e-002 + -5.7314282e-002 + -5.5810322e-002 + -5.4286243e-002 + -5.2746220e-002 + -5.1163338e-002 + -4.9487299e-002 + -4.7663649e-002 + -4.5635020e-002 + -4.3372078e-002 + -4.0882173e-002 + -3.8185350e-002 + -3.5304652e-002 + -3.2264203e-002 + -2.9113178e-002 + -2.5915134e-002 + -2.2710000e-002 + -1.9532005e-002 + -1.6395596e-002 + -1.3256508e-002 + -1.0060183e-002 + -6.7753627e-003 + -3.3515050e-003 + 2.4314073e-004 + 3.9769543e-003 + 7.8265568e-003 + 1.1791302e-002 + 1.5867229e-002 + 2.0072700e-002 + 2.4427983e-002 + 2.8908151e-002 + 3.3458524e-002 + 3.8030354e-002 + 4.2573603e-002 + 4.7020700e-002 + 5.1294557e-002 + 5.5320920e-002 + 5.9049429e-002 + 6.2478149e-002 + 6.5653074e-002 + 6.8672485e-002 + 7.1674626e-002 + 7.4771856e-002 + 7.8020854e-002 + 8.1445465e-002 + 8.5059698e-002 + 8.8890546e-002 + 9.2960964e-002 + 9.7255241e-002 + 1.0170474e-001 + 1.0619079e-001 + 1.1058319e-001 + 1.1477256e-001 + 1.1869969e-001 + 1.2236116e-001 + 1.2576471e-001 + 1.2890316e-001 + 1.3174732e-001 + 1.3424216e-001 + 1.3632746e-001 + 1.3796259e-001 + 1.3913543e-001 + 1.3985777e-001 + 1.4014490e-001 + 1.4002343e-001 + 1.3952793e-001 + 1.3867365e-001 + 1.3747394e-001 + 1.3595452e-001 + 1.3413607e-001 + 1.3201043e-001 + 1.2955420e-001 + 1.2675704e-001 + 1.2361387e-001 + 1.2012772e-001 + 1.1631798e-001 + 1.1219963e-001 + 1.0777644e-001 + 1.0304750e-001 + 9.7993725e-002 + 9.2609739e-002 + 8.6939443e-002 + 8.1042908e-002 + 7.4987499e-002 + 6.8857244e-002 + 6.2744791e-002 + 5.6744913e-002 + 5.0962994e-002 + 4.5508684e-002 + 4.0457001e-002 + 3.5835795e-002 + 3.1616109e-002 + 2.7711078e-002 + 2.4004027e-002 + 2.0383180e-002 + 1.6753049e-002 + 1.3021922e-002 + 9.1196448e-003 + 5.0257291e-003 + 7.7764906e-004 + -3.5565331e-003 + -7.9065279e-003 + -1.2184992e-002 + -1.6294159e-002 + -2.0149832e-002 + -2.3685911e-002 + -2.6891992e-002 + -2.9811838e-002 + -3.2488606e-002 + -3.4970841e-002 + -3.7330104e-002 + -3.9658603e-002 + -4.2050473e-002 + -4.4590444e-002 + -4.7361323e-002 + -5.0398989e-002 + -5.3676714e-002 + -5.7135394e-002 + -6.0672587e-002 + -6.4170810e-002 + -6.7563979e-002 + -7.0833268e-002 + -7.3981220e-002 + -7.7044579e-002 + -8.0070753e-002 + -8.3088374e-002 + -8.6134776e-002 + -8.9245653e-002 + -9.2434781e-002 + -9.5711489e-002 + -9.9074536e-002 + -1.0251736e-001 + -1.0605236e-001 + -1.0971186e-001 + -1.1352948e-001 + -1.1752864e-001 + -1.2171879e-001 + -1.2608291e-001 + -1.3058903e-001 + -1.3519973e-001 + -1.3984637e-001 + -1.4443758e-001 + -1.4888897e-001 + -1.5313427e-001 + -1.5714227e-001 + -1.6092725e-001 + -1.6453550e-001 + -1.6799498e-001 + -1.7128360e-001 + -1.7434505e-001 + -1.7705426e-001 + -1.7920027e-001 + -1.8056491e-001 + -1.8098122e-001 + -1.8038403e-001 + -1.7882376e-001 + -1.7640026e-001 + -1.7319568e-001 + -1.6925924e-001 + -1.6464924e-001 + -1.5945152e-001 + -1.5381023e-001 + -1.4792864e-001 + -1.4200507e-001 + -1.3620547e-001 + -1.3062651e-001 + -1.2525963e-001 + -1.2001143e-001 + -1.1473070e-001 + -1.0925128e-001 + -1.0345642e-001 + -9.7280176e-002 + -9.0698326e-002 + -8.3747975e-002 + -7.6507437e-002 + -6.9073748e-002 + -6.1560978e-002 + -5.4089270e-002 + -4.6776709e-002 + -3.9729646e-002 + -3.3023710e-002 + -2.6737556e-002 + -2.0991632e-002 + -1.5903307e-002 + -1.1563004e-002 + -8.0377895e-003 + -5.3337162e-003 + -3.3941259e-003 + -2.1339893e-003 + -1.4751191e-003 + -1.3791824e-003 + -1.8363601e-003 + -2.8308400e-003 + -4.3327120e-003 + -6.2993164e-003 + -8.6605488e-003 + -1.1331552e-002 + -1.4248514e-002 + -1.7348284e-002 + -2.0550057e-002 + -2.3780634e-002 + -2.6971929e-002 + -3.0069841e-002 + -3.3057839e-002 + -3.5960279e-002 + -3.8829502e-002 + -4.1697348e-002 + -4.4559933e-002 + -4.7381892e-002 + -5.0101880e-002 + -5.2678303e-002 + -5.5120007e-002 + -5.7492488e-002 + -5.9893838e-002 + -6.2425954e-002 + -6.5153539e-002 + -6.8053025e-002 + -7.1047569e-002 + -7.4070542e-002 + -7.7058961e-002 + -7.9940634e-002 + -8.2655608e-002 + -8.5141981e-002 + -8.7318424e-002 + -8.9128720e-002 + -9.0583268e-002 + -9.1761920e-002 + -9.2800306e-002 + -9.3865761e-002 + -9.5108145e-002 + -9.6619430e-002 + -9.8433735e-002 + -1.0052113e-001 + -1.0283207e-001 + -1.0532948e-001 + -1.0795103e-001 + -1.1063239e-001 + -1.1331935e-001 + -1.1595380e-001 + -1.1846152e-001 + -1.2071451e-001 + -1.2258065e-001 + -1.2398428e-001 + -1.2491556e-001 + -1.2545613e-001 + -1.2574430e-001 + -1.2592116e-001 + -1.2613210e-001 + -1.2650801e-001 + -1.2714220e-001 + -1.2810849e-001 + -1.2945420e-001 + -1.3117860e-001 + -1.3324562e-001 + -1.3558797e-001 + -1.3809371e-001 + -1.4062700e-001 + -1.4306318e-001 + -1.4527488e-001 + -1.4713400e-001 + -1.4855466e-001 + -1.4950338e-001 + -1.4998847e-001 + -1.5006434e-001 + -1.4983170e-001 + -1.4940410e-001 + -1.4886423e-001 + -1.4824098e-001 + -1.4752419e-001 + -1.4670213e-001 + -1.4578400e-001 + -1.4481792e-001 + -1.4389466e-001 + -1.4311877e-001 + -1.4256633e-001 + -1.4223779e-001 + -1.4203637e-001 + -1.4179155e-001 + -1.4131323e-001 + -1.4046290e-001 + -1.3919401e-001 + -1.3755339e-001 + -1.3563774e-001 + -1.3352736e-001 + -1.3127033e-001 + -1.2888943e-001 + -1.2639284e-001 + -1.2378659e-001 + -1.2108056e-001 + -1.1830287e-001 + -1.1548946e-001 + -1.1265725e-001 + -1.0980657e-001 + -1.0693640e-001 + -1.0403596e-001 + -1.0108014e-001 + -9.8042302e-002 + -9.4896890e-002 + -9.1643115e-002 + -8.8322578e-002 + -8.4998899e-002 + -8.1744785e-002 + -7.8637649e-002 + -7.5766751e-002 + -7.3245058e-002 + -7.1185676e-002 + -6.9662139e-002 + -6.8696562e-002 + -6.8250581e-002 + -6.8226295e-002 + -6.8508675e-002 + -6.9017691e-002 + -6.9721756e-002 + -7.0614190e-002 + -7.1695396e-002 + -7.2960719e-002 + -7.4388108e-002 + -7.5926133e-002 + -7.7504013e-002 + -7.9048520e-002 + -8.0481178e-002 + -8.1733142e-002 + -8.2756645e-002 + -8.3532901e-002 + -8.4087032e-002 + -8.4475215e-002 + -8.4776906e-002 + -8.5093694e-002 + -8.5503259e-002 + -8.6024554e-002 + -8.6636254e-002 + -8.7296482e-002 + -8.7985839e-002 + -8.8752302e-002 + -8.9692351e-002 + -9.0920205e-002 + -9.2531321e-002 + -9.4561744e-002 + -9.6997122e-002 + -9.9797981e-002 + -1.0291092e-001 + -1.0628054e-001 + -1.0986587e-001 + -1.1364443e-001 + -1.1759654e-001 + -1.2168789e-001 + -1.2585647e-001 + -1.3000896e-001 + -1.3404047e-001 + -1.3785374e-001 + -1.4136923e-001 + -1.4456394e-001 + -1.4749843e-001 + -1.5027927e-001 + -1.5301020e-001 + -1.5577433e-001 + -1.5860124e-001 + -1.6144830e-001 + -1.6425342e-001 + -1.6697898e-001 + -1.6960844e-001 + -1.7214250e-001 + -1.7459190e-001 + -1.7693815e-001 + -1.7910834e-001 + -1.8101053e-001 + -1.8257219e-001 + -1.8374932e-001 + -1.8451964e-001 + -1.8487586e-001 + -1.8482908e-001 + -1.8440923e-001 + -1.8367407e-001 + -1.8272906e-001 + -1.8171255e-001 + -1.8074774e-001 + -1.7992252e-001 + -1.7927075e-001 + -1.7876328e-001 + -1.7834319e-001 + -1.7794595e-001 + -1.7752469e-001 + -1.7706586e-001 + -1.7656202e-001 + -1.7599125e-001 + -1.7530642e-001 + -1.7444882e-001 + -1.7338632e-001 + -1.7214285e-001 + -1.7080106e-001 + -1.6946836e-001 + -1.6824295e-001 + -1.6719861e-001 + -1.6635885e-001 + -1.6569351e-001 + -1.6516241e-001 + -1.6473803e-001 + -1.6438983e-001 + -1.6407235e-001 + -1.6371618e-001 + -1.6321806e-001 + -1.6245139e-001 + -1.6129680e-001 + -1.5967031e-001 + -1.5754670e-001 + -1.5498468e-001 + -1.5211091e-001 + -1.4907059e-001 + -1.4599824e-001 + -1.4297963e-001 + -1.4005733e-001 + -1.3726843e-001 + -1.3464195e-001 + -1.3221241e-001 + -1.3001995e-001 + -1.2810373e-001 + -1.2646170e-001 + -1.2497892e-001 + -1.2346470e-001 + -1.2171806e-001 + -1.1955437e-001 + -1.1685871e-001 + -1.1361090e-001 + -1.0985359e-001 + -1.0564951e-001 + -1.0105355e-001 + -9.6130787e-002 + -9.0981916e-002 + -8.5721643e-002 + -8.0461505e-002 + -7.5305255e-002 + -7.0334879e-002 + -6.5618950e-002 + -6.1227044e-002 + -5.7230316e-002 + -5.3689283e-002 + -5.0650636e-002 + -4.8160308e-002 + -4.6253987e-002 + -4.4911215e-002 + -4.4026181e-002 + -4.3442424e-002 + -4.2988599e-002 + -4.2509360e-002 + -4.1918715e-002 + -4.1218564e-002 + -4.0458949e-002 + -3.9691861e-002 + -3.8948296e-002 + -3.8223540e-002 + -3.7496741e-002 + -3.6757107e-002 + -3.6017452e-002 + -3.5325960e-002 + -3.4758689e-002 + -3.4411232e-002 + -3.4373629e-002 + -3.4689940e-002 + -3.5318216e-002 + -3.6130682e-002 + -3.6964574e-002 + -3.7653279e-002 + -3.8038719e-002 + -3.7974359e-002 + -3.7317291e-002 + -3.5940474e-002 + -3.3746162e-002 + -3.0647952e-002 + -2.6596543e-002 + -2.1640483e-002 + -1.5900731e-002 + -9.5326578e-003 + -2.7395996e-003 + 4.2604847e-003 + 1.1298910e-002 + 1.8259786e-002 + 2.5044343e-002 + 3.1561344e-002 + 3.7725996e-002 + 4.3453438e-002 + 4.8665934e-002 + 5.3287616e-002 + 5.7275536e-002 + 6.0641957e-002 + 6.3411955e-002 + 6.5632255e-002 + 6.7373076e-002 + 6.8698544e-002 + 6.9676934e-002 + 7.0380630e-002 + 7.0861144e-002 + 7.1136456e-002 + 7.1197593e-002 + 7.0993924e-002 + 7.0454558e-002 + 6.9546006e-002 + 6.8247925e-002 + 6.6526499e-002 + 6.4375906e-002 + 6.1818345e-002 + 5.8871471e-002 + 5.5554734e-002 + 5.1906087e-002 + 4.7993999e-002 + 4.3931420e-002 + 3.9865899e-002 + 3.5952604e-002 + 3.2318682e-002 + 2.9032431e-002 + 2.6105165e-002 + 2.3492734e-002 + 2.1114787e-002 + 1.8865787e-002 + 1.6627997e-002 + 1.4301076e-002 + 1.1777843e-002 + 8.9493071e-003 + 5.7411383e-003 + 2.1272965e-003 + -1.8575293e-003 + -6.1288182e-003 + -1.0597220e-002 + -1.5219889e-002 + -1.9983120e-002 + -2.4865251e-002 + -2.9854194e-002 + -3.4917422e-002 + -3.9999931e-002 + -4.5072017e-002 + -5.0089202e-002 + -5.4991379e-002 + -5.9720468e-002 + -6.4194363e-002 + -6.8326348e-002 + -7.2022126e-002 + -7.5204915e-002 + -7.7841613e-002 + -7.9908887e-002 + -8.1393807e-002 + -8.2296909e-002 + -8.2622969e-002 + -8.2343602e-002 + -8.1410812e-002 + -7.9842360e-002 + -7.7746079e-002 + -7.5295643e-002 + -7.2675599e-002 + -7.0049235e-002 + -6.7524344e-002 + -6.5083010e-002 + -6.2598978e-002 + -5.9920499e-002 + -5.6922762e-002 + -5.3535914e-002 + -4.9793038e-002 + -4.5849019e-002 + -4.1915372e-002 + -3.8173346e-002 + -3.4742940e-002 + -3.1651746e-002 + -2.8786639e-002 + -2.5961387e-002 + -2.2999855e-002 + -1.9749033e-002 + -1.6110266e-002 + -1.2056017e-002 + -7.6122691e-003 + -2.8304373e-003 + 2.2359702e-003 + 7.5474050e-003 + 1.3082461e-002 + 1.8819118e-002 + 2.4714140e-002 + 3.0712437e-002 + 3.6762473e-002 + 4.2795251e-002 + 4.8733783e-002 + 5.4521653e-002 + 6.0100627e-002 + 6.5399071e-002 + 7.0345099e-002 + 7.4887565e-002 + 7.9013395e-002 + 8.2735443e-002 + 8.6086427e-002 + 8.9146680e-002 + 9.2042480e-002 + 9.4894156e-002 + 9.7822911e-002 + 1.0096083e-001 + 1.0443225e-001 + 1.0836619e-001 + 1.1287312e-001 + 1.1803218e-001 + 1.2387340e-001 + 1.3035891e-001 + 1.3744272e-001 + 1.4509554e-001 + 1.5329119e-001 + 1.6201385e-001 + 1.7122254e-001 + 1.8080142e-001 + 1.9056844e-001 + 2.0031157e-001 + 2.0983568e-001 + 2.1901780e-001 + 2.2780417e-001 + 2.3618905e-001 + 2.4418619e-001 + 2.5177719e-001 + 2.5892464e-001 + 2.6558410e-001 + 2.7168996e-001 + 2.7714835e-001 + 2.8183288e-001 + 2.8558134e-001 + 2.8817550e-001 + 2.8938693e-001 + 2.8902097e-001 + 2.8696102e-001 + 2.8325618e-001 + 2.7811442e-001 + 2.7186574e-001 + 2.6491524e-001 + 2.5765402e-001 + 2.5039492e-001 + 2.4332652e-001 + 2.3651282e-001 + 2.2992427e-001 + 2.2345678e-001 + 2.1696537e-001 + 2.1032275e-001 + 2.0346598e-001 + 1.9640552e-001 + 1.8919804e-001 + 1.8192402e-001 + 1.7469873e-001 + 1.6766588e-001 + 1.6096876e-001 + 1.5471346e-001 + 1.4896676e-001 + 1.4376827e-001 + 1.3912272e-001 + 1.3503317e-001 + 1.3150053e-001 + 1.2850806e-001 + 1.2604488e-001 + 1.2409481e-001 + 1.2266036e-001 + 1.2178356e-001 + 1.2150731e-001 + 1.2187112e-001 + 1.2288571e-001 + 1.2448296e-001 + 1.2652856e-001 + 1.2886090e-001 + 1.3129175e-001 + 1.3362486e-001 + 1.3570000e-001 + 1.3740824e-001 + 1.3871093e-001 + 1.3961129e-001 + 1.4010670e-001 + 1.4015974e-001 + 1.3965504e-001 + 1.3843735e-001 + 1.3638042e-001 + 1.3342090e-001 + 1.2958529e-001 + 1.2499644e-001 + 1.1984431e-001 + 1.1430750e-001 + 1.0851013e-001 + 1.0253315e-001 + 9.6431409e-002 + 9.0252611e-002 + 8.4059139e-002 + 7.7922338e-002 + 7.1899761e-002 + 6.6045172e-002 + 6.0382902e-002 + 5.4891577e-002 + 4.9537040e-002 + 4.4277872e-002 + 3.9091255e-002 + 3.3994548e-002 + 2.9010775e-002 + 2.4151274e-002 + 1.9428544e-002 + 1.4830274e-002 + 1.0254618e-002 + 5.4994641e-003 + 3.1026242e-004 + -5.5762579e-003 + -1.2359608e-002 + -2.0094689e-002 + -2.8684568e-002 + -3.7928273e-002 + -4.7553487e-002 + -5.7255672e-002 + -6.6766491e-002 + -7.5852138e-002 + -8.4275033e-002 + -9.1795828e-002 + -9.8171382e-002 + -1.0317226e-001 + -1.0662754e-001 + -1.0846048e-001 + -1.0870271e-001 + -1.0746950e-001 + -1.0492907e-001 + -1.0128519e-001 + -9.6735768e-002 + -9.1448937e-002 + -8.5592987e-002 + -7.9362007e-002 + -7.2987133e-002 + -6.6731397e-002 + -6.0839776e-002 + -5.5469851e-002 + -5.0656361e-002 + -4.6350318e-002 + -4.2465231e-002 + -3.8910150e-002 + -3.5668469e-002 + -3.2826199e-002 + -3.0512705e-002 + -2.8819682e-002 + -2.7742646e-002 + -2.7176663e-002 + -2.6923066e-002 + -2.6724808e-002 + -2.6337841e-002 + -2.5573084e-002 + -2.4332122e-002 + -2.2601180e-002 + -2.0382269e-002 + -1.7627580e-002 + -1.4187267e-002 + -9.8475590e-003 + -4.4132110e-003 + 2.2551828e-003 + 1.0149835e-002 + 1.9044711e-002 + 2.8547895e-002 + 3.8193444e-002 + 4.7555217e-002 + 5.6361168e-002 + 6.4528307e-002 + 7.2117470e-002 + 7.9255413e-002 + 8.6062005e-002 + 9.2595567e-002 + 9.8838925e-002 + 1.0473369e-001 + 1.1022092e-001 + 1.1526026e-001 + 1.1983256e-001 + 1.2393386e-001 + 1.2755049e-001 + 1.3064746e-001 + 1.3316417e-001 + 1.3500809e-001 + 1.3610908e-001 + 1.3644962e-001 + 1.3604653e-001 + 1.3495076e-001 + 1.3321564e-001 + 1.3089536e-001 + 1.2808073e-001 + 1.2488258e-001 + 1.2143704e-001 + 1.1791741e-001 + 1.1446588e-001 + 1.1115943e-001 + 1.0802206e-001 + 1.0501019e-001 + 1.0204206e-001 + 9.9058900e-002 + 9.6057611e-002 + 9.3090309e-002 + 9.0232244e-002 + 8.7552925e-002 + 8.5102166e-002 + 8.2883894e-002 + 8.0836907e-002 + 7.8852670e-002 + 7.6806296e-002 + 7.4569563e-002 + 7.2023876e-002 + 6.9088048e-002 + 6.5726058e-002 + 6.1939791e-002 + 5.7772780e-002 + 5.3319272e-002 + 4.8733755e-002 + 4.4209855e-002 + 3.9930779e-002 + 3.6038245e-002 + 3.2619085e-002 + 2.9712801e-002 + 2.7321589e-002 + 2.5413802e-002 + 2.3958317e-002 + 2.2944908e-002 + 2.2355362e-002 + 2.2155213e-002 + 2.2323779e-002 + 2.2842164e-002 + 2.3677689e-002 + 2.4799437e-002 + 2.6162129e-002 + 2.7691930e-002 + 2.9286076e-002 + 3.0831108e-002 + 3.2220553e-002 + 3.3334390e-002 + 3.4042948e-002 + 3.4229548e-002 + 3.3818641e-002 + 3.2826997e-002 + 3.1380920e-002 + 2.9702027e-002 + 2.8057384e-002 + 2.6673149e-002 + 2.5687226e-002 + 2.5129472e-002 + 2.4939472e-002 + 2.5017339e-002 + 2.5258994e-002 + 2.5569878e-002 + 2.5866949e-002 + 2.6094099e-002 + 2.6237051e-002 + 2.6341063e-002 + 2.6504410e-002 + 2.6862845e-002 + 2.7578217e-002 + 2.8772880e-002 + 3.0499743e-002 + 3.2775820e-002 + 3.5577757e-002 + 3.8832839e-002 + 4.2444403e-002 + 4.6315888e-002 + 5.0357248e-002 + 5.4472094e-002 + 5.8561963e-002 + 6.2543185e-002 + 6.6346727e-002 + 6.9926546e-002 + 7.3256286e-002 + 7.6311947e-002 + 7.9074549e-002 + 8.1540695e-002 + 8.3730172e-002 + 8.5676174e-002 + 8.7411298e-002 + 8.8964241e-002 + 9.0339408e-002 + 9.1494656e-002 + 9.2339340e-002 + 9.2745831e-002 + 9.2589939e-002 + 9.1811538e-002 + 9.0435568e-002 + 8.8561193e-002 + 8.6368535e-002 + 8.4099268e-002 + 8.2027838e-002 + 8.0456749e-002 + 7.9689077e-002 + 7.9967179e-002 + 8.1373560e-002 + 8.3772177e-002 + 8.6839372e-002 + 9.0151904e-002 + 9.3315503e-002 + 9.6057853e-002 + 9.8265676e-002 + 9.9968701e-002 + 1.0126324e-001 + 1.0223694e-001 + 1.0293734e-001 + 1.0337916e-001 + 1.0354977e-001 + 1.0342374e-001 + 1.0301979e-001 + 1.0243022e-001 + 1.0178583e-001 + 1.0121947e-001 + 1.0083086e-001 + 1.0062308e-001 + 1.0047082e-001 + 1.0016433e-001 + 9.9471143e-002 + 9.8195385e-002 + 9.6232079e-002 + 9.3576921e-002 + 9.0306685e-002 + 8.6531810e-002 + 8.2347983e-002 + 7.7834388e-002 + 7.3061754e-002 + 6.8093504e-002 + 6.2983280e-002 + 5.7744124e-002 + 5.2329092e-002 + 4.6647421e-002 + 4.0580688e-002 + 3.4014039e-002 + 2.6867986e-002 + 1.9121411e-002 + 1.0820749e-002 + 2.0617256e-003 + -7.0177664e-003 + -1.6250386e-002 + -2.5463723e-002 + -3.4497784e-002 + -4.3213552e-002 + -5.1485547e-002 + -5.9205224e-002 + -6.6310045e-002 + -7.2800352e-002 + -7.8718089e-002 + -8.4134057e-002 + -8.9140275e-002 + -9.3835562e-002 + -9.8326238e-002 + -1.0269825e-001 + -1.0697221e-001 + -1.1108969e-001 + -1.1492039e-001 + -1.1827749e-001 + -1.2096872e-001 + -1.2285828e-001 + -1.2388871e-001 + -1.2409599e-001 + -1.2361456e-001 + -1.2263558e-001 + -1.2134262e-001 + -1.1985892e-001 + -1.1824121e-001 + -1.1653338e-001 + -1.1482447e-001 + -1.1325377e-001 + -1.1196664e-001 + -1.1105277e-001 + -1.1049622e-001 + -1.1015585e-001 + -1.0980490e-001 + -1.0921764e-001 + -1.0822725e-001 + -1.0674943e-001 + -1.0477617e-001 + -1.0232111e-001 + -9.9370809e-002 + -9.5874387e-002 + -9.1760765e-002 + -8.6979001e-002 + -8.1545724e-002 + -7.5575499e-002 + -6.9277681e-002 + -6.2930811e-002 + -5.6821180e-002 + -5.1170590e-002 + -4.6109045e-002 + -4.1668681e-002 + -3.7811121e-002 + -3.4478337e-002 + -3.1629080e-002 + -2.9251625e-002 + -2.7345763e-002 + -2.5913168e-002 + -2.4948131e-002 + -2.4421653e-002 + -2.4288204e-002 + -2.4499243e-002 + -2.5001287e-002 + -2.5724473e-002 + -2.6573207e-002 + -2.7430358e-002 + -2.8193197e-002 + -2.8803565e-002 + -2.9240598e-002 + -2.9512133e-002 + -2.9655601e-002 + -2.9730576e-002 + -2.9799798e-002 + -2.9896927e-002 + -2.9978301e-002 + -2.9907777e-002 + -2.9494711e-002 + -2.8532212e-002 + -2.6836233e-002 + -2.4290190e-002 + -2.0877593e-002 + -1.6701486e-002 + -1.1971496e-002 + -6.9707700e-003 + -2.0228549e-003 + 2.5653490e-003 + 6.5705271e-003 + 9.8710483e-003 + 1.2440179e-002 + 1.4347792e-002 + 1.5725717e-002 + 1.6724205e-002 + 1.7481546e-002 + 1.8070807e-002 + 1.8473265e-002 + 1.8592167e-002 + 1.8262654e-002 + 1.7296019e-002 + 1.5553276e-002 + 1.2983081e-002 + 9.6298932e-003 + 5.6329104e-003 + 1.2149215e-003 + -3.3460780e-003 + -7.7663624e-003 + -1.1820151e-002 + -1.5396330e-002 + -1.8508430e-002 + -2.1259103e-002 + -2.3803117e-002 + -2.6312978e-002 + -2.8923735e-002 + -3.1699689e-002 + -3.4645930e-002 + -3.7710819e-002 + -4.0798999e-002 + -4.3806209e-002 + -4.6615024e-002 + -4.9070488e-002 + -5.0974847e-002 + -5.2117008e-002 + -5.2338698e-002 + -5.1583537e-002 + -4.9903153e-002 + -4.7427315e-002 + -4.4307970e-002 + -4.0671838e-002 + -3.6605790e-002 + -3.2173620e-002 + -2.7438699e-002 + -2.2480634e-002 + -1.7407136e-002 + -1.2330459e-002 + -7.3246151e-003 + -2.4125250e-003 + 2.4290716e-003 + 7.2566749e-003 + 1.2121939e-002 + 1.7046901e-002 + 2.2028311e-002 + 2.7039783e-002 + 3.2028487e-002 + 3.6895401e-002 + 4.1484421e-002 + 4.5600577e-002 + 4.9046550e-002 + 5.1662736e-002 + 5.3336491e-002 + 5.4007644e-002 + 5.3667611e-002 + 5.2326259e-002 + 5.0000681e-002 + 4.6730757e-002 + 4.2602529e-002 + 3.7769502e-002 + 3.2447016e-002 + 2.6899939e-002 + 2.1435615e-002 + 1.6377420e-002 + 1.2004642e-002 + 8.4885487e-003 + 5.8458283e-003 + 3.9420220e-003 + 2.5609446e-003 + 1.4629518e-003 + 4.2944884e-004 + -6.9326775e-004 + -2.0012451e-003 + -3.5617870e-003 + -5.4329989e-003 + -7.6775938e-003 + -1.0336678e-002 + -1.3385622e-002 + -1.6736650e-002 + -2.0259425e-002 + -2.3798114e-002 + -2.7208169e-002 + -3.0387474e-002 + -3.3295821e-002 + -3.5961483e-002 + -3.8452612e-002 + -4.0836626e-002 + -4.3150657e-002 + -4.5392513e-002 + -4.7527571e-002 + -4.9495518e-002 + -5.1235198e-002 + -5.2699183e-002 + -5.3852207e-002 + -5.4680549e-002 + -5.5175591e-002 + -5.5313001e-002 + -5.5053753e-002 + -5.4360345e-002 + -5.3222987e-002 + -5.1668958e-002 + -4.9758440e-002 + -4.7572979e-002 + -4.5208149e-002 + -4.2784872e-002 + -4.0461302e-002 + -3.8411731e-002 + -3.6772366e-002 + -3.5597116e-002 + -3.4854087e-002 + -3.4454015e-002 + -3.4288994e-002 + -3.4274783e-002 + -3.4382791e-002 + -3.4654709e-002 + -3.5185257e-002 + -3.6070651e-002 + -3.7359382e-002 + -3.9023733e-002 + -4.0966782e-002 + -4.3064748e-002 + -4.5216387e-002 + -4.7378638e-002 + -4.9577027e-002 + -5.1887845e-002 + -5.4391804e-002 + -5.7124289e-002 + -6.0073699e-002 + -6.3210049e-002 + -6.6501030e-002 + -6.9928467e-002 + -7.3498850e-002 + -7.7231235e-002 + -8.1133869e-002 + -8.5190838e-002 + -8.9371094e-002 + -9.3652823e-002 + -9.8031093e-002 + -1.0250004e-001 + -1.0704698e-001 + -1.1165445e-001 + -1.1629487e-001 + -1.2092991e-001 + -1.2552650e-001 + -1.3007458e-001 + -1.3457202e-001 + -1.3899667e-001 + -1.4328886e-001 + -1.4734797e-001 + -1.5106128e-001 + -1.5434557e-001 + -1.5716496e-001 + -1.5951863e-001 + -1.6140328e-001 + -1.6278217e-001 + -1.6360632e-001 + -1.6384944e-001 + -1.6351388e-001 + -1.6263160e-001 + -1.6125777e-001 + -1.5945441e-001 + -1.5728232e-001 + -1.5479926e-001 + -1.5206732e-001 + -1.4916698e-001 + -1.4620132e-001 + -1.4328407e-001 + -1.4051466e-001 + -1.3795694e-001 + -1.3563619e-001 + -1.3354984e-001 + -1.3168538e-001 + -1.3002848e-001 + -1.2855382e-001 + -1.2721883e-001 + -1.2595867e-001 + -1.2469366e-001 + -1.2335709e-001 + -1.2189666e-001 + -1.2026538e-001 + -1.1844077e-001 + -1.1643058e-001 + -1.1426782e-001 + -1.1201877e-001 + -1.0977714e-001 + -1.0764139e-001 + -1.0569596e-001 + -1.0401605e-001 + -1.0268004e-001 + -1.0177073e-001 + -1.0136809e-001 + -1.0153039e-001 + -1.0225906e-001 + -1.0346015e-001 + -1.0493879e-001 + -1.0642073e-001 + -1.0757999e-001 + -1.0808586e-001 + -1.0765742e-001 + -1.0611391e-001 + -1.0341639e-001 + -9.9662354e-002 + -9.5052454e-002 + -8.9861569e-002 + -8.4397075e-002 + -7.8965091e-002 + -7.3830774e-002 + -6.9176072e-002 + -6.5101251e-002 + -6.1645623e-002 + -5.8818308e-002 + -5.6616110e-002 + -5.4996278e-002 + -5.3854378e-002 + -5.3042379e-002 + -5.2403598e-002 + -5.1806060e-002 + -5.1172096e-002 + -5.0485465e-002 + -4.9774165e-002 + -4.9110961e-002 + -4.8623258e-002 + -4.8470121e-002 + -4.8797680e-002 + -4.9708251e-002 + -5.1246874e-002 + -5.3388147e-002 + -5.6035587e-002 + -5.9032071e-002 + -6.2180473e-002 + -6.5273316e-002 + -6.8120386e-002 + -7.0588765e-002 + -7.2636325e-002 + -7.4316082e-002 + -7.5751587e-002 + -7.7103826e-002 + -7.8536988e-002 + -8.0175340e-002 + -8.2080209e-002 + -8.4241966e-002 + -8.6582768e-002 + -8.8982012e-002 + -9.1301786e-002 + -9.3409478e-002 + -9.5185018e-002 + -9.6518304e-002 + -9.7325708e-002 + -9.7558709e-002 + -9.7196101e-002 + -9.6237316e-002 + -9.4705828e-002 + -9.2654448e-002 + -9.0162025e-002 + -8.7340333e-002 + -8.4327948e-002 + -8.1247593e-002 + -7.8170373e-002 + -7.5117849e-002 + -7.2065239e-002 + -6.8952286e-002 + -6.5732724e-002 + -6.2410456e-002 + -5.9023763e-002 + -5.5615655e-002 + -5.2230688e-002 + -4.8901000e-002 + -4.5634403e-002 + -4.2420514e-002 + -3.9221962e-002 + -3.5972834e-002 + -3.2591668e-002 + -2.9023887e-002 + -2.5279957e-002 + -2.1442936e-002 + -1.7667041e-002 + -1.4124873e-002 + -1.0931151e-002 + -8.1224954e-003 + -5.6643658e-003 + -3.4586324e-003 + -1.3816935e-003 + 6.9894346e-004 + 2.9281203e-003 + 5.4275038e-003 + 8.2907250e-003 + 1.1585266e-002 + 1.5333685e-002 + 1.9536232e-002 + 2.4166586e-002 + 2.9170406e-002 + 3.4493318e-002 + 4.0067037e-002 + 4.5796248e-002 + 5.1576093e-002 + 5.7335041e-002 + 6.3065884e-002 + 6.8801079e-002 + 7.4561150e-002 + 8.0335162e-002 + 8.6073129e-002 + 9.1661625e-002 + 9.6954254e-002 + 1.0182198e-001 + 1.0614450e-001 + 1.0981392e-001 + 1.1277427e-001 + 1.1502065e-001 + 1.1660231e-001 + 1.1764420e-001 + 1.1831168e-001 + 1.1877839e-001 + 1.1921519e-001 + 1.1976272e-001 + 1.2052302e-001 + 1.2156404e-001 + 1.2292153e-001 + 1.2459532e-001 + 1.2654142e-001 + 1.2867718e-001 + 1.3090371e-001 + 1.3312770e-001 + 1.3526009e-001 + 1.3723247e-001 + 1.3901673e-001 + 1.4059835e-001 + 1.4196274e-001 + 1.4309401e-001 + 1.4394656e-001 + 1.4444657e-001 + 1.4454561e-001 + 1.4423989e-001 + 1.4354782e-001 + 1.4250886e-001 + 1.4118624e-001 + 1.3966137e-001 + 1.3803618e-001 + 1.3641654e-001 + 1.3489168e-001 + 1.3354005e-001 + 1.3242774e-001 + 1.3160010e-001 + 1.3106241e-001 + 1.3078422e-001 + 1.3072061e-001 + 1.3079487e-001 + 1.3090216e-001 + 1.3094318e-001 + 1.3084171e-001 + 1.3055048e-001 + 1.3004547e-001 + 1.2931632e-001 + 1.2837253e-001 + 1.2724533e-001 + 1.2599929e-001 + 1.2472811e-001 + 1.2351813e-001 + 1.2242864e-001 + 1.2146225e-001 + 1.2056745e-001 + 1.1968500e-001 + 1.1875870e-001 + 1.1773383e-001 + 1.1658267e-001 + 1.1529616e-001 + 1.1384749e-001 + 1.1219465e-001 + 1.1030287e-001 + 1.0817027e-001 + 1.0583330e-001 + 1.0334486e-001 + 1.0074698e-001 + 9.8052061e-002 + 9.5251317e-002 + 9.2342026e-002 + 8.9335895e-002 + 8.6250224e-002 + 8.3118300e-002 + 7.9992863e-002 + 7.6923366e-002 + 7.3954620e-002 + 7.1139367e-002 + 6.8518091e-002 + 6.6120681e-002 + 6.3982063e-002 + 6.2125712e-002 + 6.0569834e-002 + 5.9317445e-002 + 5.8334580e-002 + 5.7605383e-002 + 5.7155637e-002 + 5.7004453e-002 + 5.7170528e-002 + 5.7670696e-002 + 5.8477023e-002 + 5.9515659e-002 + 6.0687662e-002 + 6.1887933e-002 + 6.3031914e-002 + 6.4090207e-002 + 6.5087854e-002 + 6.6070257e-002 + 6.7091559e-002 + 6.8192955e-002 + 6.9365084e-002 + 7.0555531e-002 + 7.1692882e-002 + 7.2697694e-002 + 7.3501447e-002 + 7.4043369e-002 + 7.4260430e-002 + 7.4107565e-002 + 7.3570652e-002 + 7.2665155e-002 + 7.1437048e-002 + 6.9958846e-002 + 6.8313050e-002 + 6.6588652e-002 + 6.4884430e-002 + 6.3270588e-002 + 6.1761542e-002 + 6.0338915e-002 + 5.8974655e-002 + 5.7647145e-002 + 5.6358291e-002 + 5.5113392e-002 + 5.3893106e-002 + 5.2682887e-002 + 5.1492899e-002 + 5.0351765e-002 + 4.9343885e-002 + 4.8627683e-002 + 4.8387490e-002 + 4.8770716e-002 + 4.9827950e-002 + 5.1471780e-002 + 5.3494901e-002 + 5.5640035e-002 + 5.7665830e-002 + 5.9389291e-002 + 6.0710403e-002 + 6.1603405e-002 + 6.2071685e-002 + 6.2093554e-002 + 6.1602859e-002 + 6.0527347e-002 + 5.8840078e-002 + 5.6574488e-002 + 5.3831623e-002 + 5.0790187e-002 + 4.7681347e-002 + 4.4747544e-002 + 4.2207847e-002 + 4.0201357e-002 + 3.8759869e-002 + 3.7847937e-002 + 3.7407293e-002 + 3.7380750e-002 + 3.7716406e-002 + 3.8371546e-002 + 3.9301016e-002 + 4.0435748e-002 + 4.1702397e-002 + 4.3044368e-002 + 4.4429174e-002 + 4.5851330e-002 + 4.7330682e-002 + 4.8898979e-002 + 5.0548712e-002 + 5.2211167e-002 + 5.3780666e-002 + 5.5144904e-002 + 5.6230828e-002 + 5.7029618e-002 + 5.7589302e-002 + 5.7983913e-002 + 5.8268178e-002 + 5.8455592e-002 + 5.8525921e-002 + 5.8451275e-002 + 5.8221228e-002 + 5.7853400e-002 + 5.7396372e-002 + 5.6916413e-002 + 5.6454791e-002 + 5.5999516e-002 + 5.5514604e-002 + 5.4968925e-002 + 5.4344717e-002 + 5.3658137e-002 + 5.2938013e-002 + 5.2186546e-002 + 5.1379882e-002 + 5.0462874e-002 + 4.9354487e-002 + 4.7986589e-002 + 4.6323848e-002 + 4.4368754e-002 + 4.2144158e-002 + 3.9654274e-002 + 3.6886871e-002 + 3.3827604e-002 + 3.0466182e-002 + 2.6798968e-002 + 2.2826759e-002 + 1.8563750e-002 + 1.4044663e-002 + 9.3465866e-003 + 4.5873515e-003 + -1.0790201e-004 + -4.6145095e-003 + -8.8183653e-003 + -1.2622485e-002 + -1.5947589e-002 + -1.8754706e-002 + -2.1039311e-002 + -2.2821231e-002 + -2.4153780e-002 + -2.5106947e-002 + -2.5749809e-002 + -2.6138719e-002 + -2.6312997e-002 + -2.6301826e-002 + -2.6118393e-002 + -2.5756589e-002 + -2.5192103e-002 + -2.4386193e-002 + -2.3311878e-002 + -2.1982661e-002 + -2.0449206e-002 + -1.8769980e-002 + -1.6982896e-002 + -1.5091711e-002 + -1.3086026e-002 + -1.0969839e-002 + -8.7554822e-003 + -6.4558373e-003 + -4.0878310e-003 + -1.6676533e-003 + 7.9907633e-004 + 3.3130397e-003 + 5.8678931e-003 + 8.4564886e-003 + 1.1065953e-002 + 1.3682382e-002 + 1.6316552e-002 + 1.8981242e-002 + 2.1669652e-002 + 2.4375317e-002 + 2.7106897e-002 + 2.9885710e-002 + 3.2733277e-002 + 3.5655287e-002 + 3.8628479e-002 + 4.1612178e-002 + 4.4581845e-002 + 4.7554032e-002 + 5.0571727e-002 + 5.3673326e-002 + 5.6883914e-002 + 6.0209678e-002 + 6.3641818e-002 + 6.7163300e-002 + 7.0743902e-002 + 7.4349429e-002 + 7.7947577e-002 + 8.1482611e-002 + 8.4869532e-002 + 8.8017480e-002 + 9.0844608e-002 + 9.3309571e-002 + 9.5433030e-002 + 9.7283588e-002 + 9.8965336e-002 + 1.0058462e-001 + 1.0221274e-001 + 1.0388571e-001 + 1.0559755e-001 + 1.0730260e-001 + 1.0892780e-001 + 1.1037983e-001 + 1.1159495e-001 + 1.1258059e-001 + 1.1340618e-001 + 1.1419401e-001 + 1.1510628e-001 + 1.1629491e-001 + 1.1785747e-001 + 1.1982120e-001 + 1.2212140e-001 + 1.2459872e-001 + 1.2704260e-001 + 1.2924357e-001 + 1.3104355e-001 + 1.3237190e-001 + 1.3322144e-001 + 1.3361857e-001 + 1.3361651e-001 + 1.3327092e-001 + 1.3261902e-001 + 1.3167456e-001 + 1.3042010e-001 + 1.2881542e-001 + 1.2682604e-001 + 1.2443904e-001 + 1.2166576e-001 + 1.1851589e-001 + 1.1496525e-001 + 1.1097473e-001 + 1.0652333e-001 + 1.0164559e-001 + 9.6457678e-002 + 9.1121250e-002 + 8.5791758e-002 + 8.0579568e-002 + 7.5541845e-002 + 7.0725429e-002 + 6.6198112e-002 + 6.2049039e-002 + 5.8385896e-002 + 5.5317606e-002 + 5.2924670e-002 + 5.1237082e-002 + 5.0227133e-002 + 4.9817287e-002 + 4.9889015e-002 + 5.0302699e-002 + 5.0925977e-002 + 5.1646067e-002 + 5.2381280e-002 + 5.3094619e-002 + 5.3783966e-002 + 5.4459751e-002 + 5.5131252e-002 + 5.5780846e-002 + 5.6357484e-002 + 5.6816874e-002 + 5.7145661e-002 + 5.7356373e-002 + 5.7472956e-002 + 5.7504003e-002 + 5.7430494e-002 + 5.7210290e-002 + 5.6782480e-002 + 5.6081851e-002 + 5.5058638e-002 + 5.3692681e-002 + 5.2006643e-002 + 5.0063644e-002 + 4.7928540e-002 + 4.5639068e-002 + 4.3213757e-002 + 4.0673052e-002 + 3.8064410e-002 + 3.5466701e-002 + 3.2965944e-002 + 3.0625390e-002 + 2.8477492e-002 + 2.6539034e-002 + 2.4831326e-002 + 2.3381884e-002 + 2.2225881e-002 + 2.1413326e-002 + 2.0983752e-002 + 2.0959178e-002 + 2.1370691e-002 + 2.2250104e-002 + 2.3602245e-002 + 2.5393882e-002 + 2.7533605e-002 + 2.9864532e-002 + 3.2205283e-002 + 3.4399796e-002 + 3.6353333e-002 + 3.8047993e-002 + 3.9536556e-002 + 4.0923923e-002 + 4.2320061e-002 + 4.3800137e-002 + 4.5382118e-002 + 4.7019314e-002 + 4.8632821e-002 + 5.0136645e-002 + 5.1461232e-002 + 5.2573990e-002 + 5.3462577e-002 + 5.4125193e-002 + 5.4567935e-002 + 5.4797269e-002 + 5.4824680e-002 + 5.4664066e-002 + 5.4336099e-002 + 5.3876527e-002 + 5.3336661e-002 + 5.2791734e-002 + 5.2325845e-002 + 5.2016308e-002 + 5.1929394e-002 + 5.2099230e-002 + 5.2512380e-002 + 5.3121725e-002 + 5.3871759e-002 + 5.4702004e-002 + 5.5555947e-002 + 5.6369838e-002 + 5.7032112e-002 + 5.7411846e-002 + 5.7424841e-002 + 5.7051357e-002 + 5.6333971e-002 + 5.5361711e-002 + 5.4236309e-002 + 5.3050715e-002 + 5.1864729e-002 + 5.0690834e-002 + 4.9519321e-002 + 4.8354016e-002 + 4.7225182e-002 + 4.6183259e-002 + 4.5280004e-002 + 4.4537979e-002 + 4.3946212e-002 + 4.3478572e-002 + 4.3100624e-002 + 4.2786923e-002 + 4.2517693e-002 + 4.2258851e-002 + 4.1980142e-002 + 4.1655725e-002 + 4.1259582e-002 + 4.0802942e-002 + 4.0326953e-002 + 3.9850258e-002 + 3.9357614e-002 + 3.8793383e-002 + 3.8071759e-002 + 3.7136869e-002 + 3.5979718e-002 + 3.4625031e-002 + 3.3121644e-002 + 3.1508864e-002 + 2.9796327e-002 + 2.7957763e-002 + 2.5940046e-002 + 2.3684168e-002 + 2.1146280e-002 + 1.8319528e-002 + 1.5232224e-002 + 1.1948571e-002 + 8.5669262e-003 + 5.1956310e-003 + 1.9245042e-003 + -1.2006127e-003 + -4.1571299e-003 + -6.9050857e-003 + -9.3894643e-003 + -1.1557314e-002 + -1.3388390e-002 + -1.4920249e-002 + -1.6233548e-002 + -1.7426802e-002 + -1.8579542e-002 + -1.9734957e-002 + -2.0922563e-002 + -2.2140810e-002 + -2.3346543e-002 + -2.4514873e-002 + -2.5642551e-002 + -2.6729684e-002 + -2.7799965e-002 + -2.8885655e-002 + -3.0031793e-002 + -3.1295883e-002 + -3.2711151e-002 + -3.4269741e-002 + -3.5917676e-002 + -3.7567560e-002 + -3.9131636e-002 + -4.0550032e-002 + -4.1801707e-002 + -4.2880621e-002 + -4.3777000e-002 + -4.4481208e-002 + -4.4973682e-002 + -4.5252205e-002 + -4.5359272e-002 + -4.5370506e-002 + -4.5370671e-002 + -4.5431297e-002 + -4.5624918e-002 + -4.6003389e-002 + -4.6567130e-002 + -4.7293401e-002 + -4.8159856e-002 + -4.9168862e-002 + -5.0352695e-002 + -5.1735403e-002 + -5.3320871e-002 + -5.5094743e-002 + -5.7025377e-002 + -5.9080117e-002 + -6.1220082e-002 + -6.3387836e-002 + -6.5534918e-002 + -6.7650203e-002 + -6.9754935e-002 + -7.1907077e-002 + -7.4177074e-002 + -7.6594537e-002 + -7.9139629e-002 + -8.1745729e-002 + -8.4293000e-002 + -8.6644281e-002 + -8.8699263e-002 + -9.0404731e-002 + -9.1762117e-002 + -9.2825023e-002 + -9.3660722e-002 + -9.4308654e-002 + -9.4761357e-002 + -9.4985198e-002 + -9.4949061e-002 + -9.4652192e-002 + -9.4126306e-002 + -9.3422123e-002 + -9.2590908e-002 + -9.1661389e-002 + -9.0672168e-002 + -8.9661989e-002 + -8.8618115e-002 + -8.7502012e-002 + -8.6254788e-002 + -8.4814297e-002 + -8.3174657e-002 + -8.1372177e-002 + -7.9470848e-002 + -7.7553848e-002 + -7.5684191e-002 + -7.3887222e-002 + -7.2160218e-002 + -7.0502780e-002 + -6.8941016e-002 + -6.7529133e-002 + -6.6322382e-002 + -6.5358202e-002 + -6.4663099e-002 + -6.4230165e-002 + -6.4012284e-002 + -6.3944688e-002 + -6.3937389e-002 + -6.3905112e-002 + -6.3830849e-002 + -6.3762723e-002 + -6.3785560e-002 + -6.4004184e-002 + -6.4500603e-002 + -6.5289170e-002 + -6.6318666e-002 + -6.7514440e-002 + -6.8800247e-002 + -7.0106466e-002 + -7.1391097e-002 + -7.2631601e-002 + -7.3809138e-002 + -7.4894999e-002 + -7.5832996e-002 + -7.6549643e-002 + -7.6965194e-002 + -7.7015034e-002 + -7.6679713e-002 + -7.5981837e-002 + -7.4971272e-002 + -7.3692902e-002 + -7.2147530e-002 + -7.0309735e-002 + -6.8176388e-002 + -6.5776165e-002 + -6.3158777e-002 + -6.0395114e-002 + -5.7552469e-002 + -5.4689114e-002 + -5.1875221e-002 + -4.9175084e-002 + -4.6660502e-002 + -4.4427448e-002 + -4.2571299e-002 + -4.1177454e-002 + -4.0301514e-002 + -3.9950689e-002 + -4.0094697e-002 + -4.0673423e-002 + -4.1603670e-002 + -4.2796846e-002 + -4.4156066e-002 + -4.5577331e-002 + -4.6973912e-002 + -4.8291895e-002 + -4.9519837e-002 + -5.0679642e-002 + -5.1798848e-002 + -5.2887662e-002 + -5.3929393e-002 + -5.4895724e-002 + -5.5772043e-002 + -5.6565453e-002 + -5.7314015e-002 + -5.8085175e-002 + -5.8938047e-002 + -5.9879548e-002 + -6.0847114e-002 + -6.1741534e-002 + -6.2489023e-002 + -6.3068123e-002 + -6.3511661e-002 + -6.3902393e-002 + -6.4321004e-002 + -6.4807451e-002 + -6.5365895e-002 + -6.5974590e-002 + -6.6606253e-002 + -6.7232141e-002 + -6.7821012e-002 + -6.8357192e-002 + -6.8854386e-002 + -6.9367797e-002 + -6.9976696e-002 + -7.0738336e-002 + -7.1683493e-002 + -7.2809166e-002 + -7.4056571e-002 + -7.5321652e-002 + -7.6485077e-002 + -7.7455338e-002 + -7.8195957e-002 + -7.8738363e-002 + -7.9186037e-002 + -7.9683283e-002 + -8.0346605e-002 + -8.1218908e-002 + -8.2266945e-002 + -8.3390964e-002 + -8.4467723e-002 + -8.5394274e-002 + -8.6108260e-002 + -8.6603514e-002 + -8.6917482e-002 + -8.7085144e-002 + -8.7116402e-002 + -8.7001891e-002 + -8.6714096e-002 + -8.6231052e-002 + -8.5557782e-002 + -8.4743132e-002 + -8.3872399e-002 + -8.3018891e-002 + -8.2237708e-002 + -8.1560928e-002 + -8.0971353e-002 + -8.0426249e-002 + -7.9899431e-002 + -7.9384656e-002 + -7.8883572e-002 + -7.8404407e-002 + -7.7939485e-002 + -7.7428671e-002 + -7.6765035e-002 + -7.5836851e-002 + -7.4559564e-002 + -7.2898716e-002 + -7.0880700e-002 + -6.8577172e-002 + -6.6088345e-002 + -6.3529241e-002 + -6.1003000e-002 + -5.8584689e-002 + -5.6328286e-002 + -5.4265090e-002 + -5.2403755e-002 + -5.0759401e-002 + -4.9369933e-002 + -4.8282195e-002 + -4.7542466e-002 + -4.7189590e-002 + -4.7241728e-002 + -4.7690017e-002 + -4.8490154e-002 + -4.9554650e-002 + -5.0780310e-002 + -5.2080104e-002 + -5.3384458e-002 + -5.4647692e-002 + -5.5831651e-002 + -5.6864110e-002 + -5.7655766e-002 + -5.8127636e-002 + -5.8220315e-002 + -5.7943237e-002 + -5.7371942e-002 + -5.6596898e-002 + -5.5726680e-002 + -5.4866152e-002 + -5.4076078e-002 + -5.3389886e-002 + -5.2826814e-002 + -5.2390038e-002 + -5.2093663e-002 + -5.1981826e-002 + -5.2109579e-002 + -5.2515384e-002 + -5.3197075e-002 + -5.4106621e-002 + -5.5170455e-002 + -5.6316566e-002 + -5.7498694e-002 + -5.8672024e-002 + -5.9764721e-002 + -6.0714124e-002 + -6.1477905e-002 + -6.2035694e-002 + -6.2393365e-002 + -6.2553358e-002 + -6.2515378e-002 + -6.2286139e-002 + -6.1895009e-002 + -6.1404846e-002 + -6.0890141e-002 + -6.0408611e-002 + -5.9970963e-002 + -5.9542197e-002 + -5.9051763e-002 + -5.8391480e-002 + -5.7447247e-002 + -5.6143603e-002 + -5.4466512e-002 + -5.2469135e-002 + -5.0266064e-002 + -4.8005760e-002 + -4.5823008e-002 + -4.3811018e-002 + -4.2015843e-002 + -4.0449554e-002 + -3.9118221e-002 + -3.8016690e-002 + -3.7121616e-002 + -3.6408041e-002 + -3.5850213e-002 + -3.5430509e-002 + -3.5153336e-002 + -3.5036295e-002 + -3.5087783e-002 + -3.5287680e-002 + -3.5594558e-002 + -3.5965760e-002 + -3.6374260e-002 + -3.6824658e-002 + -3.7356299e-002 + -3.8027143e-002 + -3.8883903e-002 + -3.9933969e-002 + -4.1140978e-002 + -4.2430922e-002 + -4.3694528e-002 + -4.4822893e-002 + -4.5748309e-002 + -4.6434400e-002 + -4.6855384e-002 + -4.6996864e-002 + -4.6847302e-002 + -4.6385967e-002 + -4.5603113e-002 + -4.4518969e-002 + -4.3178580e-002 + -4.1644803e-002 + -3.9988300e-002 + -3.8271683e-002 + -3.6548900e-002 + -3.4873316e-002 + -3.3290582e-002 + -3.1856104e-002 + -3.0662941e-002 + -2.9835048e-002 + -2.9510974e-002 + -2.9805716e-002 + -3.0774823e-002 + -3.2417347e-002 + -3.4670142e-002 + -3.7399858e-002 + -4.0438255e-002 + -4.3630610e-002 + -4.6846981e-002 + -4.9985297e-002 + -5.2973320e-002 + -5.5756847e-002 + -5.8312558e-002 + -6.0648715e-002 + -6.2783426e-002 + -6.4751462e-002 + -6.6614051e-002 + -6.8456348e-002 + -7.0371997e-002 + -7.2429862e-002 + -7.4656376e-002 + -7.7040236e-002 + -7.9539676e-002 + -8.2109881e-002 + -8.4742806e-002 + -8.7455609e-002 + -9.0253639e-002 + -9.3107381e-002 + -9.5937857e-002 + -9.8639280e-002 + -1.0111607e-001 + -1.0330872e-001 + -1.0520550e-001 + -1.0683283e-001 + -1.0824835e-001 + -1.0953259e-001 + -1.1075848e-001 + -1.1195538e-001 + -1.1310070e-001 + -1.1414494e-001 + -1.1504265e-001 + -1.1576581e-001 + -1.1630192e-001 + -1.1664792e-001 + -1.1680090e-001 + -1.1674395e-001 + -1.1644068e-001 + -1.1584005e-001 + -1.1488222e-001 + -1.1351482e-001 + -1.1170484e-001 + -1.0943878e-001 + -1.0673493e-001 + -1.0366345e-001 + -1.0033425e-001 + -9.6863332e-002 + -9.3358512e-002 + -8.9906111e-002 + -8.6554845e-002 + -8.3327324e-002 + -8.0257034e-002 + -7.7407242e-002 + -7.4857301e-002 + -7.2680810e-002 + -7.0918819e-002 + -6.9562143e-002 + -6.8559588e-002 + -6.7821983e-002 + -6.7244988e-002 + -6.6758086e-002 + -6.6324248e-002 + -6.5926913e-002 + -6.5587522e-002 + -6.5359215e-002 + -6.5289350e-002 + -6.5397659e-002 + -6.5678043e-002 + -6.6120325e-002 + -6.6723207e-002 + -6.7465326e-002 + -6.8295817e-002 + -6.9146401e-002 + -6.9926759e-002 + -7.0532203e-002 + -7.0858744e-002 + -7.0815227e-002 + -7.0346389e-002 + -6.9438264e-002 + -6.8107551e-002 + -6.6400350e-002 + -6.4375286e-002 + -6.2086173e-002 + -5.9582785e-002 + -5.6903252e-002 + -5.4053383e-002 + -5.1014363e-002 + -4.7764388e-002 + -4.4283180e-002 + -4.0579784e-002 + -3.6701719e-002 + -3.2716876e-002 + -2.8708213e-002 + -2.4748262e-002 + -2.0891722e-002 + -1.7186643e-002 + -1.3659533e-002 + -1.0316399e-002 + -7.1572734e-003 + -4.1878596e-003 + -1.4041656e-003 + 1.2136305e-003 + 3.6696671e-003 + 5.9546963e-003 + 8.0372360e-003 + 9.8818623e-003 + 1.1498714e-002 + 1.2921130e-002 + 1.4175287e-002 + 1.5267008e-002 + 1.6185913e-002 + 1.6932084e-002 + 1.7530142e-002 + 1.8038999e-002 + 1.8523792e-002 + 1.9006614e-002 + 1.9455518e-002 + 1.9826674e-002 + 2.0117008e-002 + 2.0368178e-002 + 2.0648691e-002 + 2.1014238e-002 + 2.1472631e-002 + 2.1979223e-002 + 2.2444450e-002 + 2.2768795e-002 + 2.2878642e-002 + 2.2746971e-002 + 2.2390196e-002 + 2.1842699e-002 + 2.1154362e-002 + 2.0393021e-002 + 1.9616838e-002 + 1.8866229e-002 + 1.8183759e-002 + 1.7605896e-002 + 1.7140332e-002 + 1.6770773e-002 + 1.6471914e-002 + 1.6225952e-002 + 1.6037280e-002 + 1.5930454e-002 + 1.5932896e-002 + 1.6028892e-002 + 1.6147497e-002 + 1.6201428e-002 + 1.6119769e-002 + 1.5866322e-002 + 1.5429646e-002 + 1.4817770e-002 + 1.4045896e-002 + 1.3106400e-002 + 1.1977423e-002 + 1.0640661e-002 + 9.0854021e-003 + 7.3168633e-003 + 5.3592942e-003 + 3.2534387e-003 + 1.0517843e-003 + -1.1811110e-003 + -3.3677757e-003 + -5.4302214e-003 + -7.3106165e-003 + -8.9852574e-003 + -1.0461166e-002 + -1.1770509e-002 + -1.2959184e-002 + -1.4081013e-002 + -1.5190393e-002 + -1.6296211e-002 + -1.7350285e-002 + -1.8277992e-002 + -1.9000724e-002 + -1.9468922e-002 + -1.9666020e-002 + -1.9593533e-002 + -1.9269668e-002 + -1.8705647e-002 + -1.7895057e-002 + -1.6840479e-002 + -1.5561638e-002 + -1.4078666e-002 + -1.2404199e-002 + -1.0556726e-002 + -8.5664334e-003 + -6.4802569e-003 + -4.3826936e-003 + -2.3680802e-003 + -5.0311850e-004 + 1.1603975e-003 + 2.5870016e-003 + 3.7689661e-003 + 4.7249890e-003 + 5.5027155e-003 + 6.1673938e-003 + 6.7851733e-003 + 7.4102913e-003 + 8.0796980e-003 + 8.8172163e-003 + 9.6299176e-003 + 1.0515421e-002 + 1.1482574e-002 + 1.2551572e-002 + 1.3749147e-002 + 1.5112749e-002 + 1.6681803e-002 + 1.8471178e-002 + 2.0465179e-002 + 2.2615939e-002 + 2.4833039e-002 + 2.7012022e-002 + 2.9050749e-002 + 3.0871148e-002 + 3.2458783e-002 + 3.3855361e-002 + 3.5128139e-002 + 3.6330488e-002 + 3.7486788e-002 + 3.8622842e-002 + 3.9800286e-002 + 4.1104719e-002 + 4.2602440e-002 + 4.4312778e-002 + 4.6181182e-002 + 4.8076010e-002 + 4.9853113e-002 + 5.1417725e-002 + 5.2728340e-002 + 5.3794729e-002 + 5.4665684e-002 + 5.5399057e-002 + 5.6048701e-002 + 5.6656944e-002 + 5.7246230e-002 + 5.7825549e-002 + 5.8402121e-002 + 5.8974603e-002 + 5.9536921e-002 + 6.0104106e-002 + 6.0711757e-002 + 6.1399195e-002 + 6.2195873e-002 + 6.3097529e-002 + 6.4052806e-002 + 6.4982277e-002 + 6.5810476e-002 + 6.6485283e-002 + 6.6996924e-002 + 6.7381949e-002 + 6.7694127e-002 + 6.7994231e-002 + 6.8333476e-002 + 6.8730469e-002 + 6.9192945e-002 + 6.9718302e-002 + 7.0284450e-002 + 7.0858602e-002 + 7.1392426e-002 + 7.1828050e-002 + 7.2113165e-002 + 7.2179605e-002 + 7.1945476e-002 + 7.1374558e-002 + 7.0485205e-002 + 6.9336965e-002 + 6.8018940e-002 + 6.6615526e-002 + 6.5193417e-002 + 6.3791304e-002 + 6.2420991e-002 + 6.1094536e-002 + 5.9835396e-002 + 5.8646146e-002 + 5.7479431e-002 + 5.6263782e-002 + 5.4932158e-002 + 5.3428342e-002 + 5.1715392e-002 + 4.9789783e-002 + 4.7694160e-002 + 4.5496784e-002 + 4.3268297e-002 + 4.1077972e-002 + 3.8985176e-002 + 3.7040805e-002 + 3.5265108e-002 + 3.3627698e-002 + 3.2093658e-002 + 3.0657214e-002 + 2.9334487e-002 + 2.8149370e-002 + 2.7124794e-002 + 2.6276581e-002 + 2.5605021e-002 + 2.5123961e-002 + 2.4853915e-002 + 2.4783083e-002 + 2.4882530e-002 + 2.5118614e-002 + 2.5455714e-002 + 2.5847928e-002 + 2.6239825e-002 + 2.6584164e-002 + 2.6829610e-002 + 2.6943547e-002 + 2.6948566e-002 + 2.6920070e-002 + 2.6963690e-002 + 2.7169266e-002 + 2.7580740e-002 + 2.8196722e-002 + 2.8992137e-002 + 2.9936489e-002 + 3.0989375e-002 + 3.2093158e-002 + 3.3170055e-002 + 3.4129036e-002 + 3.4876336e-002 + 3.5361256e-002 + 3.5602769e-002 + 3.5641158e-002 + 3.5519024e-002 + 3.5277845e-002 + 3.4958257e-002 + 3.4616620e-002 + 3.4307439e-002 + 3.4074821e-002 + 3.3957521e-002 + 3.3982453e-002 + 3.4168970e-002 + 3.4535624e-002 + 3.5093486e-002 + 3.5844535e-002 + 3.6776261e-002 + 3.7857468e-002 + 3.9055080e-002 + 4.0341954e-002 + 4.1697020e-002 + 4.3111318e-002 + 4.4599625e-002 + 4.6195975e-002 + 4.7921803e-002 + 4.9785214e-002 + 5.1778757e-002 + 5.3842468e-002 + 5.5880073e-002 + 5.7808346e-002 + 5.9567419e-002 + 6.1113568e-002 + 6.2426415e-002 + 6.3513110e-002 + 6.4394079e-002 + 6.5102786e-002 + 6.5692686e-002 + 6.6223687e-002 + 6.6746861e-002 + 6.7305569e-002 + 6.7936067e-002 + 6.8673740e-002 + 6.9557217e-002 + 7.0610510e-002 + 7.1835115e-002 + 7.3205180e-002 + 7.4681363e-002 + 7.6242517e-002 + 7.7885080e-002 + 7.9612496e-002 + 8.1417467e-002 + 8.3256565e-002 + 8.5067773e-002 + 8.6798984e-002 + 8.8415094e-002 + 8.9893805e-002 + 9.1210512e-002 + 9.2350685e-002 + 9.3322724e-002 + 9.4145214e-002 + 9.4824345e-002 + 9.5346723e-002 + 9.5695899e-002 + 9.5844158e-002 + 9.5767928e-002 + 9.5485722e-002 + 9.5046286e-002 + 9.4505623e-002 + 9.3913376e-002 + 9.3294478e-002 + 9.2648204e-002 + 9.1954037e-002 + 9.1181886e-002 + 9.0327916e-002 + 8.9418399e-002 + 8.8495455e-002 + 8.7627338e-002 + 8.6884809e-002 + 8.6307727e-002 + 8.5904773e-002 + 8.5645390e-002 + 8.5460505e-002 + 8.5281306e-002 + 8.5064530e-002 + 8.4797868e-002 + 8.4503639e-002 + 8.4227441e-002 + 8.4011537e-002 + 8.3872080e-002 + 8.3795135e-002 + 8.3725583e-002 + 8.3565639e-002 + 8.3205819e-002 + 8.2558486e-002 + 8.1583434e-002 + 8.0301837e-002 + 7.8774062e-002 + 7.7056464e-002 + 7.5192652e-002 + 7.3230060e-002 + 7.1235886e-002 + 6.9309845e-002 + 6.7571892e-002 + 6.6120850e-002 + 6.5004671e-002 + 6.4214485e-002 + 6.3679519e-002 + 6.3300155e-002 + 6.2993226e-002 + 6.2693427e-002 + 6.2353048e-002 + 6.1949001e-002 + 6.1473642e-002 + 6.0922063e-002 + 6.0302618e-002 + 5.9645425e-002 + 5.8975253e-002 + 5.8303680e-002 + 5.7642548e-002 + 5.6998170e-002 + 5.6375230e-002 + 5.5794353e-002 + 5.5308959e-002 + 5.5000771e-002 + 5.4946061e-002 + 5.5185868e-002 + 5.5710605e-002 + 5.6450407e-002 + 5.7294749e-002 + 5.8133214e-002 + 5.8869371e-002 + 5.9434623e-002 + 5.9804729e-002 + 5.9976800e-002 + 5.9945460e-002 + 5.9706655e-002 + 5.9256943e-002 + 5.8586387e-002 + 5.7683414e-002 + 5.6550787e-002 + 5.5212062e-002 + 5.3711534e-002 + 5.2114382e-002 + 5.0482663e-002 + 4.8864051e-002 + 4.7306114e-002 + 4.5841875e-002 + 4.4469656e-002 + 4.3164798e-002 + 4.1890849e-002 + 4.0617042e-002 + 3.9339416e-002 + 3.8075517e-002 + 3.6855459e-002 + 3.5708044e-002 + 3.4652713e-002 + 3.3698908e-002 + 3.2850519e-002 + 3.2114067e-002 + 3.1492948e-002 + 3.0995814e-002 + 3.0641617e-002 + 3.0456229e-002 + 3.0472171e-002 + 3.0699954e-002 + 3.1110023e-002 + 3.1659346e-002 + 3.2316035e-002 + 3.3066060e-002 + 3.3922714e-002 + 3.4925537e-002 + 3.6111793e-002 + 3.7492450e-002 + 3.9043091e-002 + 4.0702557e-002 + 4.2392422e-002 + 4.4037689e-002 + 4.5583741e-002 + 4.7005129e-002 + 4.8293376e-002 + 4.9440245e-002 + 5.0437157e-002 + 5.1289852e-002 + 5.2030067e-002 + 5.2703828e-002 + 5.3332716e-002 + 5.3892837e-002 + 5.4326626e-002 + 5.4561180e-002 + 5.4534878e-002 + 5.4222034e-002 + 5.3629949e-002 + 5.2793614e-002 + 5.1770024e-002 + 5.0615163e-002 + 4.9371111e-002 + 4.8058838e-002 + 4.6674514e-002 + 4.5197917e-002 + 4.3609157e-002 + 4.1914120e-002 + 4.0171629e-002 + 3.8486270e-002 + 3.6950737e-002 + 3.5610710e-002 + 3.4477944e-002 + 3.3538428e-002 + 3.2753501e-002 + 3.2080105e-002 + 3.1488498e-002 + 3.0953814e-002 + 3.0447660e-002 + 2.9940982e-002 + 2.9403986e-002 + 2.8801176e-002 + 2.8093773e-002 + 2.7260892e-002 + 2.6308891e-002 + 2.5263352e-002 + 2.4152397e-002 + 2.2984108e-002 + 2.1752497e-002 + 2.0447395e-002 + 1.9069984e-002 + 1.7653438e-002 + 1.6241406e-002 + 1.4872485e-002 + 1.3575201e-002 + 1.2354271e-002 + 1.1202568e-002 + 1.0103205e-002 + 9.0281691e-003 + 7.9661644e-003 + 6.9346304e-003 + 5.9669725e-003 + 5.0970228e-003 + 4.3380453e-003 + 3.6702062e-003 + 3.0510341e-003 + 2.4294664e-003 + 1.7686035e-003 + 1.0846015e-003 + 4.4616531e-004 + -7.1986336e-005 + -4.1497095e-004 + -5.5477047e-004 + -4.9553103e-004 + -2.5513329e-004 + 1.4678589e-004 + 6.8632195e-004 + 1.3309098e-003 + 2.0292502e-003 + 2.7204274e-003 + 3.3596593e-003 + 3.9419982e-003 + 4.4940109e-003 + 5.0403175e-003 + 5.5849646e-003 + 6.1093393e-003 + 6.6039335e-003 + 7.0933879e-003 + 7.6163989e-003 + 8.2105258e-003 + 8.9001915e-003 + 9.6841937e-003 + 1.0536352e-002 + 1.1421379e-002 + 1.2334263e-002 + 1.3317589e-002 + 1.4438532e-002 + 1.5754766e-002 + 1.7279928e-002 + 1.8968823e-002 + 2.0743838e-002 + 2.2530349e-002 + 2.4277054e-002 + 2.5959651e-002 + 2.7554892e-002 + 2.9022888e-002 + 3.0319701e-002 + 3.1415562e-002 + 3.2298466e-002 + 3.2976942e-002 + 3.3480420e-002 + 3.3846216e-002 + 3.4111688e-002 + 3.4302810e-002 + 3.4431900e-002 + 3.4498160e-002 + 3.4489454e-002 + 3.4399535e-002 + 3.4224705e-002 + 3.3960799e-002 + 3.3610847e-002 + 3.3186553e-002 + 3.2716774e-002 + 3.2221552e-002 + 3.1680994e-002 + 3.1056665e-002 + 3.0308459e-002 + 2.9404839e-002 + 2.8344735e-002 + 2.7164648e-002 + 2.5923284e-002 + 2.4671681e-002 + 2.3437377e-002 + 2.2221189e-002 + 2.1008152e-002 + 1.9794103e-002 + 1.8592290e-002 + 1.7424388e-002 + 1.6315547e-002 + 1.5286229e-002 + 1.4347279e-002 + 1.3490860e-002 + 1.2692007e-002 + 1.1943939e-002 + 1.1264476e-002 + 1.0662210e-002 + 1.0129856e-002 + 9.6475005e-003 + 9.1850365e-003 + 8.7318491e-003 + 8.3100336e-003 + 7.9515863e-003 + 7.6717210e-003 + 7.4522963e-003 + 7.2391046e-003 + 6.9708701e-003 + 6.6164689e-003 + 6.1872623e-003 + 5.7424250e-003 + 5.3555808e-003 + 5.0674406e-003 + 4.8872215e-003 + 4.7969721e-003 + 4.7552312e-003 + 4.7160961e-003 + 4.6492748e-003 + 4.5505773e-003 + 4.4263773e-003 + 4.2848420e-003 + 4.1413064e-003 + 4.0082538e-003 + 3.8848662e-003 + 3.7685467e-003 + 3.6657577e-003 + 3.6000762e-003 + 3.6105610e-003 + 3.7222182e-003 + 3.9364110e-003 + 4.2353906e-003 + 4.5746779e-003 + 4.9023779e-003 + 5.1907714e-003 + 5.4407489e-003 + 5.6710953e-003 + 5.8996740e-003 + 6.1281322e-003 + 6.3476573e-003 + 6.5449600e-003 + 6.7046585e-003 + 6.8207703e-003 + 6.8958920e-003 + 6.9392121e-003 + 6.9774990e-003 + 7.0493407e-003 + 7.1838670e-003 + 7.3897902e-003 + 7.6474733e-003 + 7.9025394e-003 + 8.0927918e-003 + 8.1731368e-003 + 8.1136868e-003 + 7.9044264e-003 + 7.5546958e-003 + 7.0915992e-003 + 6.5547734e-003 + 5.9989622e-003 + 5.4995681e-003 + 5.1171584e-003 + 4.8856817e-003 + 4.8341551e-003 + 4.9817390e-003 + 5.3211540e-003 + 5.8091223e-003 + 6.3545685e-003 + 6.8338943e-003 + 7.1510336e-003 + 7.2594842e-003 + 7.1497811e-003 + 6.8396166e-003 + 6.3472990e-003 + 5.6852323e-003 + 4.8685575e-003 + 3.9231988e-003 + 2.8854996e-003 + 1.7826201e-003 + 6.3237943e-004 + -5.4425982e-004 + -1.7200982e-003 + -2.8533923e-003 + -3.8859957e-003 + -4.7669666e-003 + -5.4721660e-003 + -6.0062798e-003 + -6.4023858e-003 + -6.7052819e-003 + -6.9586507e-003 + -7.1979096e-003 + -7.4336505e-003 + -7.6542279e-003 + -7.8432104e-003 + -7.9932172e-003 + -8.1070663e-003 + -8.1881357e-003 + -8.2399031e-003 + -8.2663087e-003 + -8.2673925e-003 + -8.2561682e-003 + -8.2590109e-003 + -8.2903151e-003 + -8.3518396e-003 + -8.4276119e-003 + -8.4860312e-003 + -8.5010270e-003 + -8.4586472e-003 + -8.3758169e-003 + -8.2924670e-003 + -8.2411852e-003 + -8.2481346e-003 + -8.3224637e-003 + -8.4457144e-003 + -8.5937815e-003 + -8.7514967e-003 + -8.9020323e-003 + -9.0370428e-003 + -9.1618173e-003 + -9.2818713e-003 + -9.4067719e-003 + -9.5331879e-003 + -9.6291314e-003 + -9.6340527e-003 + -9.4730504e-003 + -9.1000586e-003 + -8.5232048e-003 + -7.8077374e-003 + -7.0544796e-003 + -6.3621616e-003 + -5.7988692e-003 + -5.3803896e-003 + -5.0814559e-003 + -4.8695118e-003 + -4.7251193e-003 + -4.6379764e-003 + -4.5871778e-003 + -4.5302270e-003 + -4.4214589e-003 + -4.2364700e-003 + -3.9709156e-003 + -3.6272642e-003 + -3.2040510e-003 + -2.6937989e-003 + -2.0860340e-003 + -1.3793809e-003 + -5.8723775e-004 + 2.6484367e-004 + 1.1299475e-003 + 1.9463333e-003 + 2.6622920e-003 + 3.2503541e-003 + 3.7068434e-003 + 4.0447929e-003 + 4.2707883e-003 + 4.3651786e-003 + 4.3032217e-003 + 4.0837441e-003 + 3.7404323e-003 + 3.3372825e-003 + 2.9397997e-003 + 2.6031389e-003 + 2.3724173e-003 + 2.2731831e-003 + 2.3136204e-003 + 2.4807181e-003 + 2.7431254e-003 + 3.0647220e-003 + 3.4110009e-003 + 3.7541836e-003 + 4.0809255e-003 + 4.3908854e-003 + 4.6892088e-003 + 4.9862753e-003 + 5.2873021e-003 + 5.5938128e-003 + 5.9030207e-003 + 6.2040009e-003 + 6.4861132e-003 + 6.7139547e-003 + 6.8266427e-003 + 6.8009274e-003 + 6.6750326e-003 + 6.5160592e-003 + 6.3978088e-003 + 6.3805702e-003 + 6.4895586e-003 + 6.7224755e-003 + 7.0757852e-003 + 7.5558557e-003 + 8.1691413e-003 + 8.9118829e-003 + 9.7602271e-003 + 1.0662443e-002 + 1.1556788e-002 + 1.2401473e-002 + 1.3167303e-002 + 1.3812960e-002 + 1.4309105e-002 + 1.4658388e-002 + 1.4876709e-002 + 1.5000818e-002 + 1.5089520e-002 + 1.5202845e-002 + 1.5403658e-002 + 1.5750541e-002 + 1.6265003e-002 + 1.6910252e-002 + 1.7590843e-002 + 1.8181743e-002 + 1.8583048e-002 + 1.8749929e-002 + 1.8700472e-002 + 1.8510744e-002 + 1.8280290e-002 + 1.8080647e-002 + 1.7927499e-002 + 1.7805852e-002 + 1.7687400e-002 + 1.7535631e-002 + 1.7338513e-002 + 1.7108287e-002 + 1.6860442e-002 + 1.6609572e-002 + 1.6359766e-002 + 1.6098106e-002 + 1.5792247e-002 + 1.5408365e-002 + 1.4936496e-002 + 1.4376112e-002 + 1.3722138e-002 + 1.2979449e-002 + 1.2174126e-002 + 1.1346295e-002 + 1.0529556e-002 + 9.7450419e-003 + 9.0061345e-003 + 8.3182082e-003 + 7.6766843e-003 + 7.0591173e-003 + 6.4297419e-003 + 5.7526805e-003 + 5.0041104e-003 + 4.1917543e-003 + 3.3486367e-003 + 2.5119037e-003 + 1.7081783e-003 + 9.5156584e-004 + 2.6227258e-004 + -3.5062204e-004 + -9.1172274e-004 + -1.4650549e-003 + -2.0652348e-003 + -2.7551470e-003 + -3.5483120e-003 + -4.4452893e-003 + -5.4288278e-003 + -6.4609093e-003 + -7.5030462e-003 + -8.5213555e-003 + -9.4957499e-003 + -1.0425714e-002 + -1.1324603e-002 + -1.2214208e-002 + -1.3110396e-002 + -1.4016514e-002 + -1.4932650e-002 + -1.5851603e-002 + -1.6756319e-002 + -1.7649946e-002 + -1.8564267e-002 + -1.9538413e-002 + -2.0597058e-002 + -2.1716894e-002 + -2.2817322e-002 + -2.3791891e-002 + -2.4548981e-002 + -2.5042365e-002 + -2.5281995e-002 + -2.5324549e-002 + -2.5256283e-002 + -2.5169815e-002 + -2.5126094e-002 + -2.5126433e-002 + -2.5123132e-002 + -2.5056182e-002 + -2.4890306e-002 + -2.4631174e-002 + -2.4321440e-002 + -2.4029214e-002 + -2.3828324e-002 + -2.3758640e-002 + -2.3807396e-002 + -2.3936459e-002 + -2.4102423e-002 + -2.4278916e-002 + -2.4464244e-002 + -2.4669294e-002 + -2.4910246e-002 + -2.5189025e-002 + -2.5494349e-002 + -2.5808868e-002 + -2.6117237e-002 + -2.6422005e-002 + -2.6723980e-002 + -2.7004388e-002 + -2.7248636e-002 + -2.7453518e-002 + -2.7620635e-002 + -2.7777933e-002 + -2.7979818e-002 + -2.8280337e-002 + -2.8717470e-002 + -2.9292799e-002 + -2.9969891e-002 + -3.0699620e-002 + -3.1440515e-002 + -3.2183403e-002 + -3.2951414e-002 + -3.3771983e-002 + -3.4668433e-002 + -3.5671513e-002 + -3.6806143e-002 + -3.8061456e-002 + -3.9392800e-002 + -4.0714346e-002 + -4.1901296e-002 + -4.2838911e-002 + -4.3464607e-002 + -4.3788554e-002 + -4.3877491e-002 + -4.3818376e-002 + -4.3679385e-002 + -4.3474916e-002 + -4.3181374e-002 + -4.2769860e-002 + -4.2219883e-002 + -4.1536076e-002 + -4.0752584e-002 + -3.9913202e-002 + -3.9061650e-002 + -3.8238216e-002 + -3.7454569e-002 + -3.6702112e-002 + -3.5983535e-002 + -3.5299470e-002 + -3.4641578e-002 + -3.3993188e-002 + -3.3331720e-002 + -3.2656308e-002 + -3.1974945e-002 + -3.1283067e-002 + -3.0580773e-002 + -2.9870188e-002 + -2.9137139e-002 + -2.8357090e-002 + -2.7499837e-002 + -2.6530103e-002 + -2.5442398e-002 + -2.4281757e-002 + -2.3126097e-002 + -2.2059998e-002 + -2.1141259e-002 + -2.0389943e-002 + -1.9794216e-002 + -1.9327806e-002 + -1.8966150e-002 + -1.8683306e-002 + -1.8465353e-002 + -1.8312176e-002 + -1.8218402e-002 + -1.8174379e-002 + -1.8165278e-002 + -1.8172006e-002 + -1.8185609e-002 + -1.8202675e-002 + -1.8215773e-002 + -1.8226279e-002 + -1.8257186e-002 + -1.8339803e-002 + -1.8495179e-002 + -1.8733620e-002 + -1.9053151e-002 + -1.9435705e-002 + -1.9851564e-002 + -2.0259577e-002 + -2.0626220e-002 + -2.0947761e-002 + -2.1237895e-002 + -2.1518657e-002 + -2.1819311e-002 + -2.2166455e-002 + -2.2570001e-002 + -2.3019703e-002 + -2.3495932e-002 + -2.3967532e-002 + -2.4392735e-002 + -2.4739411e-002 + -2.4991789e-002 + -2.5151533e-002 + -2.5249090e-002 + -2.5333341e-002 + -2.5445200e-002 + -2.5596505e-002 + -2.5762846e-002 + -2.5905748e-002 + -2.5993113e-002 + -2.6008303e-002 + -2.5957181e-002 + -2.5862710e-002 + -2.5769577e-002 + -2.5731836e-002 + -2.5776586e-002 + -2.5893335e-002 + -2.6046967e-002 + -2.6196577e-002 + -2.6310886e-002 + -2.6376276e-002 + -2.6400261e-002 + -2.6402194e-002 + -2.6388666e-002 + -2.6345879e-002 + -2.6247040e-002 + -2.6056296e-002 + -2.5744188e-002 + -2.5301439e-002 + -2.4742849e-002 + -2.4101208e-002 + -2.3410846e-002 + -2.2700865e-002 + -2.1988421e-002 + -2.1265450e-002 + -2.0506874e-002 + -1.9690413e-002 + -1.8795750e-002 + -1.7805276e-002 + -1.6716517e-002 + -1.5532509e-002 + -1.4257218e-002 + -1.2921965e-002 + -1.1593730e-002 + -1.0346642e-002 + -9.2237381e-003 + -8.2299128e-003 + -7.3531995e-003 + -6.5844080e-003 + -5.9326177e-003 + -5.4217127e-003 + -5.0743318e-003 + -4.8914017e-003 + -4.8474922e-003 + -4.9107313e-003 + -5.0475599e-003 + -5.2194692e-003 + -5.3898308e-003 + -5.5333054e-003 + -5.6405640e-003 + -5.7230995e-003 + -5.8158082e-003 + -5.9566255e-003 + -6.1573143e-003 + -6.3853340e-003 + -6.5801020e-003 + -6.6885200e-003 + -6.6796384e-003 + -6.5453304e-003 + -6.2914661e-003 + -5.9333654e-003 + -5.4928128e-003 + -4.9896117e-003 + -4.4460834e-003 + -3.8858566e-003 + -3.3290933e-003 + -2.8138611e-003 + -2.3953203e-003 + -2.1115807e-003 + -1.9736699e-003 + -1.9694450e-003 + -2.0717003e-003 + -2.2673000e-003 + -2.5671189e-003 + -2.9775595e-003 + -3.4782289e-003 + -4.0174419e-003 + -4.5204305e-003 + -4.9018135e-003 + -5.0814722e-003 + -5.0122380e-003 + -4.6853076e-003 + -4.1310794e-003 + -3.4330909e-003 + -2.6977456e-003 + -2.0030862e-003 + -1.3685063e-003 + -7.5498424e-004 + -1.0820816e-004 + 5.9453432e-004 + 1.3313317e-003 + 2.0596430e-003 + 2.7334008e-003 + 3.3020694e-003 + 3.7200018e-003 + 3.9634290e-003 + 4.0496061e-003 + 4.0313751e-003 + 3.9742712e-003 + 3.9304691e-003 + 3.9130086e-003 + 3.9042642e-003 + 3.8710728e-003 + 3.7750458e-003 + 3.6087478e-003 + 3.4036186e-003 + 3.1911284e-003 + 2.9859109e-003 + 2.7875487e-003 + 2.5778752e-003 + 2.3398204e-003 + 2.0637409e-003 + 1.7254034e-003 + 1.2904447e-003 + 7.3103747e-004 + 3.2538894e-005 + -7.9136209e-004 + -1.6960740e-003 + -2.6371752e-003 + -3.5865942e-003 + -4.5150029e-003 + -5.3895110e-003 + -6.1807275e-003 + -6.8768474e-003 + -7.4897097e-003 + -8.0293273e-003 + -8.5005853e-003 + -8.9126888e-003 + -9.2702042e-003 + -9.5804222e-003 + -9.8654791e-003 + -1.0148378e-002 + -1.0436484e-002 + -1.0720459e-002 + -1.0982618e-002 + -1.1209876e-002 + -1.1405228e-002 + -1.1587224e-002 + -1.1768176e-002 + -1.1947405e-002 + -1.2127435e-002 + -1.2306706e-002 + -1.2471777e-002 + -1.2607956e-002 + -1.2698747e-002 + -1.2729605e-002 + -1.2706008e-002 + -1.2652379e-002 + -1.2592115e-002 + -1.2531345e-002 + -1.2456566e-002 + -1.2355616e-002 + -1.2233571e-002 + -1.2095833e-002 + -1.1940000e-002 + -1.1776230e-002 + -1.1630128e-002 + -1.1529730e-002 + -1.1497123e-002 + -1.1542870e-002 + -1.1670186e-002 + -1.1865064e-002 + -1.2086960e-002 + -1.2290680e-002 + -1.2442584e-002 + -1.2527659e-002 + -1.2556004e-002 + -1.2561198e-002 + -1.2598956e-002 + -1.2732160e-002 + -1.2998352e-002 + -1.3396930e-002 + -1.3918025e-002 + -1.4562011e-002 + -1.5326796e-002 + -1.6194612e-002 + -1.7123177e-002 + -1.8041476e-002 + -1.8863758e-002 + -1.9523994e-002 + -2.0006978e-002 + -2.0349438e-002 + -2.0615532e-002 + -2.0871517e-002 + -2.1162569e-002 + -2.1496771e-002 + -2.1845090e-002 + -2.2161290e-002 + -2.2411039e-002 + -2.2582476e-002 + -2.2688256e-002 + -2.2764822e-002 + -2.2858056e-002 + -2.3001644e-002 + -2.3197635e-002 + -2.3428180e-002 + -2.3684375e-002 + -2.3965460e-002 + -2.4264251e-002 + -2.4562803e-002 + -2.4843003e-002 + -2.5106420e-002 + -2.5384299e-002 + -2.5723122e-002 + -2.6156736e-002 + -2.6693823e-002 + -2.7315143e-002 + -2.7976482e-002 + -2.8625647e-002 + -2.9218927e-002 + -2.9731264e-002 + -3.0157303e-002 + -3.0498899e-002 + -3.0765719e-002 + -3.0984561e-002 + -3.1177366e-002 + -3.1339206e-002 + -3.1438559e-002 + -3.1418632e-002 + -3.1219468e-002 + -3.0815318e-002 + -3.0235201e-002 + -2.9551844e-002 + -2.8847018e-002 + -2.8174412e-002 + -2.7544067e-002 + -2.6934979e-002 + -2.6312286e-002 + -2.5657335e-002 + -2.4986536e-002 + -2.4327125e-002 + -2.3691492e-002 + -2.3073193e-002 + -2.2457158e-002 + -2.1838766e-002 + -2.1232950e-002 + -2.0662259e-002 + -2.0139682e-002 + -1.9667358e-002 + -1.9252905e-002 + -1.8917843e-002 + -1.8690047e-002 + -1.8587777e-002 + -1.8603192e-002 + -1.8704015e-002 + -1.8850872e-002 + -1.9010896e-002 + -1.9158498e-002 + -1.9281359e-002 + -1.9387797e-002 + -1.9495359e-002 + -1.9626437e-002 + -1.9806226e-002 + -2.0048449e-002 + -2.0367252e-002 + -2.0800037e-002 + -2.1393906e-002 + -2.2175206e-002 + -2.3141480e-002 + -2.4268082e-002 + -2.5512079e-002 + -2.6828536e-002 + -2.8185694e-002 + -2.9563135e-002 + -3.0949401e-002 + -3.2339482e-002 + -3.3731987e-002 + -3.5123302e-002 + -3.6507729e-002 + -3.7888121e-002 + -3.9280007e-002 + -4.0715454e-002 + -4.2238267e-002 + -4.3884811e-002 + -4.5656257e-002 + -4.7492169e-002 + -4.9286120e-002 + -5.0934968e-002 + -5.2378215e-002 + -5.3618706e-002 + -5.4713849e-002 + -5.5741087e-002 + -5.6768968e-002 + -5.7832762e-002 + -5.8918939e-002 + -5.9976790e-002 + -6.0940910e-002 + -6.1751316e-002 + -6.2371081e-002 + -6.2797410e-002 + -6.3063408e-002 + -6.3227241e-002 + -6.3350902e-002 + -6.3481484e-002 + -6.3642101e-002 + -6.3826136e-002 + -6.3997665e-002 + -6.4111830e-002 + -6.4147163e-002 + -6.4122812e-002 + -6.4090263e-002 + -6.4113183e-002 + -6.4256515e-002 + -6.4567150e-002 + -6.5037981e-002 + -6.5614733e-002 + -6.6232346e-002 + -6.6832767e-002 + -6.7376136e-002 + -6.7852091e-002 + -6.8282097e-002 + -6.8699230e-002 + -6.9129528e-002 + -6.9587737e-002 + -7.0086379e-002 + -7.0647167e-002 + -7.1289077e-002 + -7.2025220e-002 + -7.2863949e-002 + -7.3799514e-002 + -7.4817347e-002 + -7.5897140e-002 + -7.7002686e-002 + -7.8079230e-002 + -7.9064428e-002 + -7.9907503e-002 + -8.0598231e-002 + -8.1176042e-002 + -8.1709251e-002 + -8.2273254e-002 + -8.2924669e-002 + -8.3684551e-002 + -8.4536222e-002 + -8.5422741e-002 + -8.6266529e-002 + -8.7003794e-002 + -8.7598193e-002 + -8.8039092e-002 + -8.8320727e-002 + -8.8418704e-002 + -8.8304890e-002 + -8.7975440e-002 + -8.7462632e-002 + -8.6827527e-002 + -8.6131993e-002 + -8.5418078e-002 + -8.4709744e-002 + -8.4021294e-002 + -8.3358875e-002 + -8.2712002e-002 + -8.2056565e-002 + -8.1364760e-002 + -8.0603763e-002 + -7.9739047e-002 + -7.8748885e-002 + -7.7636342e-002 + -7.6421026e-002 + -7.5123851e-002 + -7.3775879e-002 + -7.2432589e-002 + -7.1155965e-002 + -6.9986038e-002 + -6.8934342e-002 + -6.7988931e-002 + -6.7125464e-002 + -6.6317568e-002 + -6.5544684e-002 + -6.4805513e-002 + -6.4114701e-002 + -6.3489437e-002 + -6.2947961e-002 + -6.2507285e-002 + -6.2182786e-002 + -6.1987779e-002 + -6.1915779e-002 + -6.1918733e-002 + -6.1917898e-002 + -6.1839646e-002 + -6.1631705e-002 + -6.1265837e-002 + -6.0745942e-002 + -6.0103621e-002 + -5.9383451e-002 + -5.8631806e-002 + -5.7875202e-002 + -5.7113306e-002 + -5.6335453e-002 + -5.5534856e-002 + -5.4720618e-002 + -5.3909653e-002 + -5.3114849e-002 + -5.2344112e-002 + -5.1595134e-002 + -5.0851860e-002 + -5.0083181e-002 + -4.9243777e-002 + -4.8283896e-002 + -4.7161538e-002 + -4.5862052e-002 + -4.4417561e-002 + -4.2894151e-002 + -4.1370653e-002 + -3.9928685e-002 + -3.8638017e-002 + -3.7537736e-002 + -3.6622054e-002 + -3.5847070e-002 + -3.5150914e-002 + -3.4478290e-002 + -3.3796788e-002 + -3.3089844e-002 + -3.2357685e-002 + -3.1614416e-002 + -3.0871933e-002 + -3.0136676e-002 + -2.9411886e-002 + -2.8697626e-002 + -2.7990599e-002 + -2.7285712e-002 + -2.6576422e-002 + -2.5860283e-002 + -2.5135615e-002 + -2.4386642e-002 + -2.3579423e-002 + -2.2678780e-002 + -2.1667603e-002 + -2.0536972e-002 + -1.9278250e-002 + -1.7897681e-002 + -1.6427917e-002 + -1.4928264e-002 + -1.3462864e-002 + -1.2066931e-002 + -1.0740195e-002 + -9.4669202e-003 + -8.2291185e-003 + -7.0113019e-003 + -5.8052478e-003 + -4.6091829e-003 + -3.4217214e-003 + -2.2346322e-003 + -1.0278912e-003 + 2.3119460e-004 + 1.5678607e-003 + 2.9823691e-003 + 4.4525922e-003 + 5.9322008e-003 + 7.3728101e-003 + 8.7629365e-003 + 1.0127100e-002 + 1.1488656e-002 + 1.2839732e-002 + 1.4138023e-002 + 1.5326139e-002 + 1.6361597e-002 + 1.7239582e-002 + 1.7988510e-002 + 1.8647922e-002 + 1.9255049e-002 + 1.9846420e-002 + 2.0458069e-002 + 2.1108289e-002 + 2.1802075e-002 + 2.2549237e-002 + 2.3359305e-002 + 2.4232957e-002 + 2.5153492e-002 + 2.6091072e-002 + 2.7010809e-002 + 2.7869044e-002 + 2.8627756e-002 + 2.9267303e-002 + 2.9771527e-002 + 3.0120827e-002 + 3.0307118e-002 + 3.0362033e-002 + 3.0367600e-002 + 3.0418017e-002 + 3.0577718e-002 + 3.0860821e-002 + 3.1234274e-002 + 3.1641741e-002 + 3.2015592e-002 + 3.2301484e-002 + 3.2483555e-002 + 3.2579397e-002 + 3.2632646e-002 + 3.2697492e-002 + 3.2822637e-002 + 3.3040534e-002 + 3.3349287e-002 + 3.3707424e-002 + 3.4048103e-002 + 3.4314655e-002 + 3.4484066e-002 + 3.4554290e-002 + 3.4549245e-002 + 3.4540265e-002 + 3.4624286e-002 + 3.4879419e-002 + 3.5334852e-002 + 3.5943188e-002 + 3.6589633e-002 + 3.7148251e-002 + 3.7537043e-002 + 3.7745741e-002 + 3.7822023e-002 + 3.7825279e-002 + 3.7791530e-002 + 3.7728548e-002 + 3.7633052e-002 + 3.7520935e-002 + 3.7409132e-002 + 3.7296224e-002 + 3.7186600e-002 + 3.7075733e-002 + 3.6949631e-002 + 3.6807388e-002 + 3.6654004e-002 + 3.6495809e-002 + 3.6336371e-002 + 3.6176007e-002 + 3.6016214e-002 + 3.5858188e-002 + 3.5690309e-002 + 3.5479902e-002 + 3.5196190e-002 + 3.4830339e-002 + 3.4392577e-002 + 3.3902100e-002 + 3.3387099e-002 + 3.2886160e-002 + 3.2420390e-002 + 3.1988494e-002 + 3.1598934e-002 + 3.1276883e-002 + 3.1061510e-002 + 3.1004795e-002 + 3.1137391e-002 + 3.1448129e-002 + 3.1898182e-002 + 3.2428221e-002 + 3.2971324e-002 + 3.3463640e-002 + 3.3860856e-002 + 3.4159281e-002 + 3.4378843e-002 + 3.4539162e-002 + 3.4658142e-002 + 3.4751860e-002 + 3.4819565e-002 + 3.4837993e-002 + 3.4786405e-002 + 3.4661970e-002 + 3.4480572e-002 + 3.4269223e-002 + 3.4031124e-002 + 3.3753877e-002 + 3.3449571e-002 + 3.3147353e-002 + 3.2888184e-002 + 3.2711853e-002 + 3.2623476e-002 + 3.2592550e-002 + 3.2569987e-002 + 3.2497536e-002 + 3.2315024e-002 + 3.1995371e-002 + 3.1560569e-002 + 3.1060858e-002 + 3.0561513e-002 + 3.0117234e-002 + 2.9735961e-002 + 2.9358226e-002 + 2.8897062e-002 + 2.8300208e-002 + 2.7573362e-002 + 2.6792048e-002 + 2.6071081e-002 + 2.5516812e-002 + 2.5210063e-002 + 2.5175531e-002 + 2.5366695e-002 + 2.5693218e-002 + 2.6044058e-002 + 2.6313589e-002 + 2.6442282e-002 + 2.6440670e-002 + 2.6374800e-002 + 2.6334905e-002 + 2.6414651e-002 + 2.6676991e-002 + 2.7131382e-002 + 2.7747550e-002 + 2.8473472e-002 + 2.9252824e-002 + 3.0055774e-002 + 3.0903006e-002 + 3.1841270e-002 + 3.2884619e-002 + 3.3982286e-002 + 3.5045708e-002 + 3.5989120e-002 + 3.6753161e-002 + 3.7328068e-002 + 3.7759749e-002 + 3.8131675e-002 + 3.8530319e-002 + 3.9003253e-002 + 3.9550364e-002 + 4.0137018e-002 + 4.0703912e-002 + 4.1197316e-002 + 4.1589468e-002 + 4.1884549e-002 + 4.2124835e-002 + 4.2370248e-002 + 4.2669658e-002 + 4.3044677e-002 + 4.3480387e-002 + 4.3930759e-002 + 4.4348082e-002 + 4.4702550e-002 + 4.4987486e-002 + 4.5235579e-002 + 4.5505878e-002 + 4.5839034e-002 + 4.6225747e-002 + 4.6601959e-002 + 4.6883093e-002 + 4.7016922e-002 + 4.7011949e-002 + 4.6931898e-002 + 4.6861104e-002 + 4.6858523e-002 + 4.6936109e-002 + 4.7076810e-002 + 4.7264506e-002 + 4.7504270e-002 + 4.7829397e-002 + 4.8268081e-002 + 4.8811499e-002 + 4.9428176e-002 + 5.0079329e-002 + 5.0725859e-002 + 5.1330114e-002 + 5.1859823e-002 + 5.2298626e-002 + 5.2641827e-002 + 5.2892601e-002 + 5.3070082e-002 + 5.3216999e-002 + 5.3397024e-002 + 5.3661620e-002 + 5.4014531e-002 + 5.4425189e-002 + 5.4856600e-002 + 5.5285886e-002 + 5.5715139e-002 + 5.6155906e-002 + 5.6618291e-002 + 5.7110713e-002 + 5.7639489e-002 + 5.8205907e-002 + 5.8801306e-002 + 5.9414253e-002 + 6.0034301e-002 + 6.0644614e-002 + 6.1219652e-002 + 6.1730256e-002 + 6.2145051e-002 + 6.2414627e-002 + 6.2468879e-002 + 6.2258554e-002 + 6.1796251e-002 + 6.1168580e-002 + 6.0518309e-002 + 5.9984944e-002 + 5.9640385e-002 + 5.9471438e-002 + 5.9408990e-002 + 5.9370355e-002 + 5.9289720e-002 + 5.9136193e-002 + 5.8917119e-002 + 5.8654998e-002 + 5.8358878e-002 + 5.8005231e-002 + 5.7548038e-002 + 5.6957728e-002 + 5.6243936e-002 + 5.5462278e-002 + 5.4698030e-002 + 5.4033015e-002 + 5.3528506e-002 + 5.3209608e-002 + 5.3072832e-002 + 5.3112130e-002 + 5.3317057e-002 + 5.3674800e-002 + 5.4182593e-002 + 5.4839372e-002 + 5.5627574e-002 + 5.6511055e-002 + 5.7450663e-002 + 5.8411372e-002 + 5.9351881e-002 + 6.0219116e-002 + 6.0959366e-002 + 6.1541885e-002 + 6.1973360e-002 + 6.2283671e-002 + 6.2512852e-002 + 6.2697079e-002 + 6.2851388e-002 + 6.2980272e-002 + 6.3084678e-002 + 6.3158942e-002 + 6.3200239e-002 + 6.3221159e-002 + 6.3267802e-002 + 6.3406512e-002 + 6.3674055e-002 + 6.4049359e-002 + 6.4460882e-002 + 6.4824589e-002 + 6.5079202e-002 + 6.5199672e-002 + 6.5208178e-002 + 6.5160050e-002 + 6.5105977e-002 + 6.5068562e-002 + 6.5033045e-002 + 6.4957967e-002 + 6.4808352e-002 + 6.4579947e-002 + 6.4301635e-002 + 6.4010676e-002 + 6.3713696e-002 + 6.3383737e-002 + 6.2981864e-002 + 6.2476165e-002 + 6.1861232e-002 + 6.1144960e-002 + 6.0337618e-002 + 5.9462088e-002 + 5.8540443e-002 + 5.7590883e-002 + 5.6639934e-002 + 5.5726156e-002 + 5.4897192e-002 + 5.4177613e-002 + 5.3551237e-002 + 5.2996786e-002 + 5.2517092e-002 + 5.2135579e-002 + 5.1868488e-002 + 5.1703813e-002 + 5.1613108e-002 + 5.1566532e-002 + 5.1539005e-002 + 5.1515884e-002 + 5.1495412e-002 + 5.1473397e-002 + 5.1435548e-002 + 5.1367425e-002 + 5.1250609e-002 + 5.1061815e-002 + 5.0791399e-002 + 5.0457006e-002 + 5.0088501e-002 + 4.9706357e-002 + 4.9302591e-002 + 4.8825598e-002 + 4.8209948e-002 + 4.7426486e-002 + 4.6503693e-002 + 4.5517691e-002 + 4.4567329e-002 + 4.3743543e-002 + 4.3096340e-002 + 4.2634369e-002 + 4.2337343e-002 + 4.2161481e-002 + 4.2065554e-002 + 4.2024107e-002 + 4.2025210e-002 + 4.2067897e-002 + 4.2145329e-002 + 4.2235516e-002 + 4.2299446e-002 + 4.2289218e-002 + 4.2176720e-002 + 4.1980608e-002 + 4.1761600e-002 + 4.1571153e-002 + 4.1410802e-002 + 4.1242350e-002 + 4.1022282e-002 + 4.0734677e-002 + 4.0395054e-002 + 4.0029170e-002 + 3.9656147e-002 + 3.9284575e-002 + 3.8908475e-002 + 3.8504344e-002 + 3.8052260e-002 + 3.7553248e-002 + 3.7013765e-002 + 3.6447876e-002 + 3.5889668e-002 + 3.5372116e-002 + 3.4918732e-002 + 3.4551304e-002 + 3.4280344e-002 + 3.4092409e-002 + 3.3944608e-002 + 3.3783036e-002 + 3.3568091e-002 + 3.3275267e-002 + 3.2893932e-002 + 3.2436513e-002 + 3.1933150e-002 + 3.1419776e-002 + 3.0932240e-002 + 3.0484704e-002 + 3.0064067e-002 + 2.9653201e-002 + 2.9235426e-002 + 2.8792052e-002 + 2.8320845e-002 + 2.7847102e-002 + 2.7416234e-002 + 2.7080152e-002 + 2.6871866e-002 + 2.6789169e-002 + 2.6801815e-002 + 2.6872556e-002 + 2.6975557e-002 + 2.7088902e-002 + 2.7184524e-002 + 2.7229478e-002 + 2.7182590e-002 + 2.6999553e-002 + 2.6652451e-002 + 2.6152722e-002 + 2.5551428e-002 + 2.4916576e-002 + 2.4310382e-002 + 2.3762222e-002 + 2.3263360e-002 + 2.2787707e-002 + 2.2302556e-002 + 2.1776866e-002 + 2.1198203e-002 + 2.0580374e-002 + 1.9949904e-002 + 1.9332952e-002 + 1.8750958e-002 + 1.8221250e-002 + 1.7780043e-002 + 1.7482757e-002 + 1.7356029e-002 + 1.7380550e-002 + 1.7500346e-002 + 1.7632939e-002 + 1.7724334e-002 + 1.7789256e-002 + 1.7886750e-002 + 1.8067053e-002 + 1.8323639e-002 + 1.8590267e-002 + 1.8771327e-002 + 1.8791411e-002 + 1.8636781e-002 + 1.8351395e-002 + 1.8016612e-002 + 1.7706065e-002 + 1.7451396e-002 + 1.7255628e-002 + 1.7100062e-002 + 1.6957810e-002 + 1.6810714e-002 + 1.6639799e-002 + 1.6424265e-002 + 1.6151622e-002 + 1.5824457e-002 + 1.5457897e-002 + 1.5061354e-002 + 1.4634943e-002 + 1.4162214e-002 + 1.3611235e-002 + 1.2969181e-002 + 1.2258937e-002 + 1.1536736e-002 + 1.0875736e-002 + 1.0345682e-002 + 9.9936118e-003 + 9.8149744e-003 + 9.7552144e-003 + 9.7419903e-003 + 9.7082526e-003 + 9.6022850e-003 + 9.3908512e-003 + 9.0673964e-003 + 8.6581493e-003 + 8.2022619e-003 + 7.7389120e-003 + 7.3095030e-003 + 6.9412230e-003 + 6.6310662e-003 + 6.3575740e-003 + 6.0900873e-003 + 5.7928985e-003 + 5.4501856e-003 + 5.0669443e-003 + 4.6509404e-003 + 4.2116443e-003 + 3.7535227e-003 + 3.2732618e-003 + 2.7761579e-003 + 2.2840970e-003 + 1.8167888e-003 + 1.3768228e-003 + 9.5266775e-004 + 5.1059851e-004 + -9.0334379e-007 + -6.0929392e-004 + -1.3026577e-003 + -2.0567265e-003 + -2.8483255e-003 + -3.6573100e-003 + -4.4727147e-003 + -5.2831103e-003 + -6.0764148e-003 + -6.8575418e-003 + -7.6391586e-003 + -8.4353943e-003 + -9.2739126e-003 + -1.0188661e-002 + -1.1194628e-002 + -1.2263056e-002 + -1.3322308e-002 + -1.4297104e-002 + -1.5141942e-002 + -1.5841908e-002 + -1.6420473e-002 + -1.6932986e-002 + -1.7433695e-002 + -1.7951404e-002 + -1.8477644e-002 + -1.8983399e-002 + -1.9434760e-002 + -1.9801545e-002 + -2.0079028e-002 + -2.0283785e-002 + -2.0443482e-002 + -2.0593247e-002 + -2.0762263e-002 + -2.0975427e-002 + -2.1250546e-002 + -2.1578176e-002 + -2.1928068e-002 + -2.2285618e-002 + -2.2662402e-002 + -2.3072198e-002 + -2.3521645e-002 + -2.4010223e-002 + -2.4518158e-002 + -2.5017418e-002 + -2.5495501e-002 + -2.5956946e-002 + -2.6418118e-002 + -2.6899396e-002 + -2.7421824e-002 + -2.7998478e-002 + -2.8622746e-002 + -2.9275499e-002 + -2.9919531e-002 + -3.0503332e-002 + -3.0991047e-002 + -3.1369120e-002 + -3.1634948e-002 + -3.1800623e-002 + -3.1901295e-002 + -3.1986423e-002 + -3.2104194e-002 + -3.2292672e-002 + -3.2564093e-002 + -3.2895932e-002 + -3.3261733e-002 + -3.3649851e-002 + -3.4061181e-002 + -3.4511894e-002 + -3.5022634e-002 + -3.5605543e-002 + -3.6245424e-002 + -3.6908742e-002 + -3.7562496e-002 + -3.8160981e-002 + -3.8660022e-002 + -3.9050851e-002 + -3.9365969e-002 + -3.9659903e-002 + -3.9979600e-002 + -4.0349247e-002 + -4.0769038e-002 + -4.1226338e-002 + -4.1716751e-002 + -4.2249143e-002 + -4.2843191e-002 + -4.3508351e-002 + -4.4228622e-002 + -4.4982174e-002 + -4.5755350e-002 + -4.6537977e-002 + -4.7320838e-002 + -4.8111409e-002 + -4.8921792e-002 + -4.9751821e-002 + -5.0598065e-002 + -5.1438095e-002 + -5.2237429e-002 + -5.2984479e-002 + -5.3689411e-002 + -5.4369880e-002 + -5.5028290e-002 + -5.5646656e-002 + -5.6221719e-002 + -5.6769036e-002 + -5.7311347e-002 + -5.7879524e-002 + -5.8495926e-002 + -5.9160383e-002 + -5.9856423e-002 + -6.0570962e-002 + -6.1301953e-002 + -6.2053383e-002 + -6.2833667e-002 + -6.3636580e-002 + -6.4439766e-002 + -6.5227035e-002 + -6.5979325e-002 + -6.6676025e-002 + -6.7320701e-002 + -6.7940341e-002 + -6.8570155e-002 + -6.9238786e-002 + -6.9952621e-002 + -7.0706049e-002 + -7.1495130e-002 + -7.2309163e-002 + -7.3145091e-002 + -7.4019924e-002 + -7.4951483e-002 + -7.5945203e-002 + -7.6986915e-002 + -7.8048061e-002 + -7.9099324e-002 + -8.0118165e-002 + -8.1100362e-002 + -8.2058869e-002 + -8.3012290e-002 + -8.3974062e-002 + -8.4952381e-002 + -8.5958825e-002 + -8.6994647e-002 + -8.8041890e-002 + -8.9074943e-002 + -9.0057923e-002 + -9.0948402e-002 + -9.1727571e-002 + -9.2425161e-002 + -9.3111530e-002 + -9.3857380e-002 + -9.4699742e-002 + -9.5638550e-002 + -9.6652396e-002 + -9.7711522e-002 + -9.8784227e-002 + -9.9843082e-002 + -1.0086997e-001 + -1.0185891e-001 + -1.0281389e-001 + -1.0375067e-001 + -1.0468343e-001 + -1.0561408e-001 + -1.0653948e-001 + -1.0745085e-001 + -1.0833365e-001 + -1.0916018e-001 + -1.0988277e-001 + -1.1044890e-001 + -1.1081826e-001 + -1.1098079e-001 + -1.1097701e-001 + -1.1086984e-001 + -1.1071223e-001 + -1.1054431e-001 + -1.1037283e-001 + -1.1018841e-001 + -1.1000099e-001 + -1.0983799e-001 + -1.0974065e-001 + -1.0974133e-001 + -1.0983361e-001 + -1.0998328e-001 + -1.1015461e-001 + -1.1032577e-001 + -1.1048742e-001 + -1.1063014e-001 + -1.1075033e-001 + -1.1085800e-001 + -1.1096911e-001 + -1.1108725e-001 + -1.1119103e-001 + -1.1124552e-001 + -1.1121247e-001 + -1.1106355e-001 + -1.1079836e-001 + -1.1043914e-001 + -1.1002340e-001 + -1.0960323e-001 + -1.0922023e-001 + -1.0888020e-001 + -1.0856281e-001 + -1.0823878e-001 + -1.0788072e-001 + -1.0748401e-001 + -1.0707486e-001 + -1.0668162e-001 + -1.0630431e-001 + -1.0591974e-001 + -1.0550914e-001 + -1.0507754e-001 + -1.0464483e-001 + -1.0422421e-001 + -1.0382085e-001 + -1.0343398e-001 + -1.0304309e-001 + -1.0260493e-001 + -1.0207304e-001 + -1.0142378e-001 + -1.0066669e-001 + -9.9845273e-002 + -9.9027003e-002 + -9.8258444e-002 + -9.7537839e-002 + -9.6836861e-002 + -9.6134860e-002 + -9.5441637e-002 + -9.4791498e-002 + -9.4217781e-002 + -9.3726521e-002 + -9.3285416e-002 + -9.2842565e-002 + -9.2350174e-002 + -9.1775284e-002 + -9.1116383e-002 + -9.0405689e-002 + -8.9690230e-002 + -8.9018319e-002 + -8.8426657e-002 + -8.7930665e-002 + -8.7524470e-002 + -8.7185296e-002 + -8.6878281e-002 + -8.6565075e-002 + -8.6223033e-002 + -8.5861911e-002 + -8.5516606e-002 + -8.5236506e-002 + -8.5075536e-002 + -8.5062678e-002 + -8.5185518e-002 + -8.5400099e-002 + -8.5647269e-002 + -8.5868773e-002 + -8.6014414e-002 + -8.6045512e-002 + -8.5945415e-002 + -8.5716777e-002 + -8.5363959e-002 + -8.4889818e-002 + -8.4304003e-002 + -8.3621474e-002 + -8.2859359e-002 + -8.2040277e-002 + -8.1193031e-002 + -8.0350211e-002 + -7.9539123e-002 + -7.8778609e-002 + -7.8082033e-002 + -7.7449383e-002 + -7.6866539e-002 + -7.6317626e-002 + -7.5782295e-002 + -7.5230797e-002 + -7.4634429e-002 + -7.3982098e-002 + -7.3280133e-002 + -7.2530800e-002 + -7.1746260e-002 + -7.0970669e-002 + -7.0259643e-002 + -6.9648389e-002 + -6.9138101e-002 + -6.8690168e-002 + -6.8222207e-002 + -6.7658664e-002 + -6.6988788e-002 + -6.6244975e-002 + -6.5465929e-002 + -6.4695373e-002 + -6.3974516e-002 + -6.3315312e-002 + -6.2692424e-002 + -6.2072032e-002 + -6.1428526e-002 + -6.0739986e-002 + -5.9998370e-002 + -5.9215638e-002 + -5.8413160e-002 + -5.7613029e-002 + -5.6831129e-002 + -5.6066676e-002 + -5.5303836e-002 + -5.4518822e-002 + -5.3691751e-002 + -5.2816264e-002 + -5.1895753e-002 + -5.0945827e-002 + -4.9984955e-002 + -4.9022563e-002 + -4.8058382e-002 + -4.7079583e-002 + -4.6069753e-002 + -4.5031865e-002 + -4.3993788e-002 + -4.2973148e-002 + -4.1963731e-002 + -4.0947219e-002 + -3.9902060e-002 + -3.8831277e-002 + -3.7772959e-002 + -3.6786639e-002 + -3.5907931e-002 + -3.5116690e-002 + -3.4367054e-002 + -3.3610158e-002 + -3.2824476e-002 + -3.2048529e-002 + -3.1351398e-002 + -3.0786767e-002 + -3.0369884e-002 + -3.0082963e-002 + -2.9895559e-002 + -2.9759820e-002 + -2.9607804e-002 + -2.9380951e-002 + -2.9041900e-002 + -2.8568265e-002 + -2.7967448e-002 + -2.7277610e-002 + -2.6546841e-002 + -2.5816992e-002 + -2.5119294e-002 + -2.4476645e-002 + -2.3884832e-002 + -2.3311488e-002 + -2.2732220e-002 + -2.2143627e-002 + -2.1571075e-002 + -2.1064011e-002 + -2.0650840e-002 + -2.0308023e-002 + -1.9964822e-002 + -1.9529324e-002 + -1.8932057e-002 + -1.8156476e-002 + -1.7235713e-002 + -1.6239496e-002 + -1.5237826e-002 + -1.4259320e-002 + -1.3302217e-002 + -1.2351319e-002 + -1.1388060e-002 + -1.0416537e-002 + -9.4454056e-003 + -8.4758247e-003 + -7.5130058e-003 + -6.5379806e-003 + -5.5050353e-003 + -4.3735011e-003 + -3.1270093e-003 + -1.7749437e-003 + -3.4392903e-004 + 1.1366318e-003 + 2.6644603e-003 + 4.2671165e-003 + 5.9721549e-003 + 7.7939125e-003 + 9.7120827e-003 + 1.1653882e-002 + 1.3545616e-002 + 1.5366756e-002 + 1.7144645e-002 + 1.8935043e-002 + 2.0785484e-002 + 2.2705101e-002 + 2.4672161e-002 + 2.6645565e-002 + 2.8576579e-002 + 3.0421715e-002 + 3.2163043e-002 + 3.3809291e-002 + 3.5376656e-002 + 3.6885390e-002 + 3.8345116e-002 + 3.9757798e-002 + 4.1140958e-002 + 4.2516450e-002 + 4.3901063e-002 + 4.5290953e-002 + 4.6657057e-002 + 4.7971217e-002 + 4.9202554e-002 + 5.0330195e-002 + 5.1365230e-002 + 5.2339391e-002 + 5.3294152e-002 + 5.4264204e-002 + 5.5264180e-002 + 5.6287778e-002 + 5.7320513e-002 + 5.8351574e-002 + 5.9370915e-002 + 6.0381204e-002 + 6.1395105e-002 + 6.2415905e-002 + 6.3440854e-002 + 6.4477385e-002 + 6.5529113e-002 + 6.6589338e-002 + 6.7666346e-002 + 6.8769664e-002 + 6.9894407e-002 + 7.1024814e-002 + 7.2140272e-002 + 7.3226587e-002 + 7.4292664e-002 + 7.5375047e-002 + 7.6496573e-002 + 7.7644641e-002 + 7.8799506e-002 + 7.9945180e-002 + 8.1059043e-002 + 8.2127728e-002 + 8.3158997e-002 + 8.4163342e-002 + 8.5140996e-002 + 8.6092952e-002 + 8.7018225e-002 + 8.7901160e-002 + 8.8745129e-002 + 8.9575979e-002 + 9.0406309e-002 + 9.1238330e-002 + 9.2070214e-002 + 9.2898675e-002 + 9.3711179e-002 + 9.4476249e-002 + 9.5169881e-002 + 9.5780880e-002 + 9.6302572e-002 + 9.6745267e-002 + 9.7122855e-002 + 9.7448328e-002 + 9.7744030e-002 + 9.8030587e-002 + 9.8316614e-002 + 9.8598757e-002 + 9.8866480e-002 + 9.9105937e-002 + 9.9312452e-002 + 9.9497789e-002 + 9.9678686e-002 + 9.9867431e-002 + 1.0005649e-001 + 1.0020586e-001 + 1.0027180e-001 + 1.0024643e-001 + 1.0015674e-001 + 1.0005185e-001 + 9.9989160e-002 + 1.0001187e-001 + 1.0014660e-001 + 1.0039448e-001 + 1.0072839e-001 + 1.0110953e-001 + 1.0149510e-001 + 1.0183594e-001 + 1.0208203e-001 + 1.0221783e-001 + 1.0224826e-001 + 1.0217529e-001 + 1.0202608e-001 + 1.0183922e-001 + 1.0164151e-001 + 1.0144632e-001 + 1.0124243e-001 + 1.0098861e-001 + 1.0064306e-001 + 1.0019588e-001 + 9.9663634e-002 + 9.9090922e-002 + 9.8530197e-002 + 9.8004535e-002 + 9.7509652e-002 + 9.7024314e-002 + 9.6520800e-002 + 9.5983046e-002 + 9.5403108e-002 + 9.4764687e-002 + 9.4054368e-002 + 9.3283442e-002 + 9.2487583e-002 + 9.1713362e-002 + 9.1006699e-002 + 9.0386676e-002 + 8.9850864e-002 + 8.9403759e-002 + 8.9046260e-002 + 8.8779962e-002 + 8.8592646e-002 + 8.8421450e-002 + 8.8187713e-002 + 8.7848121e-002 + 8.7405224e-002 + 8.6910291e-002 + 8.6450041e-002 + 8.6106286e-002 + 8.5909481e-002 + 8.5829710e-002 + 8.5819530e-002 + 8.5828103e-002 + 8.5807767e-002 + 8.5741011e-002 + 8.5627658e-002 + 8.5476819e-002 + 8.5301122e-002 + 8.5098853e-002 + 8.4869892e-002 + 8.4628783e-002 + 8.4386665e-002 + 8.4143557e-002 + 8.3879744e-002 + 8.3563896e-002 + 8.3189117e-002 + 8.2763093e-002 + 8.2306514e-002 + 8.1850082e-002 + 8.1403942e-002 + 8.0978779e-002 + 8.0593099e-002 + 8.0254583e-002 + 7.9972291e-002 + 7.9755075e-002 + 7.9595537e-002 + 7.9471395e-002 + 7.9358332e-002 + 7.9227319e-002 + 7.9031627e-002 + 7.8729727e-002 + 7.8313789e-002 + 7.7817316e-002 + 7.7297338e-002 + 7.6799369e-002 + 7.6353068e-002 + 7.5977414e-002 + 7.5672936e-002 + 7.5413511e-002 + 7.5157053e-002 + 7.4876593e-002 + 7.4581097e-002 + 7.4310187e-002 + 7.4107201e-002 + 7.4009073e-002 + 7.4035935e-002 + 7.4174863e-002 + 7.4395459e-002 + 7.4644770e-002 + 7.4844827e-002 + 7.4931946e-002 + 7.4873758e-002 + 7.4664309e-002 + 7.4340859e-002 + 7.3993351e-002 + 7.3714300e-002 + 7.3556268e-002 + 7.3534182e-002 + 7.3598808e-002 + 7.3643022e-002 + 7.3573081e-002 + 7.3343048e-002 + 7.2955051e-002 + 7.2455206e-002 + 7.1915663e-002 + 7.1411756e-002 + 7.0990322e-002 + 7.0653228e-002 + 7.0373723e-002 + 7.0119563e-002 + 6.9867076e-002 + 6.9599894e-002 + 6.9315927e-002 + 6.9026361e-002 + 6.8732552e-002 + 6.8427935e-002 + 6.8107808e-002 + 6.7760028e-002 + 6.7376885e-002 + 6.6966355e-002 + 6.6522879e-002 + 6.6032534e-002 + 6.5506517e-002 + 6.4969781e-002 + 6.4443653e-002 + 6.3947655e-002 + 6.3492966e-002 + 6.3068753e-002 + 6.2647271e-002 + 6.2202427e-002 + 6.1724330e-002 + 6.1233823e-002 + 6.0768683e-002 + 6.0341665e-002 + 5.9941807e-002 + 5.9554429e-002 + 5.9163057e-002 + 5.8770578e-002 + 5.8385527e-002 + 5.7995327e-002 + 5.7585304e-002 + 5.7144113e-002 + 5.6667614e-002 + 5.6174958e-002 + 5.5695087e-002 + 5.5241335e-002 + 5.4809717e-002 + 5.4387512e-002 + 5.3947737e-002 + 5.3468505e-002 + 5.2960119e-002 + 5.2441531e-002 + 5.1931372e-002 + 5.1449899e-002 + 5.1010295e-002 + 5.0633287e-002 + 5.0326861e-002 + 5.0072344e-002 + 4.9850348e-002 + 4.9646439e-002 + 4.9443370e-002 + 4.9220210e-002 + 4.8968522e-002 + 4.8698979e-002 + 4.8433180e-002 + 4.8192105e-002 + 4.7989082e-002 + 4.7833169e-002 + 4.7707809e-002 + 4.7564450e-002 + 4.7342198e-002 + 4.6993928e-002 + 4.6528560e-002 + 4.5995594e-002 + 4.5448679e-002 + 4.4943366e-002 + 4.4514692e-002 + 4.4164460e-002 + 4.3879430e-002 + 4.3642510e-002 + 4.3429552e-002 + 4.3213991e-002 + 4.2983625e-002 + 4.2740053e-002 + 4.2489824e-002 + 4.2236152e-002 + 4.1966751e-002 + 4.1669743e-002 + 4.1346807e-002 + 4.0995978e-002 + 4.0615506e-002 + 4.0212571e-002 + 3.9798983e-002 + 3.9399387e-002 + 3.9048239e-002 + 3.8778839e-002 + 3.8611991e-002 + 3.8541783e-002 + 3.8529570e-002 + 3.8498345e-002 + 3.8358548e-002 + 3.8052800e-002 + 3.7577380e-002 + 3.6987975e-002 + 3.6368328e-002 + 3.5778724e-002 + 3.5235587e-002 + 3.4718289e-002 + 3.4190231e-002 + 3.3615170e-002 + 3.2966685e-002 + 3.2242430e-002 + 3.1458544e-002 + 3.0647606e-002 + 2.9856508e-002 + 2.9109812e-002 + 2.8400193e-002 + 2.7694506e-002 + 2.6932772e-002 + 2.6069690e-002 + 2.5101765e-002 + 2.4058567e-002 + 2.2994857e-002 + 2.1962543e-002 + 2.0982604e-002 + 2.0055049e-002 + 1.9182589e-002 + 1.8375489e-002 + 1.7651301e-002 + 1.7020574e-002 + 1.6476811e-002 + 1.6009088e-002 + 1.5602010e-002 + 1.5244077e-002 + 1.4932947e-002 + 1.4650362e-002 + 1.4360183e-002 + 1.4040190e-002 + 1.3685579e-002 + 1.3282912e-002 + 1.2812057e-002 + 1.2256627e-002 + 1.1609813e-002 + 1.0890185e-002 + 1.0128623e-002 + 9.3481611e-003 + 8.5628190e-003 + 7.7794068e-003 + 6.9949353e-003 + 6.1969330e-003 + 5.3810998e-003 + 4.5650660e-003 + 3.7981210e-003 + 3.1458955e-003 + 2.6475164e-003 + 2.2978983e-003 + 2.0415205e-003 + 1.7803899e-003 + 1.4165825e-003 + 8.8544750e-004 + 1.6516154e-004 + -7.1348674e-004 + -1.6787014e-003 + -2.6523697e-003 + -3.5742476e-003 + -4.4187407e-003 + -5.1974211e-003 + -5.9474653e-003 + -6.7191966e-003 + -7.5572473e-003 + -8.4894357e-003 + -9.5226870e-003 + -1.0631614e-002 + -1.1763385e-002 + -1.2853713e-002 + -1.3843002e-002 + -1.4701828e-002 + -1.5430442e-002 + -1.6046790e-002 + -1.6576286e-002 + -1.7035060e-002 + -1.7440866e-002 + -1.7817502e-002 + -1.8183448e-002 + -1.8545859e-002 + -1.8903139e-002 + -1.9258250e-002 + -1.9613825e-002 + -1.9972582e-002 + -2.0334111e-002 + -2.0677145e-002 + -2.0973108e-002 + -2.1213527e-002 + -2.1393988e-002 + -2.1484247e-002 + -2.1446257e-002 + -2.1250417e-002 + -2.0877065e-002 + -2.0357191e-002 + -1.9796703e-002 + -1.9325339e-002 + -1.9047245e-002 + -1.9018753e-002 + -1.9218490e-002 + -1.9558804e-002 + -1.9940559e-002 + -2.0295099e-002 + -2.0612112e-002 + -2.0932855e-002 + -2.1307249e-002 + -2.1763009e-002 + -2.2289818e-002 + -2.2855355e-002 + -2.3425976e-002 + -2.3954278e-002 + -2.4392649e-002 + -2.4734800e-002 + -2.5020045e-002 + -2.5303155e-002 + -2.5638705e-002 + -2.6069127e-002 + -2.6600701e-002 + -2.7209610e-002 + -2.7870284e-002 + -2.8568487e-002 + -2.9296987e-002 + -3.0057724e-002 + -3.0863024e-002 + -3.1716770e-002 + -3.2614402e-002 + -3.3534293e-002 + -3.4432054e-002 + -3.5278242e-002 + -3.6066318e-002 + -3.6807325e-002 + -3.7524240e-002 + -3.8225856e-002 + -3.8917634e-002 + -3.9603666e-002 + -4.0263451e-002 + -4.0881123e-002 + -4.1461170e-002 + -4.2013331e-002 + -4.2562951e-002 + -4.3135439e-002 + -4.3728784e-002 + -4.4308264e-002 + -4.4827404e-002 + -4.5264124e-002 + -4.5626965e-002 + -4.5952553e-002 + -4.6291636e-002 + -4.6674118e-002 + -4.7098630e-002 + -4.7535889e-002 + -4.7941922e-002 + -4.8301728e-002 + -4.8643071e-002 + -4.9006893e-002 + -4.9434736e-002 + -4.9958937e-002 + -5.0590743e-002 + -5.1317141e-002 + -5.2092322e-002 + -5.2853479e-002 + -5.3554715e-002 + -5.4180422e-002 + -5.4744578e-002 + -5.5286805e-002 + -5.5866114e-002 + -5.6544808e-002 + -5.7362631e-002 + -5.8322867e-002 + -5.9372842e-002 + -6.0405148e-002 + -6.1312038e-002 + -6.2028682e-002 + -6.2551385e-002 + -6.2939195e-002 + -6.3277421e-002 + -6.3635607e-002 + -6.4063846e-002 + -6.4590457e-002 + -6.5213755e-002 + -6.5921896e-002 + -6.6700636e-002 + -6.7527390e-002 + -6.8372283e-002 + -6.9203896e-002 + -6.9991700e-002 + -7.0697097e-002 + -7.1291805e-002 + -7.1780682e-002 + -7.2180329e-002 + -7.2499270e-002 + -7.2742722e-002 + -7.2908109e-002 + -7.2983559e-002 + -7.2964563e-002 + -7.2867910e-002 + -7.2738979e-002 + -7.2647398e-002 + -7.2665094e-002 + -7.2826318e-002 + -7.3108560e-002 + -7.3460963e-002 + -7.3822866e-002 + -7.4133050e-002 + -7.4353718e-002 + -7.4476686e-002 + -7.4517470e-002 + -7.4517423e-002 + -7.4531173e-002 + -7.4599938e-002 + -7.4740368e-002 + -7.4948633e-002 + -7.5205612e-002 + -7.5481630e-002 + -7.5751547e-002 + -7.6005695e-002 + -7.6243341e-002 + -7.6469562e-002 + -7.6692230e-002 + -7.6908671e-002 + -7.7105405e-002 + -7.7274113e-002 + -7.7419179e-002 + -7.7548688e-002 + -7.7666873e-002 + -7.7775862e-002 + -7.7865449e-002 + -7.7901245e-002 + -7.7837907e-002 + -7.7638343e-002 + -7.7289850e-002 + -7.6826381e-002 + -7.6320722e-002 + -7.5845045e-002 + -7.5440706e-002 + -7.5102771e-002 + -7.4791129e-002 + -7.4454862e-002 + -7.4051736e-002 + -7.3569071e-002 + -7.3020302e-002 + -7.2422848e-002 + -7.1792299e-002 + -7.1152741e-002 + -7.0529529e-002 + -6.9941547e-002 + -6.9412327e-002 + -6.8950121e-002 + -6.8538516e-002 + -6.8161491e-002 + -6.7799251e-002 + -6.7418518e-002 + -6.6986511e-002 + -6.6482118e-002 + -6.5904759e-002 + -6.5286423e-002 + -6.4673600e-002 + -6.4098110e-002 + -6.3567007e-002 + -6.3056743e-002 + -6.2528298e-002 + -6.1952633e-002 + -6.1318131e-002 + -6.0634303e-002 + -5.9936265e-002 + -5.9272156e-002 + -5.8682084e-002 + -5.8173777e-002 + -5.7710550e-002 + -5.7237221e-002 + -5.6710474e-002 + -5.6109086e-002 + -5.5437426e-002 + -5.4722875e-002 + -5.3998437e-002 + -5.3286372e-002 + -5.2596599e-002 + -5.1929619e-002 + -5.1276286e-002 + -5.0623692e-002 + -4.9961450e-002 + -4.9276531e-002 + -4.8552952e-002 + -4.7776919e-002 + -4.6933880e-002 + -4.6009689e-002 + -4.5007523e-002 + -4.3949437e-002 + -4.2862593e-002 + -4.1767917e-002 + -4.0650890e-002 + -3.9459312e-002 + -3.8149092e-002 + -3.6705402e-002 + -3.5144979e-002 + -3.3520221e-002 + -3.1901732e-002 + -3.0352432e-002 + -2.8908852e-002 + -2.7582942e-002 + -2.6371806e-002 + -2.5262476e-002 + -2.4240268e-002 + -2.3288745e-002 + -2.2391224e-002 + -2.1535031e-002 + -2.0709088e-002 + -1.9906609e-002 + -1.9126834e-002 + -1.8378772e-002 + -1.7672631e-002 + -1.7005106e-002 + -1.6364652e-002 + -1.5735873e-002 + -1.5103692e-002 + -1.4461204e-002 + -1.3817677e-002 + -1.3194928e-002 + -1.2602168e-002 + -1.2032377e-002 + -1.1473883e-002 + -1.0903096e-002 + -1.0297135e-002 + -9.6580901e-003 + -8.9968786e-003 + -8.3193632e-003 + -7.6433933e-003 + -6.9917596e-003 + -6.3808543e-003 + -5.8274694e-003 + -5.3363284e-003 + -4.8844299e-003 + -4.4301968e-003 + -3.9414838e-003 + -3.4085075e-003 + -2.8396195e-003 + -2.2560360e-003 + -1.6720988e-003 + -1.0885561e-003 + -5.0008944e-004 + 1.0542426e-004 + 7.2907824e-004 + 1.3515794e-003 + 1.9497513e-003 + 2.5022707e-003 + 2.9999612e-003 + 3.4595144e-003 + 3.9163812e-003 + 4.4072178e-003 + 4.9522424e-003 + 5.5452165e-003 + 6.1558362e-003 + 6.7531851e-003 + 7.3267999e-003 + 7.8863210e-003 + 8.4562649e-003 + 9.0557919e-003 + 9.6841931e-003 + 1.0334984e-002 + 1.1004883e-002 + 1.1683166e-002 + 1.2354939e-002 + 1.3015715e-002 + 1.3668385e-002 + 1.4309570e-002 + 1.4910279e-002 + 1.5415207e-002 + 1.5774279e-002 + 1.5987137e-002 + 1.6123785e-002 + 1.6290332e-002 + 1.6578949e-002 + 1.7033551e-002 + 1.7639051e-002 + 1.8344342e-002 + 1.9086907e-002 + 1.9813168e-002 + 2.0499265e-002 + 2.1144963e-002 + 2.1762946e-002 + 2.2372899e-002 + 2.2980680e-002 + 2.3576284e-002 + 2.4152759e-002 + 2.4709534e-002 + 2.5248764e-002 + 2.5774199e-002 + 2.6292275e-002 + 2.6817863e-002 + 2.7369296e-002 + 2.7956236e-002 + 2.8582626e-002 + 2.9255522e-002 + 2.9978650e-002 + 3.0742176e-002 + 3.1517260e-002 + 3.2260864e-002 + 3.2925172e-002 + 3.3463975e-002 + 3.3857756e-002 + 3.4128365e-002 + 3.4331974e-002 + 3.4546054e-002 + 3.4839178e-002 + 3.5243620e-002 + 3.5738452e-002 + 3.6261786e-002 + 3.6753068e-002 + 3.7165631e-002 + 3.7462737e-002 + 3.7645010e-002 + 3.7761312e-002 + 3.7877391e-002 + 3.8044356e-002 + 3.8278580e-002 + 3.8558341e-002 + 3.8841643e-002 + 3.9086183e-002 + 3.9257889e-002 + 3.9335113e-002 + 3.9313269e-002 + 3.9201949e-002 + 3.9018397e-002 + 3.8784356e-002 + 3.8521690e-002 + 3.8249879e-002 + 3.7980600e-002 + 3.7717044e-002 + 3.7462848e-002 + 3.7214560e-002 + 3.6963641e-002 + 3.6711439e-002 + 3.6460010e-002 + 3.6201757e-002 + 3.5921191e-002 + 3.5595862e-002 + 3.5202729e-002 + 3.4736735e-002 + 3.4217490e-002 + 3.3673346e-002 + 3.3135485e-002 + 3.2632775e-002 + 3.2176116e-002 + 3.1756196e-002 + 3.1346111e-002 + 3.0913171e-002 + 3.0441045e-002 + 2.9939703e-002 + 2.9442000e-002 + 2.8978669e-002 + 2.8557590e-002 + 2.8174966e-002 + 2.7817700e-002 + 2.7459140e-002 + 2.7076269e-002 + 2.6657614e-002 + 2.6199117e-002 + 2.5703458e-002 + 2.5176305e-002 + 2.4628491e-002 + 2.4081125e-002 + 2.3561632e-002 + 2.3096260e-002 + 2.2702475e-002 + 2.2374599e-002 + 2.2068121e-002 + 2.1702733e-002 + 2.1199709e-002 + 2.0522641e-002 + 1.9695001e-002 + 1.8800178e-002 + 1.7945322e-002 + 1.7209369e-002 + 1.6620724e-002 + 1.6166938e-002 + 1.5811539e-002 + 1.5507168e-002 + 1.5208140e-002 + 1.4877450e-002 + 1.4491893e-002 + 1.4049978e-002 + 1.3575151e-002 + 1.3104786e-002 + 1.2676380e-002 + 1.2310304e-002 + 1.2003770e-002 + 1.1741964e-002 + 1.1490687e-002 + 1.1207053e-002 + 1.0874714e-002 + 1.0515356e-002 + 1.0173712e-002 + 9.8833035e-003 + 9.6437169e-003 + 9.4211946e-003 + 9.1578402e-003 + 8.7943709e-003 + 8.2956586e-003 + 7.6665994e-003 + 6.9486258e-003 + 6.1941779e-003 + 5.4516641e-003 + 4.7588717e-003 + 4.1254258e-003 + 3.5304011e-003 + 2.9466629e-003 + 2.3585533e-003 + 1.7563908e-003 + 1.1323237e-003 + 4.8071200e-004 + -2.0025500e-004 + -8.9448417e-004 + -1.5680601e-003 + -2.2000182e-003 + -2.8023388e-003 + -3.4112564e-003 + -4.0724288e-003 + -4.8185029e-003 + -5.6515106e-003 + -6.5537247e-003 + -7.5029397e-003 + -8.4715617e-003 + -9.4201067e-003 + -1.0307500e-002 + -1.1115795e-002 + -1.1855767e-002 + -1.2554710e-002 + -1.3243250e-002 + -1.3947900e-002 + -1.4692848e-002 + -1.5503900e-002 + -1.6407682e-002 + -1.7416745e-002 + -1.8512018e-002 + -1.9641765e-002 + -2.0740416e-002 + -2.1759342e-002 + -2.2689660e-002 + -2.3555075e-002 + -2.4389588e-002 + -2.5228451e-002 + -2.6090338e-002 + -2.6955925e-002 + -2.7775138e-002 + -2.8496745e-002 + -2.9095607e-002 + -2.9577829e-002 + -2.9968522e-002 + -3.0296960e-002 + -3.0593208e-002 + -3.0891522e-002 + -3.1221891e-002 + -3.1598877e-002 + -3.2022556e-002 + -3.2484465e-002 + -3.2974459e-002 + -3.3481475e-002 + -3.3991885e-002 + -3.4494423e-002 + -3.4981161e-002 + -3.5447605e-002 + -3.5889596e-002 + -3.6299180e-002 + -3.6673260e-002 + -3.7028624e-002 + -3.7416274e-002 + -3.7910479e-002 + -3.8562738e-002 + -3.9359535e-002 + -4.0216840e-002 + -4.1018229e-002 + -4.1664794e-002 + -4.2106474e-002 + -4.2355471e-002 + -4.2471998e-002 + -4.2530111e-002 + -4.2584783e-002 + -4.2653371e-002 + -4.2720896e-002 + -4.2751827e-002 + -4.2707567e-002 + -4.2574135e-002 + -4.2363443e-002 + -4.2093167e-002 + -4.1784471e-002 + -4.1461141e-002 + -4.1137766e-002 + -4.0817600e-002 + -4.0496473e-002 + -4.0154975e-002 + -3.9752272e-002 + -3.9245575e-002 + -3.8618884e-002 + -3.7895256e-002 + -3.7133417e-002 + -3.6412726e-002 + -3.5806956e-002 + -3.5356611e-002 + -3.5059418e-002 + -3.4886729e-002 + -3.4798400e-002 + -3.4750000e-002 + -3.4702705e-002 + -3.4623647e-002 + -3.4486600e-002 + -3.4275942e-002 + -3.3987033e-002 + -3.3631717e-002 + -3.3239498e-002 + -3.2848131e-002 + -3.2483785e-002 + -3.2141441e-002 + -3.1793962e-002 + -3.1416570e-002 + -3.1000428e-002 + -3.0549895e-002 + -3.0068828e-002 + -2.9557467e-002 + -2.9013600e-002 + -2.8431659e-002 + -2.7810954e-002 + -2.7162702e-002 + -2.6509092e-002 + -2.5877957e-002 + -2.5287302e-002 + -2.4727852e-002 + -2.4163089e-002 + -2.3541345e-002 + -2.2820428e-002 + -2.1999003e-002 + -2.1117554e-002 + -2.0226148e-002 + -1.9359917e-002 + -1.8536236e-002 + -1.7759528e-002 + -1.7027528e-002 + -1.6332194e-002 + -1.5661736e-002 + -1.5010895e-002 + -1.4386163e-002 + -1.3798399e-002 + -1.3252927e-002 + -1.2748871e-002 + -1.2279794e-002 + -1.1827375e-002 + -1.1367635e-002 + -1.0890518e-002 + -1.0407730e-002 + -9.9446116e-003 + -9.5225615e-003 + -9.1444364e-003 + -8.7966966e-003 + -8.4624101e-003 + -8.1269339e-003 + -7.7807827e-003 + -7.4289830e-003 + -7.0967178e-003 + -6.8214528e-003 + -6.6365586e-003 + -6.5585514e-003 + -6.5870049e-003 + -6.7172056e-003 + -6.9417374e-003 + -7.2436103e-003 + -7.5995896e-003 + -7.9914802e-003 + -8.4211391e-003 + -8.9068375e-003 + -9.4574084e-003 + -1.0053994e-002 + -1.0655140e-002 + -1.1217456e-002 + -1.1714587e-002 + -1.2145518e-002 + -1.2527627e-002 + -1.2884452e-002 + -1.3240787e-002 + -1.3613859e-002 + -1.4006807e-002 + -1.4413675e-002 + -1.4825112e-002 + -1.5233691e-002 + -1.5636640e-002 + -1.6033843e-002 + -1.6427690e-002 + -1.6821220e-002 + -1.7214613e-002 + -1.7606992e-002 + -1.7996798e-002 + -1.8382432e-002 + -1.8770153e-002 + -1.9165943e-002 + -1.9547931e-002 + -1.9870279e-002 + -2.0100846e-002 + -2.0248627e-002 + -2.0363448e-002 + -2.0506263e-002 + -2.0721604e-002 + -2.1024926e-002 + -2.1398323e-002 + -2.1808026e-002 + -2.2220843e-002 + -2.2613283e-002 + -2.2980072e-002 + -2.3327324e-002 + -2.3666027e-002 + -2.4010239e-002 + -2.4367634e-002 + -2.4733203e-002 + -2.5089245e-002 + -2.5403845e-002 + -2.5632633e-002 + -2.5737724e-002 + -2.5716278e-002 + -2.5605754e-002 + -2.5465978e-002 + -2.5355132e-002 + -2.5298137e-002 + -2.5273673e-002 + -2.5241526e-002 + -2.5172758e-002 + -2.5046341e-002 + -2.4844625e-002 + -2.4569517e-002 + -2.4241227e-002 + -2.3880390e-002 + -2.3497707e-002 + -2.3098022e-002 + -2.2681741e-002 + -2.2244417e-002 + -2.1789708e-002 + -2.1323578e-002 + -2.0843567e-002 + -2.0341502e-002 + -1.9805953e-002 + -1.9234105e-002 + -1.8638517e-002 + -1.8042835e-002 + -1.7474361e-002 + -1.6942727e-002 + -1.6432922e-002 + -1.5922831e-002 + -1.5389499e-002 + -1.4817058e-002 + -1.4209493e-002 + -1.3584423e-002 + -1.2969211e-002 + -1.2391800e-002 + -1.1858748e-002 + -1.1354544e-002 + -1.0850258e-002 + -1.0318720e-002 + -9.7474553e-003 + -9.1367473e-003 + -8.5010145e-003 + -7.8569504e-003 + -7.2181928e-003 + -6.6070087e-003 + -6.0459624e-003 + -5.5513052e-003 + -5.1354730e-003 + -4.8006543e-003 + -4.5445630e-003 + -4.3565377e-003 + -4.2122928e-003 + -4.1042464e-003 + -4.0502662e-003 + -4.0770045e-003 + -4.2018339e-003 + -4.4069886e-003 + -4.6442928e-003 + -4.8617038e-003 + -5.0160049e-003 + -5.0789617e-003 + -5.0435992e-003 + -4.9181820e-003 + -4.7113022e-003 + -4.4304481e-003 + -4.0902448e-003 + -3.7142314e-003 + -3.3347035e-003 + -2.9861877e-003 + -2.6912185e-003 + -2.4483443e-003 + -2.2111058e-003 + -1.9538537e-003 + -1.6885780e-003 + -1.4219028e-003 + -1.1666048e-003 + -9.1916554e-004 + -6.5174441e-004 + -3.2711806e-004 + 8.3674545e-005 + 5.7784885e-004 + 1.1023986e-003 + 1.5726619e-003 + 1.9201196e-003 + 2.1239461e-003 + 2.2028504e-003 + 2.1951424e-003 + 2.1421779e-003 + 2.0741585e-003 + 2.0039564e-003 + 1.9299346e-003 + 1.8408129e-003 + 1.7246445e-003 + 1.5809265e-003 + 1.4167280e-003 + 1.2433345e-003 + 1.0788719e-003 + 9.3933291e-004 + 8.3069696e-004 + 7.4602678e-004 + 6.6739056e-004 + 5.7710385e-004 + 4.7311970e-004 + 3.7746963e-004 + 3.2406010e-004 + 3.3661307e-004 + 4.1279018e-004 + 5.1835832e-004 + 6.0448325e-004 + 6.3427667e-004 + 5.9490357e-004 + 5.0279603e-004 + 3.8343880e-004 + 2.4205496e-004 + 7.2295323e-005 + -1.3858132e-004 + -4.1155233e-004 + -7.5577254e-004 + -1.1552838e-003 + -1.5683446e-003 + -1.9428685e-003 + -2.2425827e-003 + -2.4581655e-003 + -2.5964454e-003 + -2.6706195e-003 + -2.7018086e-003 + -2.7159743e-003 + -2.7407914e-003 + -2.7993674e-003 + -2.8995810e-003 + -3.0290296e-003 + -3.1534065e-003 + -3.2169084e-003 + -3.1589202e-003 + -2.9547727e-003 + -2.6290266e-003 + -2.2284084e-003 + -1.8089461e-003 + -1.4249856e-003 + -1.1080517e-003 + -8.6582067e-004 + -6.8809863e-004 + -5.4979025e-004 + -4.2136679e-004 + -2.7697464e-004 + -9.1461748e-005 + 1.6689146e-004 + 5.2874934e-004 + 1.0038346e-003 + 1.5735251e-003 + 2.1956046e-003 + 2.8164719e-003 + 3.3912547e-003 + 3.9043446e-003 + 4.3727869e-003 + 4.8328077e-003 + 5.3281450e-003 + 5.8872547e-003 + 6.5096521e-003 + 7.1767295e-003 + 7.8633857e-003 + 8.5470544e-003 + 9.2125234e-003 + 9.8587231e-003 + 1.0492278e-002 + 1.1120121e-002 + 1.1750952e-002 + 1.2388099e-002 + 1.3030671e-002 + 1.3675004e-002 + 1.4319340e-002 + 1.4974719e-002 + 1.5656123e-002 + 1.6366481e-002 + 1.7098562e-002 + 1.7851614e-002 + 1.8647835e-002 + 1.9539220e-002 + 2.0582278e-002 + 2.1789366e-002 + 2.3114145e-002 + 2.4476542e-002 + 2.5797482e-002 + 2.7026808e-002 + 2.8161387e-002 + 2.9241787e-002 + 3.0316221e-002 + 3.1410482e-002 + 3.2527419e-002 + 3.3662696e-002 + 3.4818452e-002 + 3.6001136e-002 + 3.7215977e-002 + 3.8464754e-002 + 3.9735454e-002 + 4.1003372e-002 + 4.2250421e-002 + 4.3471810e-002 + 4.4672651e-002 + 4.5852376e-002 + 4.6986745e-002 + 4.8045085e-002 + 4.9008251e-002 + 4.9867312e-002 + 5.0632613e-002 + 5.1345797e-002 + 5.2068633e-002 + 5.2853268e-002 + 5.3735494e-002 + 5.4732126e-002 + 5.5831195e-002 + 5.7005391e-002 + 5.8214411e-002 + 5.9404734e-002 + 6.0535962e-002 + 6.1595690e-002 + 6.2591137e-002 + 6.3541502e-002 + 6.4470857e-002 + 6.5388348e-002 + 6.6276272e-002 + 6.7102041e-002 + 6.7836397e-002 + 6.8467658e-002 + 6.9007937e-002 + 6.9488013e-002 + 6.9942846e-002 + 7.0399570e-002 + 7.0871885e-002 + 7.1360729e-002 + 7.1860994e-002 + 7.2358642e-002 + 7.2834683e-002 + 7.3274848e-002 + 7.3670953e-002 + 7.4032528e-002 + 7.4379936e-002 + 7.4720873e-002 + 7.5059562e-002 + 7.5409291e-002 + 7.5779508e-002 + 7.6172602e-002 + 7.6590951e-002 + 7.7029388e-002 + 7.7462365e-002 + 7.7842787e-002 + 7.8110641e-002 + 7.8217518e-002 + 7.8155177e-002 + 7.7950654e-002 + 7.7645959e-002 + 7.7281280e-002 + 7.6881122e-002 + 7.6445616e-002 + 7.5955135e-002 + 7.5402736e-002 + 7.4810049e-002 + 7.4215625e-002 + 7.3657459e-002 + 7.3152160e-002 + 7.2695711e-002 + 7.2275541e-002 + 7.1871128e-002 + 7.1453878e-002 + 7.0999398e-002 + 7.0500380e-002 + 6.9969745e-002 + 6.9439278e-002 + 6.8948833e-002 + 6.8523552e-002 + 6.8152648e-002 + 6.7794346e-002 + 6.7405149e-002 + 6.6962206e-002 + 6.6470493e-002 + 6.5960160e-002 + 6.5478258e-002 + 6.5082836e-002 + 6.4820759e-002 + 6.4700886e-002 + 6.4695503e-002 + 6.4749240e-002 + 6.4787479e-002 + 6.4740341e-002 + 6.4569262e-002 + 6.4274616e-002 + 6.3890701e-002 + 6.3475320e-002 + 6.3081336e-002 + 6.2732516e-002 + 6.2423056e-002 + 6.2125511e-002 + 6.1810109e-002 + 6.1460383e-002 + 6.1073624e-002 + 6.0660097e-002 + 6.0236859e-002 + 5.9818510e-002 + 5.9412517e-002 + 5.9017801e-002 + 5.8626184e-002 + 5.8219746e-002 + 5.7775109e-002 + 5.7281833e-002 + 5.6746382e-002 + 5.6187402e-002 + 5.5626136e-002 + 5.5071670e-002 + 5.4520661e-002 + 5.3961374e-002 + 5.3387606e-002 + 5.2812278e-002 + 5.2260804e-002 + 5.1756385e-002 + 5.1309011e-002 + 5.0912401e-002 + 5.0548402e-002 + 5.0197911e-002 + 4.9845719e-002 + 4.9482282e-002 + 4.9106532e-002 + 4.8719197e-002 + 4.8311332e-002 + 4.7867008e-002 + 4.7378919e-002 + 4.6857080e-002 + 4.6330993e-002 + 4.5830898e-002 + 4.5363199e-002 + 4.4921118e-002 + 4.4495941e-002 + 4.4076359e-002 + 4.3659094e-002 + 4.3241209e-002 + 4.2813407e-002 + 4.2375748e-002 + 4.1936430e-002 + 4.1504622e-002 + 4.1083992e-002 + 4.0665560e-002 + 4.0242566e-002 + 3.9820638e-002 + 3.9404872e-002 + 3.8991534e-002 + 3.8569947e-002 + 3.8128532e-002 + 3.7665068e-002 + 3.7187098e-002 + 3.6705193e-002 + 3.6225923e-002 + 3.5747230e-002 + 3.5258195e-002 + 3.4737854e-002 + 3.4171720e-002 + 3.3568536e-002 + 3.2950430e-002 + 3.2345170e-002 + 3.1773328e-002 + 3.1231958e-002 + 3.0704157e-002 + 3.0173505e-002 + 2.9630468e-002 + 2.9072827e-002 + 2.8501703e-002 + 2.7920429e-002 + 2.7335204e-002 + 2.6752498e-002 + 2.6174830e-002 + 2.5602701e-002 + 2.5028034e-002 + 2.4428652e-002 + 2.3781915e-002 + 2.3075918e-002 + 2.2316049e-002 + 2.1529288e-002 + 2.0755222e-002 + 2.0028808e-002 + 1.9364419e-002 + 1.8751519e-002 + 1.8159966e-002 + 1.7550066e-002 + 1.6890179e-002 + 1.6164505e-002 + 1.5371631e-002 + 1.4528561e-002 + 1.3666330e-002 + 1.2817546e-002 + 1.2003916e-002 + 1.1225197e-002 + 1.0464425e-002 + 9.7010611e-003 + 8.9183188e-003 + 8.1103307e-003 + 7.2801387e-003 + 6.4325120e-003 + 5.5755593e-003 + 4.7201997e-003 + 3.8663823e-003 + 3.0037422e-003 + 2.1354367e-003 + 1.2799938e-003 + 4.5938630e-004 + -3.0966537e-004 + -1.0276355e-003 + -1.7117549e-003 + -2.3879050e-003 + -3.0760284e-003 + -3.7802808e-003 + -4.4925686e-003 + -5.1960371e-003 + -5.8734335e-003 + -6.5169434e-003 + -7.1355560e-003 + -7.7571714e-003 + -8.4151183e-003 + -9.1262567e-003 + -9.8792493e-003 + -1.0645436e-002 + -1.1395698e-002 + -1.2107161e-002 + -1.2766354e-002 + -1.3371184e-002 + -1.3928533e-002 + -1.4447575e-002 + -1.4942107e-002 + -1.5430697e-002 + -1.5924295e-002 + -1.6429827e-002 + -1.6959923e-002 + -1.7527302e-002 + -1.8138042e-002 + -1.8780239e-002 + -1.9416865e-002 + -2.0007188e-002 + -2.0524386e-002 + -2.0957051e-002 + -2.1319388e-002 + -2.1646834e-002 + -2.1967414e-002 + -2.2287066e-002 + -2.2598835e-002 + -2.2888479e-002 + -2.3141507e-002 + -2.3355854e-002 + -2.3538847e-002 + -2.3695598e-002 + -2.3825903e-002 + -2.3934037e-002 + -2.4030311e-002 + -2.4122082e-002 + -2.4221692e-002 + -2.4351342e-002 + -2.4528718e-002 + -2.4760224e-002 + -2.5043736e-002 + -2.5367683e-002 + -2.5711588e-002 + -2.6055101e-002 + -2.6384422e-002 + -2.6692491e-002 + -2.6976809e-002 + -2.7229175e-002 + -2.7438558e-002 + -2.7605959e-002 + -2.7746171e-002 + -2.7876544e-002 + -2.8002101e-002 + -2.8113771e-002 + -2.8197141e-002 + -2.8237461e-002 + -2.8227246e-002 + -2.8174409e-002 + -2.8097452e-002 + -2.8017899e-002 + -2.7953186e-002 + -2.7902343e-002 + -2.7843057e-002 + -2.7742026e-002 + -2.7568861e-002 + -2.7315505e-002 + -2.6995171e-002 + -2.6631646e-002 + -2.6262718e-002 + -2.5925098e-002 + -2.5633206e-002 + -2.5377924e-002 + -2.5134130e-002 + -2.4880708e-002 + -2.4616753e-002 + -2.4355053e-002 + -2.4111647e-002 + -2.3898054e-002 + -2.3710475e-002 + -2.3531683e-002 + -2.3346124e-002 + -2.3141854e-002 + -2.2911793e-002 + -2.2665252e-002 + -2.2422204e-002 + -2.2206108e-002 + -2.2037752e-002 + -2.1924874e-002 + -2.1864820e-002 + -2.1841315e-002 + -2.1829109e-002 + -2.1809015e-002 + -2.1771906e-002 + -2.1723746e-002 + -2.1686491e-002 + -2.1685945e-002 + -2.1733892e-002 + -2.1820126e-002 + -2.1918647e-002 + -2.2000996e-002 + -2.2048964e-002 + -2.2055196e-002 + -2.2017248e-002 + -2.1936319e-002 + -2.1814400e-002 + -2.1658677e-002 + -2.1492659e-002 + -2.1342790e-002 + -2.1223168e-002 + -2.1139267e-002 + -2.1087406e-002 + -2.1054845e-002 + -2.1024493e-002 + -2.0980461e-002 + -2.0914113e-002 + -2.0825536e-002 + -2.0725519e-002 + -2.0628650e-002 + -2.0544042e-002 + -2.0475426e-002 + -2.0420078e-002 + -2.0372258e-002 + -2.0325587e-002 + -2.0272000e-002 + -2.0203008e-002 + -2.0114363e-002 + -2.0009319e-002 + -1.9891776e-002 + -1.9763466e-002 + -1.9626728e-002 + -1.9482815e-002 + -1.9331375e-002 + -1.9176324e-002 + -1.9031110e-002 + -1.8912478e-002 + -1.8828966e-002 + -1.8777965e-002 + -1.8748309e-002 + -1.8725163e-002 + -1.8698679e-002 + -1.8665261e-002 + -1.8624282e-002 + -1.8578143e-002 + -1.8527631e-002 + -1.8469819e-002 + -1.8404551e-002 + -1.8335185e-002 + -1.8263265e-002 + -1.8192490e-002 + -1.8133498e-002 + -1.8095138e-002 + -1.8078053e-002 + -1.8075466e-002 + -1.8073805e-002 + -1.8059770e-002 + -1.8024524e-002 + -1.7963519e-002 + -1.7882838e-002 + -1.7792513e-002 + -1.7697863e-002 + -1.7605406e-002 + -1.7518851e-002 + -1.7435920e-002 + -1.7351907e-002 + -1.7259692e-002 + -1.7155219e-002 + -1.7041879e-002 + -1.6927257e-002 + -1.6817362e-002 + -1.6716446e-002 + -1.6627966e-002 + -1.6552981e-002 + -1.6490243e-002 + -1.6435355e-002 + -1.6384209e-002 + -1.6336065e-002 + -1.6292775e-002 + -1.6258002e-002 + -1.6234530e-002 + -1.6223876e-002 + -1.6222349e-002 + -1.6218448e-002 + -1.6200119e-002 + -1.6160069e-002 + -1.6098565e-002 + -1.6023569e-002 + -1.5947720e-002 + -1.5884058e-002 + -1.5840941e-002 + -1.5822557e-002 + -1.5828911e-002 + -1.5854511e-002 + -1.5891439e-002 + -1.5931012e-002 + -1.5965284e-002 + -1.5990862e-002 + -1.6009741e-002 + -1.6026868e-002 + -1.6046377e-002 + -1.6068708e-002 + -1.6090727e-002 + -1.6105888e-002 + -1.6105719e-002 + -1.6085059e-002 + -1.6045011e-002 + -1.5990774e-002 + -1.5929119e-002 + -1.5865696e-002 + -1.5803204e-002 + -1.5740840e-002 + -1.5674728e-002 + -1.5600841e-002 + -1.5517047e-002 + -1.5425218e-002 + -1.5329208e-002 + -1.5230185e-002 + -1.5129301e-002 + -1.5029587e-002 + -1.4934088e-002 + -1.4845105e-002 + -1.4762728e-002 + -1.4685722e-002 + -1.4611765e-002 + -1.4536807e-002 + -1.4457353e-002 + -1.4370462e-002 + -1.4273750e-002 + -1.4166767e-002 + -1.4051540e-002 + -1.3933116e-002 + -1.3817411e-002 + -1.3706659e-002 + -1.3598525e-002 + -1.3489658e-002 + -1.3377427e-002 + -1.3262741e-002 + -1.3151232e-002 + -1.3049556e-002 + -1.2963140e-002 + -1.2892583e-002 + -1.2832104e-002 + -1.2772374e-002 + -1.2703879e-002 + -1.2620109e-002 + -1.2518145e-002 + -1.2399494e-002 + -1.2268782e-002 + -1.2129701e-002 + -1.1985662e-002 + -1.1841824e-002 + -1.1703167e-002 + -1.1571668e-002 + -1.1447520e-002 + -1.1330335e-002 + -1.1217193e-002 + -1.1103133e-002 + -1.0984045e-002 + -1.0858017e-002 + -1.0724107e-002 + -1.0582905e-002 + -1.0436993e-002 + -1.0288144e-002 + -1.0137057e-002 + -9.9832466e-003 + -9.8243956e-003 + -9.6586037e-003 + -9.4859779e-003 + -9.3090542e-003 + -9.1326730e-003 + -8.9609430e-003 + -8.7947831e-003 + -8.6337460e-003 + -8.4771777e-003 + -8.3241192e-003 + -8.1740716e-003 + -8.0267849e-003 + -7.8817895e-003 + -7.7387365e-003 + -7.5979061e-003 + -7.4592588e-003 + -7.3215019e-003 + -7.1829247e-003 + -7.0416048e-003 + -6.8964352e-003 + -6.7487765e-003 + -6.6009525e-003 + -6.4545874e-003 + -6.3104668e-003 + -6.1683941e-003 + -6.0276020e-003 + -5.8875214e-003 + -5.7480652e-003 + -5.6094793e-003 + -5.4721860e-003 + -5.3365358e-003 + -5.2030345e-003 + -5.0725680e-003 + -4.9455153e-003 + -4.8211924e-003 + -4.6987060e-003 + -4.5773104e-003 + -4.4567098e-003 + -4.3373485e-003 + -4.2191080e-003 + -4.1015462e-003 + -3.9850025e-003 + -3.8700935e-003 + -3.7573339e-003 + -3.6472238e-003 + -3.5401109e-003 + -3.4357524e-003 + -3.3335115e-003 + -3.2326399e-003 + -3.1320632e-003 + -3.0312102e-003 + -2.9310758e-003 + -2.8332308e-003 + -2.7387560e-003 + -2.6482800e-003 + -2.5617525e-003 + -2.4790451e-003 + -2.4002130e-003 + -2.3245700e-003 + -2.2514608e-003 + -2.1807290e-003 + -2.1115913e-003 + -2.0432817e-003 + -1.9757991e-003 + -1.9091517e-003 + -1.8431897e-003 + -1.7779036e-003 + -1.7131444e-003 + -1.6487458e-003 + -1.5850200e-003 + -1.5224999e-003 + -1.4615707e-003 + -1.4025192e-003 + -1.3455532e-003 + -1.2905337e-003 + -1.2372304e-003 + -1.1852833e-003 + -1.1338799e-003 + -1.0827394e-003 + -1.0318968e-003 + -9.8103604e-004 + -9.3014974e-004 + -8.7953617e-004 + -8.2954608e-004 + -7.8039032e-004 + -7.3189019e-004 + -6.8355363e-004 + -6.3499722e-004 + -5.8622743e-004 + -5.3733130e-004 + -4.8857885e-004 + -4.4074319e-004 + -3.9437589e-004 + -3.4947781e-004 + -3.0621726e-004 + -2.6476547e-004 + -2.2480839e-004 + -1.8600801e-004 + -1.4830449e-004 + -1.1150857e-004 + -7.5427963e-005 + -4.0193754e-005 + -5.9187905e-006 + 2.7367341e-005 + 5.9416383e-005 + 9.0015734e-005 + 1.1925092e-004 + 1.4711652e-004 + 1.7358693e-004 + 1.9874413e-004 + 2.2256918e-004 + 2.4520624e-004 + 2.6686606e-004 + 2.8757222e-004 + 3.0736835e-004 + 3.2635573e-004 + 3.4454302e-004 + 3.6186791e-004 + 3.7824376e-004 + 3.9363901e-004 + 4.0812084e-004 + 4.2167613e-004 + 4.3430238e-004 + 4.4607962e-004 + 4.5703196e-004 + 4.6722360e-004 + 4.7670788e-004 + 4.8539947e-004 + 4.9327540e-004 + 5.0040845e-004 + 5.0676316e-004 + 5.1227903e-004 + 5.1701953e-004 + 5.2106822e-004 + 5.2440728e-004 + 5.2699854e-004 + 5.2886778e-004 + 5.3005554e-004 + 5.3055995e-004 + 5.3038204e-004 + 5.2958735e-004 + 5.2822764e-004 + 5.2629855e-004 + 5.2379855e-004 + 5.2073994e-004 + 5.1712766e-004 + 5.1296566e-004 + 5.0827350e-004 + 5.0308602e-004 + 4.9741798e-004 + 4.9126515e-004 + 4.8464443e-004 + 4.7756163e-004 + 4.7001795e-004 + 4.6204393e-004 + 4.5365473e-004 + 4.4485487e-004 + 4.3567154e-004 + 4.2612228e-004 + 4.1619890e-004 + 4.0590752e-004 + 3.9526916e-004 + 3.8429372e-004 + 3.7299472e-004 + 3.6139254e-004 + 3.4949998e-004 + 3.3732648e-004 + 3.2488543e-004 + 3.1218817e-004 + 2.9924253e-004 + 2.8606219e-004 + 2.7266142e-004 + 2.5905219e-004 + 2.4524912e-004 + 2.3126308e-004 + 2.1710469e-004 + 2.0278893e-004 + 1.8832909e-004 + 1.7373625e-004 + 1.5902236e-004 + 1.4420082e-004 + 1.2928354e-004 + 1.1428143e-004 + 9.9206888e-005 + 8.4072157e-005 + 6.8889325e-005 + 5.3670940e-005 + 3.8429483e-005 + 2.3177653e-005 + 7.9281536e-006 + -7.3064518e-006 + -2.2513496e-005 diff --git a/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/dynamic_displacement_history_comparison_3D.png b/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/dynamic_displacement_history_comparison_3D.png new file mode 100644 index 00000000..4cb0e877 Binary files /dev/null and b/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/dynamic_displacement_history_comparison_3D.png differ diff --git a/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/dynamic_pore_pressure_history_comparison_3D.png b/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/dynamic_pore_pressure_history_comparison_3D.png new file mode 100644 index 00000000..46f9bf8c Binary files /dev/null and b/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/dynamic_pore_pressure_history_comparison_3D.png differ diff --git a/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/freeField3D_meshes.png b/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/freeField3D_meshes.png new file mode 100644 index 00000000..1eaa0210 Binary files /dev/null and b/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/freeField3D_meshes.png differ diff --git a/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/freeField3D_schematic.pdf b/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/freeField3D_schematic.pdf new file mode 100644 index 00000000..91d6d105 Binary files /dev/null and b/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/freeField3D_schematic.pdf differ diff --git a/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/freeField3D_schematic.png b/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/freeField3D_schematic.png new file mode 100644 index 00000000..e498e34d Binary files /dev/null and b/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/freeField3D_schematic.png differ diff --git a/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/freeField3D_schematic.svg b/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/freeField3D_schematic.svg new file mode 100644 index 00000000..18b1fa9c --- /dev/null +++ b/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/freeField3D_schematic.svg @@ -0,0 +1,563 @@ + + + + + + + + 2026-10-21T15:18:42.201568 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LAYER 1 + + + LAYER 2 + + + LAYER 3 + + + + + + + + 30 m + + + + + + + + 20 m + + + + + + + + 8 m + + + + + + + + 2 m + + + + + + + + 2 m (x) + + + + + + + + 2 m (z) + + + WATER TABLE + + + y = 28 m · 2 m below surface + + + P1 Mid-column + + + y = 15 m · average of corner nodes 121-124 + + + P2 Ground surface + + + y = 30 m · average of corner nodes 241-244 + + + + + + + + HORIZONTAL MOTION INPUT + + + + + + B + a + s + e +   + x +   + d + i + r + e + c + t + i + o + n + : +   + ( + ) + = + ( + ) + F + t + c + v + t + x + i + n + + + + + Elastic half-space + Horizontal Lysmer dashpots + + + + + + + x + + + + + + + y + + + + + + + z + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3D FREE-FIELD SOIL COLUMN + + + Three-dimensional model / 2 m × 2 m footprint / horizontal input along x + + + Comparison histories: three displacement components and pore pressure. + + + Circles: four averaged corner nodes. Diamonds: comparison elevations. Horizontal dimensions exaggerated. + + + + + + + + + + + + + + diff --git a/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/gravity_displacement_comparison_3D.png b/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/gravity_displacement_comparison_3D.png new file mode 100644 index 00000000..b574dbb4 Binary files /dev/null and b/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/gravity_displacement_comparison_3D.png differ diff --git a/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/gravity_pore_pressure_comparison_3D.png b/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/gravity_pore_pressure_comparison_3D.png new file mode 100644 index 00000000..487bc612 Binary files /dev/null and b/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/gravity_pore_pressure_comparison_3D.png differ diff --git a/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/gravity_strain_comparison_3D.png b/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/gravity_strain_comparison_3D.png new file mode 100644 index 00000000..d93968f7 Binary files /dev/null and b/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/gravity_strain_comparison_3D.png differ diff --git a/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/gravity_stress_comparison_3D.png b/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/gravity_stress_comparison_3D.png new file mode 100644 index 00000000..95239266 Binary files /dev/null and b/source/user/examples/UWExamples/freeField3D_UPcomparison/figures/gravity_stress_comparison_3D.png differ diff --git a/source/user/examples/UWExamples/freeField3D_UPcomparison/freeField3D_BrickUP.tcl b/source/user/examples/UWExamples/freeField3D_UPcomparison/freeField3D_BrickUP.tcl new file mode 100644 index 00000000..8bf87aca --- /dev/null +++ b/source/user/examples/UWExamples/freeField3D_UPcomparison/freeField3D_BrickUP.tcl @@ -0,0 +1,532 @@ +########################################################### +# # +# 3D site response analysis of a soil deposit on an # +# elastic half-space. Shaking is applied in a single # +# plane, and the site has a slope out of the plane of # +# shaking. The finite rigidity of the underlying medium # +# is considered through the use of a viscous damper at # +# the base of the soil column. # +# # +# Created by: Chris McGann # +# Pedro Arduino # +# --University of Washington-- # +# # +# ---> Basic units are kN and m (unless specified) # +# # +########################################################### + +# Write generated results beside this script in the results folder. +set resultsDir [file join [file dirname [file normalize [info script]]] results] +file mkdir $resultsDir + +wipe + +#----------------------------------------------------------------------------------------- +# 1. DEFINE ANALYSIS PARAMETERS +#----------------------------------------------------------------------------------------- + +#---SOIL GEOMETRY +# thickness of soil profile (m) +set soilThick 30.0 +# grade of slope (%) +set grade 2.0 +# number of soil layers +set numLayers 3 +# layer thicknessess (m) +set layerThick(3) 2.0 +set layerThick(2) 8.0 +set layerThick(1) 20.0 +# depth of water table +set waterTable 2.0 + +# define layer boundaries +set layerBound(1) $layerThick(1) +for {set i 2} {$i <= $numLayers} {incr i 1} { + set layerBound($i) [expr $layerBound([expr $i-1])+$layerThick($i)] +} + +#---MESH GEOMETRY +# number of elements in horizontal direction +set nElemX 1 +set nElemZ 1 +# number of nodes in horizontal direction +set nNodeX [expr 2*$nElemX+1] +# horizontal element size (m) +set sElemX 2.0 +set sElemZ 2.0 + +# number of elements in vertical direction for each layer +set nElemY(3) 4 +set nElemY(2) 16 +set nElemY(1) 40 +# total number of elements in vertical direction +set nElemT 60 +# vertical element size in each layer +for {set i 1} {$i <=$numLayers} {incr i 1} { + set sElemY($i) [expr $layerThick($i)/$nElemY($i)] + puts "size: $sElemY($i)" +} + +# number of nodes in vertical direction in each layer +set nNodeT 0 +for {set k 1} {$k < $numLayers} {incr k 1} { + set nNodeY($k) [expr 4*$nElemY($k)] + puts "number of nodes in layer $k: $nNodeY($k)" + set nNodeT [expr $nNodeT + $nNodeY($k)] +} +set nNodeY($numLayers) [expr 4*($nElemY($numLayers) + 1)] +puts "number of nodes in layer $numLayers: $nNodeY($numLayers)" +set nNodeT [expr $nNodeT + $nNodeY($numLayers)] +puts "total number of nodes: $nNodeT" + +#----------------------------------------------------------------------------------------- +# 2. CREATE SOIL NODES AND BOUNDARY CONDITIONS +#----------------------------------------------------------------------------------------- + +model BasicBuilder -ndm 3 -ndf 4 + +set yCoord 0.0 +set count 0 +set gwt 1 +set waterHeight [expr $soilThick-$waterTable] +set nodesInfo [open [file join $resultsDir brickUP_nodesInfo.dat] w] +# loop over layers +for {set k 1} {$k <= $numLayers} {incr k 1} { + # loop over nodes + for {set j 1} {$j <= $nNodeY($k)} {incr j 4} { + node [expr $j+$count] 0.0 $yCoord 0.0 + node [expr $j+$count+1] 0.0 $yCoord $sElemZ + node [expr $j+$count+2] $sElemX $yCoord $sElemZ + node [expr $j+$count+3] $sElemX $yCoord 0.0 + + puts $nodesInfo "[expr $j+$count] 0.0 $yCoord 0.0" + puts $nodesInfo "[expr $j+$count+1] 0.0 $yCoord $sElemZ" + puts $nodesInfo "[expr $j+$count+2] $sElemX $yCoord $sElemZ" + puts $nodesInfo "[expr $j+$count+3] $sElemX $yCoord 0.0" + + # designate nodes above water table + if {$yCoord>=$waterHeight} { + set dryNode($gwt) [expr $j+$count] + set gwt [expr $gwt+1] + set dryNode($gwt) [expr $j+$count+1] + set gwt [expr $gwt+1] + set dryNode($gwt) [expr $j+$count+2] + set gwt [expr $gwt+1] + set dryNode($gwt) [expr $j+$count+3] + set gwt [expr $gwt+1] + } + + set yCoord [expr $yCoord + $sElemY($k)] + } + set count [expr $count + $nNodeY($k)] +} +close $nodesInfo +puts "Finished creating all soil nodes..." + +# define boundary conditions for nodes at base of column +fix 1 0 1 1 0 +fix 2 0 1 1 0 +fix 3 0 1 1 0 +fix 4 0 1 1 0 +equalDOF 1 2 1 +equalDOF 1 3 1 +equalDOF 1 4 1 + +# define periodic boundary conditions for remaining nodes +set count 0 +for {set k 5} {$k <= [expr $nNodeT]} {incr k 4} { + equalDOF $k [expr $k+1] 1 2 3 + equalDOF $k [expr $k+2] 1 2 3 + equalDOF $k [expr $k+3] 1 2 3 + puts "equalDOF $k [expr $k+1] 1 2 3" + puts "equalDOF $k [expr $k+2] 1 2 3" + puts "equalDOF $k [expr $k+3] 1 2 3" +} + +# define pore pressure boundaries for nodes above water table +for {set i 1} {$i < $gwt} {incr i 1} { + fix $dryNode($i) 0 0 0 1 +} +puts "Finished creating all soil boundary conditions..." + +#----------------------------------------------------------------------------------------- +# 4. CREATE SOIL MATERIALS +#----------------------------------------------------------------------------------------- + +set slope [expr atan($grade/100.0)] +set g -9.81 + +nDMaterial PressureDependMultiYield02 3 3 1.8 9.0e4 2.2e5 32 0.1 \ + 101.0 0.5 26 0.067 0.23 0.06 \ + 0.27 20 5.0 3.0 1.0 \ + 0.0 0.77 0.9 0.02 0.7 101.0 +set xWgt(3) 0.0 +set yWgt(3) [expr $g*cos($slope)] +set zWgt(3) [expr $g*sin($slope)] +set uBulk(3) 2.2e6 +set xPerm(3) 1.0e-2 +set yPerm(3) 1.0e-2 +set zPerm(3) 1.0e-2 +set eVoid(3) 0.77 +set n(3) [expr {$eVoid(3)/(1.0 + $eVoid(3))}] + +nDMaterial PressureDependMultiYield02 2 3 2.24 9.0e4 2.2e5 32 0.1 \ + 101.0 0.5 26 0.067 0.23 0.06 \ + 0.27 20 5.0 3.0 1.0 \ + 0.0 0.77 0.9 0.02 0.7 101.0 +set xWgt(2) 0.0 +set yWgt(2) [expr $g*cos($slope)] +set zWgt(2) [expr $g*sin($slope)] +set uBulk(2) 2.2e6 +set xPerm(2) 1.0e-5 +set yPerm(2) 1.0e-5 +set zPerm(2) 1.0e-5 +set eVoid(2) 0.77 +set n(2) [expr {$eVoid(2)/(1.0 + $eVoid(2))}] + +nDMaterial PressureDependMultiYield02 1 3 2.45 1.3e5 2.6e5 39 0.1 \ + 101.0 0.5 26 0.010 0.0 0.35 \ + 0.0 20 5.0 3.0 1.0 \ + 0.0 0.47 0.9 0.02 0.7 101.0 +set xWgt(1) 0.0 +set yWgt(1) [expr $g*cos($slope)] +set zWgt(1) [expr $g*sin($slope)] +set uBulk(1) 2.2e6 +set xPerm(1) 1.0e-2 +set yPerm(1) 1.0e-2 +set zPerm(1) 1.0e-2 +set eVoid(1) 0.47 +set n(1) [expr {$eVoid(1)/(1.0 + $eVoid(1))}] + +puts "Finished creating all soil materials..." + +#----------------------------------------------------------------------------------------- +# 5. CREATE SOIL ELEMENTS +#----------------------------------------------------------------------------------------- + +set alpha 1.5e-6 +set count 0 +set elemInfo [open [file join $resultsDir brickUP_elementInfo.dat] w] +# loop over layers +for {set k 1} {$k <= $numLayers} {incr k 1} { + # loop over elements + for {set j 1} {$j <= $nElemY($k)} {incr j 1} { + + set nI [expr 4*($j+$count) - 3] + set nJ [expr $nI + 1] + set nK [expr $nI + 2] + set nL [expr $nI + 3] + set nM [expr $nI + 4] + set nN [expr $nI + 5] + set nO [expr $nI + 6] + set nP [expr $nI + 7] + + # element SSPbrickUP [expr $j+$count] $nI $nJ $nK $nL $nM $nN $nO $nP $k $uBulk($k) 1.0 1.0 1.0 1.0 $eVoid($k) $alpha $xWgt($k) $yWgt($k) $zWgt($k) + # element SSPbrickUP $eleTag $iNode $jNode $kNode $lNode $mNode $nNode $pNode $qNode $matTag $fBulk $fDen $k1 $k2 $k3 $void $alpha <$b1 $b2 $b3> + # element brickUP $eleTag $Node1 $Node2 $Node3 $Node4 $Node5 $Node6 $Node7 $Node8 $matTag $bulk $fmass $PermX $PermY $PermZ <$bX=0 $bY=0 $bZ=0> + element brickUP [expr $j+$count] $nI $nJ $nK $nL $nM $nN $nO $nP $k [expr {$uBulk($k)/$n($k)}] 1.0 1.0 1.0 1.0 $xWgt($k) $yWgt($k) $zWgt($k) + puts $elemInfo "[expr $j+$count] $nI $nJ $nK $nL $nM $nN $nO $nP" + } + set count [expr $count + $nElemY($k)] +} +close $elemInfo +puts "Finished creating all soil elements..." + +#----------------------------------------------------------------------------------------- +# 6. LYSMER DASHPOTS +#----------------------------------------------------------------------------------------- + +model BasicBuilder -ndm 3 -ndf 3 + +# define dashpot nodes +set dashF [expr $nNodeT + 1] +set dashX [expr $nNodeT + 2] +set dashZ [expr $nNodeT + 3] + +node $dashF 0.0 0.0 0.0 +node $dashX 0.0 0.0 0.0 +node $dashZ 0.0 0.0 0.0 + +# define fixities for dashpot nodes +fix $dashF 1 1 1 +fix $dashX 0 1 1 +fix $dashZ 1 1 0 + +# link dashpots with soil column +equalDOF 1 $dashX 1 +equalDOF 1 $dashZ 3 + +# dashpot material +set colArea [expr $sElemX*$sElemZ] +set rockVS 700.0 +set rockDen 2.5 +set dashpotCoeff [expr $rockVS*$rockDen*$colArea] +uniaxialMaterial Viscous [expr $numLayers+1] $dashpotCoeff 1 + +# dashpot elements +element zeroLength [expr $nElemT+1] $dashF $dashX -mat [expr $numLayers+1] -dir 1 +element zeroLength [expr $nElemT+2] $dashF $dashZ -mat [expr $numLayers+1] -dir 3 + +puts "Finished creating Lysmer dashpots..." + +#----------------------------------------------------------------------------------------- +# 8. CREATE GID FLAVIA.MSH FILE FOR POSTPROCESSING +#----------------------------------------------------------------------------------------- + +set meshFile [open [file join $resultsDir brickUP_freeField3D.flavia.msh] w] +puts $meshFile "MESH ffBrick dimension 3 ElemType Hexahedra Nnode 8" +puts $meshFile "Coordinates" +puts $meshFile "#node_number coord_x coord_y coord_z" +set yCoord 0.0 +set count 0 +# loop over layers +for {set k 1} {$k <= $numLayers} {incr k 1} { + # loop over nodes + for {set j 1} {$j <= $nNodeY($k)} {incr j 4} { + puts $meshFile "[expr $j+$count] 0.0 $yCoord 0.0" + puts $meshFile "[expr $j+$count+1] 0.0 $yCoord $sElemZ" + puts $meshFile "[expr $j+$count+2] $sElemX $yCoord $sElemZ" + puts $meshFile "[expr $j+$count+3] $sElemX $yCoord 0.0" + + set yCoord [expr $yCoord + $sElemY($k)] + } + set count [expr $count + $nNodeY($k)] +} +puts $meshFile "end coordinates" +puts $meshFile "Elements" +puts $meshFile "# element node1 node2 node3 node4 node5 node6 node7 node8" +set count 0 +# loop over layers +for {set k 1} {$k <= $numLayers} {incr k 1} { + # loop over elements + for {set j 1} {$j <= $nElemY($k)} {incr j 1} { + + set nI [expr 4*($j+$count) - 3] + set nJ [expr $nI + 1] + set nK [expr $nI + 2] + set nL [expr $nI + 3] + set nM [expr $nI + 4] + set nN [expr $nI + 5] + set nO [expr $nI + 6] + set nP [expr $nI + 7] + + puts $meshFile "[expr $j+$count] $nI $nJ $nK $nL $nM $nN $nO $nP" + } + set count [expr $count + $nElemY($k)] +} +puts $meshFile "end elements" +close $meshFile + +#----------------------------------------------------------------------------------------- +# 7. GRAVITY RECORDERS +#----------------------------------------------------------------------------------------- + +## record nodal displacments, velocities, and accelerations at each time step +recorder Node -file [file join $resultsDir Gdisplacement_BrickUP.out] -time -nodeRange 1 $nNodeT -dof 1 2 3 disp +recorder Node -file [file join $resultsDir Gvelocity_BrickUP.out] -time -nodeRange 1 $nNodeT -dof 1 2 3 vel +recorder Node -file [file join $resultsDir Gacceleration_BrickUP.out] -time -nodeRange 1 $nNodeT -dof 1 2 3 accel +recorder Node -file [file join $resultsDir GporePressure_BrickUP.out] -time -nodeRange 1 $nNodeT -dof 4 vel + +# record stress and strain at each gauss point in the soil elements +recorder Element -file [file join $resultsDir Gstress_BrickUP.out] -time -eleRange 1 $nElemT material 1 stress +recorder Element -file [file join $resultsDir Gstrain_BrickUP.out] -time -eleRange 1 $nElemT material 1 strain + +puts "Finished creating gravity recorders..." + +#----------------------------------------------------------------------------------------- +# 9. DEFINE ANALYSIS PARAMETERS +#----------------------------------------------------------------------------------------- + +#---GROUND MOTION PARAMETERS +# time step in ground motion record +set motionDT 0.005 +# number of steps in ground motion record +set motionSteps 7990 + +#---RAYLEIGH DAMPING PARAMETERS +set pi 3.141592654 +# damping ratio +set damp 0.02 +# lower frequency +set omega1 [expr 2*$pi*0.2] +# upper frequency +set omega2 [expr 2*$pi*20] +# damping coefficients +set a0 [expr 2*$damp*$omega1*$omega2/($omega1 + $omega2)] +set a1 [expr 2*$damp/($omega1 + $omega2)] +puts "damping coefficients: a_0 = $a0; a_1 = $a1" + +#---DETERMINE STABLE ANALYSIS TIME STEP USING CFL CONDITION +# maximum shear wave velocity (m/s) +set vsMax 250.0 +# duration of ground motion (s) +set duration [expr $motionDT*$motionSteps] +# minimum element size +set minSize $sElemY(1) +for {set i 2} {$i <= $numLayers} {incr i 1} { + if {$sElemY($i) < $minSize} { + set minSize $sElemY($i) + } +} +# trial analysis time step +set kTrial [expr $minSize/(pow($vsMax,0.5))] +# define time step and number of steps for analysis +if { $motionDT <= $kTrial } { + set nSteps $motionSteps + set dT $motionDT +} else { + set nSteps [expr int(floor($duration/$kTrial)+1)] + set dT [expr $duration/$nSteps] +} +puts "number of steps in analysis: $nSteps" +puts "analysis time step: $dT" + +#---ANALYSIS PARAMETERS +# Newmark parameters +set gamma 0.5 +set beta 0.25 + +#----------------------------------------------------------------------------------------- +# 7. GRAVITY ANALYSIS +#----------------------------------------------------------------------------------------- + +model BasicBuilder -ndm 3 -ndf 4 + +# update materials to consider elastic behavior +for {set k 1} {$k <= $numLayers} {incr k} { + updateMaterialStage -material $k -stage 0 +} + +constraints Penalty 1.e14 1.e14 +test NormDispIncr 1e-5 30 1 +algorithm Newton +numberer Plain +system SparseGeneral +integrator Newmark $gamma $beta +analysis Transient + +set startT [clock seconds] +analyze 20 5.0e2 + +puts "Finished with elastic gravity analysis..." + +# update materials to consider plastic behavior +for {set k 1} {$k <= $numLayers} {incr k} { + updateMaterialStage -material $k -stage 1 +} + +# plastic gravity loading +analyze 40 5.0e-2 + +puts "Finished with plastic gravity analysis..." + +#----------------------------------------------------------------------------------------- +# 11. UPDATE ELEMENT PERMEABILITY VALUES FOR POST-GRAVITY ANALYSIS +#----------------------------------------------------------------------------------------- + +# layer 3 +setParameter -value $xPerm(3) -eleRange 57 60 xPerm +setParameter -value $yPerm(3) -eleRange 57 60 yPerm +setParameter -value $zPerm(3) -eleRange 57 60 zPerm +# layer 2 +setParameter -value $xPerm(2) -eleRange 41 56 xPerm +setParameter -value $yPerm(2) -eleRange 41 56 yPerm +setParameter -value $zPerm(2) -eleRange 41 56 zPerm +# layer 1 +setParameter -value $xPerm(1) -eleRange 1 40 xPerm +setParameter -value $yPerm(1) -eleRange 1 40 yPerm +setParameter -value $zPerm(1) -eleRange 1 40 zPerm + +puts "Finished updating permeabilities for dynamic analysis..." + +#----------------------------------------------------------------------------------------- +# 8. CREATE POST-GRAVITY RECORDERS +#----------------------------------------------------------------------------------------- + +# reset time and analysis +setTime 0.0 +wipeAnalysis +remove recorders + +# recorder time step +set recDT [expr 10*$motionDT] + +## record nodal displacments, velocities, and accelerations at each time step +recorder Node -file [file join $resultsDir displacement_BrickUP.out] -time -dT $recDT -nodeRange 1 $nNodeT -dof 1 2 3 disp +recorder Node -file [file join $resultsDir velocity_BrickUP.out] -time -dT $recDT -nodeRange 1 $nNodeT -dof 1 2 3 vel +recorder Node -file [file join $resultsDir acceleration_BrickUP.out] -time -dT $recDT -nodeRange 1 $nNodeT -dof 1 2 3 accel +recorder Node -file [file join $resultsDir porePressure_BrickUP.out] -time -dT $recDT -nodeRange 1 $nNodeT -dof 4 vel + +# record stress and strain at each gauss point in the soil elements +recorder Element -file [file join $resultsDir stress_BrickUP.out] -time -dT $recDT -eleRange 1 $nElemT material 1 stress +recorder Element -file [file join $resultsDir strain_BrickUP.out] -time -dT $recDT -eleRange 1 $nElemT material 1 strain + +puts "Finished creating post-gravity recorders..." + +#----------------------------------------------------------------------------------------- +# 9. DYNAMIC ANALYSIS +#----------------------------------------------------------------------------------------- + +# define velocity time history file +set velocityFile yerbaNSvelocity.out + +# timeseries object for force history +# Force history from the incident-wave velocity record +timeSeries Path 10 \ + -dt $motionDT \ + -filePath $velocityFile \ + -factor $dashpotCoeff + +pattern Plain 10 10 { + load 1 1.0 0.0 0.0 0.0 +} +puts "Dynamic loading created..." + +constraints Penalty 1.e14 1.e14 +test NormDispIncr 1.0e-3 55 1 +algorithm KrylovNewton +numberer Plain +system SparseGeneral +integrator Newmark $gamma $beta +#rayleigh $a0 $a1 0.0 0.0 +analysis Transient + +# perform analysis with timestep reduction loop +set ok [analyze $nSteps $dT] + +# if analysis fails, reduce timestep and continue with analysis +if {$ok != 0} { + puts "did not converge, reducing time step" + set curTime [getTime] + set mTime $curTime + puts "curTime: $curTime" + set curStep [expr $curTime/$dT] + puts "curStep: $curStep" + set rStep [expr ($nSteps-$curStep)*2.0] + set remStep [expr int(($nSteps-$curStep)*2.0)] + puts "remStep: $remStep" + set dT [expr $dT/2.0] + puts "dT: $dT" + + set ok [analyze $remStep $dT] + + # if analysis fails again, reduce timestep and continue with analysis + if {$ok != 0} { + puts "did not converge, reducing time step" + set curTime [getTime] + puts "curTime: $curTime" + set curStep [expr ($curTime-$mTime)/$dT] + puts "curStep: $curStep" + set remStep [expr int(($rStep-$curStep)*2.0)] + puts "remStep: $remStep" + set dT [expr $dT/2.0] + puts "dT: $dT" + + analyze $remStep $dT + } +} +set endT [clock seconds] +puts "Finished with dynamic analysis..." +puts "Analysis execution time: [expr $endT-$startT] seconds" + +wipe diff --git a/source/user/examples/UWExamples/freeField3D_UPcomparison/freeField3D_SSPbrickUP.tcl b/source/user/examples/UWExamples/freeField3D_UPcomparison/freeField3D_SSPbrickUP.tcl new file mode 100644 index 00000000..ecd8353a --- /dev/null +++ b/source/user/examples/UWExamples/freeField3D_UPcomparison/freeField3D_SSPbrickUP.tcl @@ -0,0 +1,526 @@ +########################################################### +# # +# 3D site response analysis of a soil deposit on an # +# elastic half-space. Shaking is applied in a single # +# plane, and the site has a slope out of the plane of # +# shaking. The finite rigidity of the underlying medium # +# is considered through the use of a viscous damper at # +# the base of the soil column. # +# # +# Created by: Chris McGann # +# Pedro Arduino # +# --University of Washington-- # +# # +# ---> Basic units are kN and m (unless specified) # +# # +########################################################### + +# Write generated results beside this script in the results folder. +set resultsDir [file join [file dirname [file normalize [info script]]] results] +file mkdir $resultsDir + +wipe + +#----------------------------------------------------------------------------------------- +# 1. DEFINE ANALYSIS PARAMETERS +#----------------------------------------------------------------------------------------- + +#---SOIL GEOMETRY +# thickness of soil profile (m) +set soilThick 30.0 +# grade of slope (%) +set grade 2.0 +# number of soil layers +set numLayers 3 +# layer thicknessess (m) +set layerThick(3) 2.0 +set layerThick(2) 8.0 +set layerThick(1) 20.0 +# depth of water table +set waterTable 2.0 + +# define layer boundaries +set layerBound(1) $layerThick(1) +for {set i 2} {$i <= $numLayers} {incr i 1} { + set layerBound($i) [expr $layerBound([expr $i-1])+$layerThick($i)] +} + +#---MESH GEOMETRY +# number of elements in horizontal direction +set nElemX 1 +set nElemZ 1 +# number of nodes in horizontal direction +set nNodeX [expr 2*$nElemX+1] +# horizontal element size (m) +set sElemX 2.0 +set sElemZ 2.0 + +# number of elements in vertical direction for each layer +set nElemY(3) 4 +set nElemY(2) 16 +set nElemY(1) 40 +# total number of elements in vertical direction +set nElemT 60 +# vertical element size in each layer +for {set i 1} {$i <=$numLayers} {incr i 1} { + set sElemY($i) [expr $layerThick($i)/$nElemY($i)] + puts "size: $sElemY($i)" +} + +# number of nodes in vertical direction in each layer +set nNodeT 0 +for {set k 1} {$k < $numLayers} {incr k 1} { + set nNodeY($k) [expr 4*$nElemY($k)] + puts "number of nodes in layer $k: $nNodeY($k)" + set nNodeT [expr $nNodeT + $nNodeY($k)] +} +set nNodeY($numLayers) [expr 4*($nElemY($numLayers) + 1)] +puts "number of nodes in layer $numLayers: $nNodeY($numLayers)" +set nNodeT [expr $nNodeT + $nNodeY($numLayers)] +puts "total number of nodes: $nNodeT" + +#----------------------------------------------------------------------------------------- +# 2. CREATE SOIL NODES AND BOUNDARY CONDITIONS +#----------------------------------------------------------------------------------------- + +model BasicBuilder -ndm 3 -ndf 4 + +set yCoord 0.0 +set count 0 +set gwt 1 +set waterHeight [expr $soilThick-$waterTable] +set nodesInfo [open [file join $resultsDir sspbrickup_nodesInfo.dat] w] +# loop over layers +for {set k 1} {$k <= $numLayers} {incr k 1} { + # loop over nodes + for {set j 1} {$j <= $nNodeY($k)} {incr j 4} { + node [expr $j+$count] 0.0 $yCoord 0.0 + node [expr $j+$count+1] 0.0 $yCoord $sElemZ + node [expr $j+$count+2] $sElemX $yCoord $sElemZ + node [expr $j+$count+3] $sElemX $yCoord 0.0 + + puts $nodesInfo "[expr $j+$count] 0.0 $yCoord 0.0" + puts $nodesInfo "[expr $j+$count+1] 0.0 $yCoord $sElemZ" + puts $nodesInfo "[expr $j+$count+2] $sElemX $yCoord $sElemZ" + puts $nodesInfo "[expr $j+$count+3] $sElemX $yCoord 0.0" + + # designate nodes above water table + if {$yCoord>=$waterHeight} { + set dryNode($gwt) [expr $j+$count] + set gwt [expr $gwt+1] + set dryNode($gwt) [expr $j+$count+1] + set gwt [expr $gwt+1] + set dryNode($gwt) [expr $j+$count+2] + set gwt [expr $gwt+1] + set dryNode($gwt) [expr $j+$count+3] + set gwt [expr $gwt+1] + } + + set yCoord [expr $yCoord + $sElemY($k)] + } + set count [expr $count + $nNodeY($k)] +} +close $nodesInfo +puts "Finished creating all soil nodes..." + +# define boundary conditions for nodes at base of column +fix 1 0 1 1 0 +fix 2 0 1 1 0 +fix 3 0 1 1 0 +fix 4 0 1 1 0 +equalDOF 1 2 1 +equalDOF 1 3 1 +equalDOF 1 4 1 + +# define periodic boundary conditions for remaining nodes +set count 0 +for {set k 5} {$k <= [expr $nNodeT]} {incr k 4} { + equalDOF $k [expr $k+1] 1 2 3 + equalDOF $k [expr $k+2] 1 2 3 + equalDOF $k [expr $k+3] 1 2 3 + puts "equalDOF $k [expr $k+1] 1 2 3" + puts "equalDOF $k [expr $k+2] 1 2 3" + puts "equalDOF $k [expr $k+3] 1 2 3" +} + +# define pore pressure boundaries for nodes above water table +for {set i 1} {$i < $gwt} {incr i 1} { + fix $dryNode($i) 0 0 0 1 +} +puts "Finished creating all soil boundary conditions..." + +#----------------------------------------------------------------------------------------- +# 4. CREATE SOIL MATERIALS +#----------------------------------------------------------------------------------------- + +set slope [expr atan($grade/100.0)] +set g -9.81 + +nDMaterial PressureDependMultiYield02 3 3 1.8 9.0e4 2.2e5 32 0.1 \ + 101.0 0.5 26 0.067 0.23 0.06 \ + 0.27 20 5.0 3.0 1.0 \ + 0.0 0.77 0.9 0.02 0.7 101.0 +set xWgt(3) 0.0 +set yWgt(3) [expr $g*cos($slope)] +set zWgt(3) [expr $g*sin($slope)] +set uBulk(3) 2.2e6 +set xPerm(3) 1.0e-2 +set yPerm(3) 1.0e-2 +set zPerm(3) 1.0e-2 +set eVoid(3) 0.77 + +nDMaterial PressureDependMultiYield02 2 3 2.24 9.0e4 2.2e5 32 0.1 \ + 101.0 0.5 26 0.067 0.23 0.06 \ + 0.27 20 5.0 3.0 1.0 \ + 0.0 0.77 0.9 0.02 0.7 101.0 +set xWgt(2) 0.0 +set yWgt(2) [expr $g*cos($slope)] +set zWgt(2) [expr $g*sin($slope)] +set uBulk(2) 2.2e6 +set xPerm(2) 1.0e-5 +set yPerm(2) 1.0e-5 +set zPerm(2) 1.0e-5 +set eVoid(2) 0.77 + +nDMaterial PressureDependMultiYield02 1 3 2.45 1.3e5 2.6e5 39 0.1 \ + 101.0 0.5 26 0.010 0.0 0.35 \ + 0.0 20 5.0 3.0 1.0 \ + 0.0 0.47 0.9 0.02 0.7 101.0 +set xWgt(1) 0.0 +set yWgt(1) [expr $g*cos($slope)] +set zWgt(1) [expr $g*sin($slope)] +set uBulk(1) 2.2e6 +set xPerm(1) 1.0e-2 +set yPerm(1) 1.0e-2 +set zPerm(1) 1.0e-2 +set eVoid(1) 0.47 + +puts "Finished creating all soil materials..." + +#----------------------------------------------------------------------------------------- +# 5. CREATE SOIL ELEMENTS +#----------------------------------------------------------------------------------------- + +set alpha 1.5e-6 +set count 0 +set elemInfo [open [file join $resultsDir sspbrickup_elementInfo.dat] w] +# loop over layers +for {set k 1} {$k <= $numLayers} {incr k 1} { + # loop over elements + for {set j 1} {$j <= $nElemY($k)} {incr j 1} { + + set nI [expr 4*($j+$count) - 3] + set nJ [expr $nI + 1] + set nK [expr $nI + 2] + set nL [expr $nI + 3] + set nM [expr $nI + 4] + set nN [expr $nI + 5] + set nO [expr $nI + 6] + set nP [expr $nI + 7] + + element SSPbrickUP [expr $j+$count] $nI $nJ $nK $nL $nM $nN $nO $nP $k $uBulk($k) 1.0 1.0 1.0 1.0 $eVoid($k) $alpha $xWgt($k) $yWgt($k) $zWgt($k) + puts $elemInfo "[expr $j+$count] $nI $nJ $nK $nL $nM $nN $nO $nP" + } + set count [expr $count + $nElemY($k)] +} +close $elemInfo +puts "Finished creating all soil elements..." + +#----------------------------------------------------------------------------------------- +# 6. LYSMER DASHPOTS +#----------------------------------------------------------------------------------------- + +model BasicBuilder -ndm 3 -ndf 3 + +# define dashpot nodes +set dashF [expr $nNodeT + 1] +set dashX [expr $nNodeT + 2] +set dashZ [expr $nNodeT + 3] + +node $dashF 0.0 0.0 0.0 +node $dashX 0.0 0.0 0.0 +node $dashZ 0.0 0.0 0.0 + +# define fixities for dashpot nodes +fix $dashF 1 1 1 +fix $dashX 0 1 1 +fix $dashZ 1 1 0 + +# link dashpots with soil column +equalDOF 1 $dashX 1 +equalDOF 1 $dashZ 3 + +# dashpot material +set colArea [expr $sElemX*$sElemZ] +set rockVS 700.0 +set rockDen 2.5 +set dashpotCoeff [expr $rockVS*$rockDen*$colArea] +uniaxialMaterial Viscous [expr $numLayers+1] $dashpotCoeff 1 + +# dashpot elements +element zeroLength [expr $nElemT+1] $dashF $dashX -mat [expr $numLayers+1] -dir 1 +element zeroLength [expr $nElemT+2] $dashF $dashZ -mat [expr $numLayers+1] -dir 3 + +puts "Finished creating Lysmer dashpots..." + +#----------------------------------------------------------------------------------------- +# 8. CREATE GID FLAVIA.MSH FILE FOR POSTPROCESSING +#----------------------------------------------------------------------------------------- + +set meshFile [open [file join $resultsDir sspbrickup_freeField3D.flavia.msh] w] +puts $meshFile "MESH ffBrick dimension 3 ElemType Hexahedra Nnode 8" +puts $meshFile "Coordinates" +puts $meshFile "#node_number coord_x coord_y coord_z" +set yCoord 0.0 +set count 0 +# loop over layers +for {set k 1} {$k <= $numLayers} {incr k 1} { + # loop over nodes + for {set j 1} {$j <= $nNodeY($k)} {incr j 4} { + puts $meshFile "[expr $j+$count] 0.0 $yCoord 0.0" + puts $meshFile "[expr $j+$count+1] 0.0 $yCoord $sElemZ" + puts $meshFile "[expr $j+$count+2] $sElemX $yCoord $sElemZ" + puts $meshFile "[expr $j+$count+3] $sElemX $yCoord 0.0" + + set yCoord [expr $yCoord + $sElemY($k)] + } + set count [expr $count + $nNodeY($k)] +} +puts $meshFile "end coordinates" +puts $meshFile "Elements" +puts $meshFile "# element node1 node2 node3 node4 node5 node6 node7 node8" +set count 0 +# loop over layers +for {set k 1} {$k <= $numLayers} {incr k 1} { + # loop over elements + for {set j 1} {$j <= $nElemY($k)} {incr j 1} { + + set nI [expr 4*($j+$count) - 3] + set nJ [expr $nI + 1] + set nK [expr $nI + 2] + set nL [expr $nI + 3] + set nM [expr $nI + 4] + set nN [expr $nI + 5] + set nO [expr $nI + 6] + set nP [expr $nI + 7] + + puts $meshFile "[expr $j+$count] $nI $nJ $nK $nL $nM $nN $nO $nP" + } + set count [expr $count + $nElemY($k)] +} +puts $meshFile "end elements" +close $meshFile + +#----------------------------------------------------------------------------------------- +# 7. GRAVITY RECORDERS +#----------------------------------------------------------------------------------------- + +## record nodal displacments, velocities, and accelerations at each time step +recorder Node -file [file join $resultsDir sspbrickup_Gdisplacement.out] -time -nodeRange 1 $nNodeT -dof 1 2 3 disp +recorder Node -file [file join $resultsDir sspbrickup_Gvelocity.out] -time -nodeRange 1 $nNodeT -dof 1 2 3 vel +recorder Node -file [file join $resultsDir sspbrickup_Gacceleration.out] -time -nodeRange 1 $nNodeT -dof 1 2 3 accel +recorder Node -file [file join $resultsDir sspbrickup_GporePressure.out] -time -nodeRange 1 $nNodeT -dof 4 vel + +# record stress and strain at each gauss point in the soil elements +recorder Element -file [file join $resultsDir sspbrickup_Gstress.out] -time -eleRange 1 $nElemT stress +recorder Element -file [file join $resultsDir sspbrickup_Gstrain.out] -time -eleRange 1 $nElemT strain + +puts "Finished creating gravity recorders..." + +#----------------------------------------------------------------------------------------- +# 9. DEFINE ANALYSIS PARAMETERS +#----------------------------------------------------------------------------------------- + +#---GROUND MOTION PARAMETERS +# time step in ground motion record +set motionDT 0.005 +# number of steps in ground motion record +set motionSteps 7990 + +#---RAYLEIGH DAMPING PARAMETERS +set pi 3.141592654 +# damping ratio +set damp 0.02 +# lower frequency +set omega1 [expr 2*$pi*0.2] +# upper frequency +set omega2 [expr 2*$pi*20] +# damping coefficients +set a0 [expr 2*$damp*$omega1*$omega2/($omega1 + $omega2)] +set a1 [expr 2*$damp/($omega1 + $omega2)] +puts "damping coefficients: a_0 = $a0; a_1 = $a1" + +#---DETERMINE STABLE ANALYSIS TIME STEP USING CFL CONDITION +# maximum shear wave velocity (m/s) +set vsMax 250.0 +# duration of ground motion (s) +set duration [expr $motionDT*$motionSteps] +# minimum element size +set minSize $sElemY(1) +for {set i 2} {$i <= $numLayers} {incr i 1} { + if {$sElemY($i) < $minSize} { + set minSize $sElemY($i) + } +} +# trial analysis time step +set kTrial [expr $minSize/(pow($vsMax,0.5))] +# define time step and number of steps for analysis +if { $motionDT <= $kTrial } { + set nSteps $motionSteps + set dT $motionDT +} else { + set nSteps [expr int(floor($duration/$kTrial)+1)] + set dT [expr $duration/$nSteps] +} +puts "number of steps in analysis: $nSteps" +puts "analysis time step: $dT" + +#---ANALYSIS PARAMETERS +# Newmark parameters +set gamma 0.5 +set beta 0.25 + +#----------------------------------------------------------------------------------------- +# 7. GRAVITY ANALYSIS +#----------------------------------------------------------------------------------------- + +model BasicBuilder -ndm 3 -ndf 4 + +# update materials to consider elastic behavior +for {set k 1} {$k <= $numLayers} {incr k} { + updateMaterialStage -material $k -stage 0 +} + +constraints Penalty 1.e14 1.e14 +test NormDispIncr 1e-5 30 1 +algorithm Newton +numberer Plain +system SparseGeneral +integrator Newmark $gamma $beta +analysis Transient + +set startT [clock seconds] +analyze 20 5.0e2 + +puts "Finished with elastic gravity analysis..." + +# update materials to consider plastic behavior +for {set k 1} {$k <= $numLayers} {incr k} { + updateMaterialStage -material $k -stage 1 +} + +# plastic gravity loading +analyze 40 5.0e-2 + +puts "Finished with plastic gravity analysis..." + +#----------------------------------------------------------------------------------------- +# 11. UPDATE ELEMENT PERMEABILITY VALUES FOR POST-GRAVITY ANALYSIS +#----------------------------------------------------------------------------------------- + +# layer 3 +setParameter -value $xPerm(3) -eleRange 57 60 xPerm +setParameter -value $yPerm(3) -eleRange 57 60 yPerm +setParameter -value $zPerm(3) -eleRange 57 60 zPerm +# layer 2 +setParameter -value $xPerm(2) -eleRange 41 56 xPerm +setParameter -value $yPerm(2) -eleRange 41 56 yPerm +setParameter -value $zPerm(2) -eleRange 41 56 zPerm +# layer 1 +setParameter -value $xPerm(1) -eleRange 1 40 xPerm +setParameter -value $yPerm(1) -eleRange 1 40 yPerm +setParameter -value $zPerm(1) -eleRange 1 40 zPerm + +puts "Finished updating permeabilities for dynamic analysis..." + +#----------------------------------------------------------------------------------------- +# 8. CREATE POST-GRAVITY RECORDERS +#----------------------------------------------------------------------------------------- + +# reset time and analysis +setTime 0.0 +wipeAnalysis +remove recorders + +# recorder time step +set recDT [expr 10*$motionDT] + +## record nodal displacments, velocities, and accelerations at each time step +recorder Node -file [file join $resultsDir sspbrickup_displacement.out] -time -dT $recDT -nodeRange 1 $nNodeT -dof 1 2 3 disp +recorder Node -file [file join $resultsDir sspbrickup_velocity.out] -time -dT $recDT -nodeRange 1 $nNodeT -dof 1 2 3 vel +recorder Node -file [file join $resultsDir sspbrickup_acceleration.out] -time -dT $recDT -nodeRange 1 $nNodeT -dof 1 2 3 accel +recorder Node -file [file join $resultsDir sspbrickup_porePressure.out] -time -dT $recDT -nodeRange 1 $nNodeT -dof 4 vel + +# record stress and strain at each gauss point in the soil elements +recorder Element -file [file join $resultsDir sspbrickup_stress.out] -time -dT $recDT -eleRange 1 $nElemT stress +recorder Element -file [file join $resultsDir sspbrickup_strain.out] -time -dT $recDT -eleRange 1 $nElemT strain + +puts "Finished creating post-gravity recorders..." + +#----------------------------------------------------------------------------------------- +# 9. DYNAMIC ANALYSIS +#----------------------------------------------------------------------------------------- + +# define velocity time history file +set velocityFile yerbaNSvelocity.out + +# timeseries object for force history +# Force history from the incident-wave velocity record +timeSeries Path 10 \ + -dt $motionDT \ + -filePath $velocityFile \ + -factor $dashpotCoeff + +pattern Plain 10 10 { + load 1 1.0 0.0 0.0 0.0 +} +puts "Dynamic loading created..." + +constraints Penalty 1.e14 1.e14 +test NormDispIncr 1.0e-3 55 1 +algorithm KrylovNewton +numberer Plain +system SparseGeneral +integrator Newmark $gamma $beta +#rayleigh $a0 $a1 0.0 0.0 +analysis Transient + +# perform analysis with timestep reduction loop +set ok [analyze $nSteps $dT] + +# if analysis fails, reduce timestep and continue with analysis +if {$ok != 0} { + puts "did not converge, reducing time step" + set curTime [getTime] + set mTime $curTime + puts "curTime: $curTime" + set curStep [expr $curTime/$dT] + puts "curStep: $curStep" + set rStep [expr ($nSteps-$curStep)*2.0] + set remStep [expr int(($nSteps-$curStep)*2.0)] + puts "remStep: $remStep" + set dT [expr $dT/2.0] + puts "dT: $dT" + + set ok [analyze $remStep $dT] + + # if analysis fails again, reduce timestep and continue with analysis + if {$ok != 0} { + puts "did not converge, reducing time step" + set curTime [getTime] + puts "curTime: $curTime" + set curStep [expr ($curTime-$mTime)/$dT] + puts "curStep: $curStep" + set remStep [expr int(($rStep-$curStep)*2.0)] + puts "remStep: $remStep" + set dT [expr $dT/2.0] + puts "dT: $dT" + + analyze $remStep $dT + } +} +set endT [clock seconds] +puts "Finished with dynamic analysis..." +puts "Analysis execution time: [expr $endT-$startT] seconds" + +wipe diff --git a/source/user/examples/UWExamples/freeField3D_UPcomparison/freeField3D_SSPtetUP.tcl b/source/user/examples/UWExamples/freeField3D_UPcomparison/freeField3D_SSPtetUP.tcl new file mode 100644 index 00000000..c9f3669a --- /dev/null +++ b/source/user/examples/UWExamples/freeField3D_UPcomparison/freeField3D_SSPtetUP.tcl @@ -0,0 +1,532 @@ +# Four-node SSPtetUP version of freeField3D.tcl. +# Each original brick cell is split into six conforming tetrahedra. +# Requires an OpenSees build with SSPtetUP; see SSPtetUP.md. +# Outputs use the ssptetUP_ prefix. Units: kN, m, s. +# SSPtetUP uses n/Kf internally: pass fluid bulk uBulk, not uBulk/n. +# The original alpha is retained for comparison, not calibrated for tetrahedra. + +set here [file normalize [file dirname [info script]]] +cd $here + +########################################################### +# # +# 3D site response analysis of a soil deposit on an # +# elastic half-space. Shaking is applied in a single # +# plane, and the site has a slope out of the plane of # +# shaking. The finite rigidity of the underlying medium # +# is considered through the use of a viscous damper at # +# the base of the soil column. # +# # +# Created by: Chris McGann # +# Pedro Arduino # +# --University of Washington-- # +# # +# ---> Basic units are kN and m (unless specified) # +# # +########################################################### + +# Write generated results beside this script in the results folder. +set resultsDir [file join [file dirname [file normalize [info script]]] results] +file mkdir $resultsDir + +wipe + +#----------------------------------------------------------------------------------------- +# 1. DEFINE ANALYSIS PARAMETERS +#----------------------------------------------------------------------------------------- + +#---SOIL GEOMETRY +# thickness of soil profile (m) +set soilThick 30.0 +# grade of slope (%) +set grade 2.0 +# number of soil layers +set numLayers 3 +# layer thicknessess (m) +set layerThick(3) 2.0 +set layerThick(2) 8.0 +set layerThick(1) 20.0 +# depth of water table +set waterTable 2.0 + +# define layer boundaries +set layerBound(1) $layerThick(1) +for {set i 2} {$i <= $numLayers} {incr i 1} { + set layerBound($i) [expr $layerBound([expr $i-1])+$layerThick($i)] +} + +#---MESH GEOMETRY +# number of elements in horizontal direction +set nElemX 1 +set nElemZ 1 +# number of nodes in horizontal direction +set nNodeX [expr 2*$nElemX+1] +# horizontal element size (m) +set sElemX 2.0 +set sElemZ 2.0 + +# number of elements in vertical direction for each layer +set nElemY(3) 4 +set nElemY(2) 16 +set nElemY(1) 40 +# total number of elements in vertical direction +set nElemT 60 +# nElemT counts original brick cells; soil element tags count tetrahedra. +set nSoilElements [expr {6 * $nElemT}] +# vertical element size in each layer +for {set i 1} {$i <=$numLayers} {incr i 1} { + set sElemY($i) [expr $layerThick($i)/$nElemY($i)] + puts "size: $sElemY($i)" +} + +# number of nodes in vertical direction in each layer +set nNodeT 0 +for {set k 1} {$k < $numLayers} {incr k 1} { + set nNodeY($k) [expr 4*$nElemY($k)] + puts "number of nodes in layer $k: $nNodeY($k)" + set nNodeT [expr $nNodeT + $nNodeY($k)] +} +set nNodeY($numLayers) [expr 4*($nElemY($numLayers) + 1)] +puts "number of nodes in layer $numLayers: $nNodeY($numLayers)" +set nNodeT [expr $nNodeT + $nNodeY($numLayers)] +puts "total number of nodes: $nNodeT" + +#----------------------------------------------------------------------------------------- +# 2. CREATE SOIL NODES AND BOUNDARY CONDITIONS +#----------------------------------------------------------------------------------------- + +model BasicBuilder -ndm 3 -ndf 4 + +set yCoord 0.0 +set count 0 +set gwt 1 +set waterHeight [expr $soilThick-$waterTable] +set nodesInfo [open [file join $resultsDir ssptetUP_nodesInfo.dat] w] +# loop over layers +for {set k 1} {$k <= $numLayers} {incr k 1} { + # loop over nodes + for {set j 1} {$j <= $nNodeY($k)} {incr j 4} { + node [expr $j+$count] 0.0 $yCoord 0.0 + node [expr $j+$count+1] 0.0 $yCoord $sElemZ + node [expr $j+$count+2] $sElemX $yCoord $sElemZ + node [expr $j+$count+3] $sElemX $yCoord 0.0 + + puts $nodesInfo "[expr $j+$count] 0.0 $yCoord 0.0" + puts $nodesInfo "[expr $j+$count+1] 0.0 $yCoord $sElemZ" + puts $nodesInfo "[expr $j+$count+2] $sElemX $yCoord $sElemZ" + puts $nodesInfo "[expr $j+$count+3] $sElemX $yCoord 0.0" + + # designate nodes above water table + if {$yCoord>=$waterHeight} { + set dryNode($gwt) [expr $j+$count] + set gwt [expr $gwt+1] + set dryNode($gwt) [expr $j+$count+1] + set gwt [expr $gwt+1] + set dryNode($gwt) [expr $j+$count+2] + set gwt [expr $gwt+1] + set dryNode($gwt) [expr $j+$count+3] + set gwt [expr $gwt+1] + } + + set yCoord [expr $yCoord + $sElemY($k)] + } + set count [expr $count + $nNodeY($k)] +} +close $nodesInfo +puts "Finished creating all soil nodes..." + +# define boundary conditions for nodes at base of column +fix 1 0 1 1 0 +fix 2 0 1 1 0 +fix 3 0 1 1 0 +fix 4 0 1 1 0 +equalDOF 1 2 1 +equalDOF 1 3 1 +equalDOF 1 4 1 + +# define periodic boundary conditions for remaining nodes +set count 0 +for {set k 5} {$k <= [expr $nNodeT]} {incr k 4} { + equalDOF $k [expr $k+1] 1 2 3 + equalDOF $k [expr $k+2] 1 2 3 + equalDOF $k [expr $k+3] 1 2 3 + puts "equalDOF $k [expr $k+1] 1 2 3" + puts "equalDOF $k [expr $k+2] 1 2 3" + puts "equalDOF $k [expr $k+3] 1 2 3" +} + +# define pore pressure boundaries for nodes above water table +for {set i 1} {$i < $gwt} {incr i 1} { + fix $dryNode($i) 0 0 0 1 +} +puts "Finished creating all soil boundary conditions..." + +#----------------------------------------------------------------------------------------- +# 4. CREATE SOIL MATERIALS +#----------------------------------------------------------------------------------------- + +set slope [expr atan($grade/100.0)] +set g -9.81 + +nDMaterial PressureDependMultiYield02 3 3 1.8 9.0e4 2.2e5 32 0.1 \ + 101.0 0.5 26 0.067 0.23 0.06 \ + 0.27 20 5.0 3.0 1.0 \ + 0.0 0.77 0.9 0.02 0.7 101.0 +set xWgt(3) 0.0 +set yWgt(3) [expr $g*cos($slope)] +set zWgt(3) [expr $g*sin($slope)] +set uBulk(3) 2.2e6 +set xPerm(3) 1.0e-2 +set yPerm(3) 1.0e-2 +set zPerm(3) 1.0e-2 +set eVoid(3) 0.77 + +nDMaterial PressureDependMultiYield02 2 3 2.24 9.0e4 2.2e5 32 0.1 \ + 101.0 0.5 26 0.067 0.23 0.06 \ + 0.27 20 5.0 3.0 1.0 \ + 0.0 0.77 0.9 0.02 0.7 101.0 +set xWgt(2) 0.0 +set yWgt(2) [expr $g*cos($slope)] +set zWgt(2) [expr $g*sin($slope)] +set uBulk(2) 2.2e6 +set xPerm(2) 1.0e-5 +set yPerm(2) 1.0e-5 +set zPerm(2) 1.0e-5 +set eVoid(2) 0.77 + +nDMaterial PressureDependMultiYield02 1 3 2.45 1.3e5 2.6e5 39 0.1 \ + 101.0 0.5 26 0.010 0.0 0.35 \ + 0.0 20 5.0 3.0 1.0 \ + 0.0 0.47 0.9 0.02 0.7 101.0 +set xWgt(1) 0.0 +set yWgt(1) [expr $g*cos($slope)] +set zWgt(1) [expr $g*sin($slope)] +set uBulk(1) 2.2e6 +set xPerm(1) 1.0e-2 +set yPerm(1) 1.0e-2 +set zPerm(1) 1.0e-2 +set eVoid(1) 0.47 + +puts "Finished creating all soil materials..." + +#----------------------------------------------------------------------------------------- +# 5. CREATE SOIL ELEMENTS +#----------------------------------------------------------------------------------------- + +set alpha 1.5e-6 +# Local corners: I J K L on the bottom, M N O P on the top. +# Six tetrahedra share diagonal I--O; matching faces conform between cells. +set localTets {{0 1 2 6} {0 2 3 6} {0 3 7 6} + {0 7 4 6} {0 4 5 6} {0 5 1 6}} +set count 0 +set eleTag 0 +set soilConnectivity {} +set elemInfo [open [file join $resultsDir ssptetUP_elementInfo.dat] w] +for {set k 1} {$k <= $numLayers} {incr k} { + set firstElement($k) [expr {$eleTag + 1}] + for {set j 1} {$j <= $nElemY($k)} {incr j} { + set firstNode [expr {4 * ($j + $count) - 3}] + set hex {} + for {set offset 0} {$offset < 8} {incr offset} { + lappend hex [expr {$firstNode + $offset}] + } + foreach localTet $localTets { + set tet {} + foreach localNode $localTet { lappend tet [lindex $hex $localNode] } + incr eleTag + lassign $tet n1 n2 n3 n4 + # High permeability during gravity, as in freeField3D.tcl. + # Consistent displacement mass (the SSPtetUP default). + element SSPtetUP $eleTag $n1 $n2 $n3 $n4 $k \ + $uBulk($k) 1.0 1.0 1.0 1.0 $eVoid($k) $alpha \ + $xWgt($k) $yWgt($k) $zWgt($k) + lappend soilConnectivity [list $eleTag $n1 $n2 $n3 $n4 $k] + puts $elemInfo "$eleTag $n1 $n2 $n3 $n4" + } + } + set lastElement($k) $eleTag + set count [expr {$count + $nElemY($k)}] +} +if {$eleTag != $nSoilElements} { error "Unexpected soil element count: $eleTag" } +close $elemInfo +puts "Finished creating all soil elements..." + +#----------------------------------------------------------------------------------------- +# 6. LYSMER DASHPOTS +#----------------------------------------------------------------------------------------- + +model BasicBuilder -ndm 3 -ndf 3 + +# define dashpot nodes +set dashF [expr $nNodeT + 1] +set dashX [expr $nNodeT + 2] +set dashZ [expr $nNodeT + 3] + +node $dashF 0.0 0.0 0.0 +node $dashX 0.0 0.0 0.0 +node $dashZ 0.0 0.0 0.0 + +# define fixities for dashpot nodes +fix $dashF 1 1 1 +fix $dashX 0 1 1 +fix $dashZ 1 1 0 + +# link dashpots with soil column +equalDOF 1 $dashX 1 +equalDOF 1 $dashZ 3 + +# dashpot material +set colArea [expr $sElemX*$sElemZ] +set rockVS 700.0 +set rockDen 2.5 +set dashpotCoeff [expr $rockVS*$rockDen*$colArea] +uniaxialMaterial Viscous [expr $numLayers+1] $dashpotCoeff 1 + +# dashpot elements +element zeroLength [expr {$nSoilElements+1}] $dashF $dashX -mat [expr $numLayers+1] -dir 1 +element zeroLength [expr {$nSoilElements+2}] $dashF $dashZ -mat [expr $numLayers+1] -dir 3 + +puts "Finished creating Lysmer dashpots..." + +#----------------------------------------------------------------------------------------- +# 8. CREATE GID FLAVIA.MSH FILE FOR POSTPROCESSING +#----------------------------------------------------------------------------------------- + +set meshFile [open [file join $resultsDir ssptetUP_freeField3D.flavia.msh] w] +puts $meshFile "MESH ffSSPtetUP dimension 3 ElemType Tetrahedra Nnode 4" +puts $meshFile "Coordinates" +puts $meshFile "#node_number coord_x coord_y coord_z" +set yCoord 0.0 +set count 0 +# loop over layers +for {set k 1} {$k <= $numLayers} {incr k 1} { + # loop over nodes + for {set j 1} {$j <= $nNodeY($k)} {incr j 4} { + puts $meshFile "[expr $j+$count] 0.0 $yCoord 0.0" + puts $meshFile "[expr $j+$count+1] 0.0 $yCoord $sElemZ" + puts $meshFile "[expr $j+$count+2] $sElemX $yCoord $sElemZ" + puts $meshFile "[expr $j+$count+3] $sElemX $yCoord 0.0" + + set yCoord [expr $yCoord + $sElemY($k)] + } + set count [expr $count + $nNodeY($k)] +} +puts $meshFile "end coordinates" +puts $meshFile "Elements" +puts $meshFile "# element node1 node2 node3 node4 material" +foreach connectivity $soilConnectivity { + puts $meshFile [join $connectivity " "] +} +puts $meshFile "end elements" +close $meshFile + +#----------------------------------------------------------------------------------------- +# 7. GRAVITY RECORDERS +#----------------------------------------------------------------------------------------- + +## record nodal displacments, velocities, and accelerations at each time step +recorder Node -file [file join $resultsDir ssptetUP_Gdisplacement.out] -time -nodeRange 1 $nNodeT -dof 1 2 3 disp +recorder Node -file [file join $resultsDir ssptetUP_Gvelocity.out] -time -nodeRange 1 $nNodeT -dof 1 2 3 vel +recorder Node -file [file join $resultsDir ssptetUP_Gacceleration.out] -time -nodeRange 1 $nNodeT -dof 1 2 3 accel +recorder Node -file [file join $resultsDir ssptetUP_GporePressure.out] -time -nodeRange 1 $nNodeT -dof 4 vel + +# Record the single material-point stress and strain of each tetrahedron. +recorder Element -file [file join $resultsDir ssptetUP_Gstress.out] -time -eleRange 1 $nSoilElements stress +recorder Element -file [file join $resultsDir ssptetUP_Gstrain.out] -time -eleRange 1 $nSoilElements strain + +puts "Finished creating gravity recorders..." + +#----------------------------------------------------------------------------------------- +# 9. DEFINE ANALYSIS PARAMETERS +#----------------------------------------------------------------------------------------- + +#---GROUND MOTION PARAMETERS +# time step in ground motion record +set motionDT 0.005 +# number of steps in ground motion record +set motionSteps 7990 + +#---RAYLEIGH DAMPING PARAMETERS +set pi 3.141592654 +# damping ratio +set damp 0.02 +# lower frequency +set omega1 [expr 2*$pi*0.2] +# upper frequency +set omega2 [expr 2*$pi*20] +# damping coefficients +set a0 [expr 2*$damp*$omega1*$omega2/($omega1 + $omega2)] +set a1 [expr 2*$damp/($omega1 + $omega2)] +puts "damping coefficients: a_0 = $a0; a_1 = $a1" + +#---DETERMINE STABLE ANALYSIS TIME STEP USING CFL CONDITION +# maximum shear wave velocity (m/s) +set vsMax 250.0 +# duration of ground motion (s) +set duration [expr $motionDT*$motionSteps] +# minimum element size +set minSize $sElemY(1) +for {set i 2} {$i <= $numLayers} {incr i 1} { + if {$sElemY($i) < $minSize} { + set minSize $sElemY($i) + } +} +# trial analysis time step +set kTrial [expr $minSize/(pow($vsMax,0.5))] +# define time step and number of steps for analysis +if { $motionDT <= $kTrial } { + set nSteps $motionSteps + set dT $motionDT +} else { + set nSteps [expr int(floor($duration/$kTrial)+1)] + set dT [expr $duration/$nSteps] +} +puts "number of steps in analysis: $nSteps" +puts "analysis time step: $dT" + +#---ANALYSIS PARAMETERS +# Newmark parameters +set gamma 0.5 +set beta 0.25 + +#----------------------------------------------------------------------------------------- +# 7. GRAVITY ANALYSIS +#----------------------------------------------------------------------------------------- + +model BasicBuilder -ndm 3 -ndf 4 + +# update materials to consider elastic behavior +for {set k 1} {$k <= $numLayers} {incr k} { + updateMaterialStage -material $k -stage 0 +} + +constraints Penalty 1.e14 1.e14 +test NormDispIncr 1e-5 30 1 +algorithm Newton +numberer Plain +system SparseGeneral +integrator Newmark $gamma $beta +analysis Transient + +set startT [clock seconds] +set ok [analyze 20 5.0e2] +if {$ok != 0} { error "Elastic gravity analysis failed at [getTime], code $ok" } + +puts "Finished with elastic gravity analysis..." + +# update materials to consider plastic behavior +for {set k 1} {$k <= $numLayers} {incr k} { + updateMaterialStage -material $k -stage 1 +} + +# plastic gravity loading +set ok [analyze 40 5.0e-2] +if {$ok != 0} { error "Plastic gravity analysis failed at [getTime], code $ok" } + +puts "Finished with plastic gravity analysis..." + +#----------------------------------------------------------------------------------------- +# 11. UPDATE ELEMENT PERMEABILITY VALUES FOR POST-GRAVITY ANALYSIS +#----------------------------------------------------------------------------------------- + +# Six tetrahedra per original cell; use the ranges captured during meshing. +for {set k 1} {$k <= $numLayers} {incr k} { + setParameter -value $xPerm($k) -eleRange $firstElement($k) $lastElement($k) xPerm + setParameter -value $yPerm($k) -eleRange $firstElement($k) $lastElement($k) yPerm + setParameter -value $zPerm($k) -eleRange $firstElement($k) $lastElement($k) zPerm +} + +puts "Finished updating permeabilities for dynamic analysis..." + +#----------------------------------------------------------------------------------------- +# 8. CREATE POST-GRAVITY RECORDERS +#----------------------------------------------------------------------------------------- + +# reset time and analysis +setTime 0.0 +wipeAnalysis +remove recorders + +# recorder time step +set recDT [expr 10*$motionDT] + +## record nodal displacments, velocities, and accelerations at each time step +recorder Node -file [file join $resultsDir ssptetUP_displacement.out] -time -dT $recDT -nodeRange 1 $nNodeT -dof 1 2 3 disp +recorder Node -file [file join $resultsDir ssptetUP_velocity.out] -time -dT $recDT -nodeRange 1 $nNodeT -dof 1 2 3 vel +recorder Node -file [file join $resultsDir ssptetUP_acceleration.out] -time -dT $recDT -nodeRange 1 $nNodeT -dof 1 2 3 accel +recorder Node -file [file join $resultsDir ssptetUP_porePressure.out] -time -dT $recDT -nodeRange 1 $nNodeT -dof 4 vel + +# Record the single material-point stress and strain of each tetrahedron. +recorder Element -file [file join $resultsDir ssptetUP_stress.out] -time -dT $recDT -eleRange 1 $nSoilElements stress +recorder Element -file [file join $resultsDir ssptetUP_strain.out] -time -dT $recDT -eleRange 1 $nSoilElements strain + +puts "Finished creating post-gravity recorders..." + +#----------------------------------------------------------------------------------------- +# 9. DYNAMIC ANALYSIS +#----------------------------------------------------------------------------------------- + +# define velocity time history file +set velocityFile yerbaNSvelocity.out + +# timeseries object for force history +# Force history from the incident-wave velocity record +timeSeries Path 10 \ + -dt $motionDT \ + -filePath $velocityFile \ + -factor $dashpotCoeff + +pattern Plain 10 10 { + load 1 1.0 0.0 0.0 0.0 +} +puts "Dynamic loading created..." + +constraints Penalty 1.e14 1.e14 +test NormDispIncr 1.0e-3 55 1 +algorithm KrylovNewton +numberer Plain +system SparseGeneral +integrator Newmark $gamma $beta +#rayleigh $a0 $a1 0.0 0.0 +analysis Transient + +# perform analysis with timestep reduction loop +set ok [analyze $nSteps $dT] + +# if analysis fails, reduce timestep and continue with analysis +if {$ok != 0} { + puts "did not converge, reducing time step" + set curTime [getTime] + set mTime $curTime + puts "curTime: $curTime" + set curStep [expr $curTime/$dT] + puts "curStep: $curStep" + set rStep [expr ($nSteps-$curStep)*2.0] + set remStep [expr int(($nSteps-$curStep)*2.0)] + puts "remStep: $remStep" + set dT [expr $dT/2.0] + puts "dT: $dT" + + set ok [analyze $remStep $dT] + + # if analysis fails again, reduce timestep and continue with analysis + if {$ok != 0} { + puts "did not converge, reducing time step" + set curTime [getTime] + puts "curTime: $curTime" + set curStep [expr ($curTime-$mTime)/$dT] + puts "curStep: $curStep" + set remStep [expr int(($rStep-$curStep)*2.0)] + puts "remStep: $remStep" + set dT [expr $dT/2.0] + puts "dT: $dT" + + set ok [analyze $remStep $dT] + } +} +if {$ok != 0} { error "Dynamic analysis failed at [getTime], code $ok" } +set endT [clock seconds] +puts "Finished with dynamic analysis..." +puts "Analysis execution time: [expr $endT-$startT] seconds" + +wipe diff --git a/source/user/examples/UWExamples/freeField3D_UPcomparison/freeField3D_TenNodeTetrahedronUP.tcl b/source/user/examples/UWExamples/freeField3D_UPcomparison/freeField3D_TenNodeTetrahedronUP.tcl new file mode 100644 index 00000000..dd85b3ca --- /dev/null +++ b/source/user/examples/UWExamples/freeField3D_UPcomparison/freeField3D_TenNodeTetrahedronUP.tcl @@ -0,0 +1,381 @@ +# 3D free-field site response using conforming TenNodeTetrahedronUP elements. +# Geometry, layers, materials, drainage, dashpots, and input motion match +# freeField3D.tcl. Units are kN, m, and s. + +proc freshFile {fileName} { + global resultsDir + set fileName [file join $resultsDir $fileName] + set channel [open $fileName w] + close $channel + # Preserve the filename as one word for eval recorder commands. + return [list $fileName] +} + +proc fixMixedNode {nodeTag pressureNodeTags fixX fixY fixZ} { + if {[dict exists $pressureNodeTags $nodeTag]} { + fix $nodeTag $fixX $fixY $fixZ 0 + } else { + fix $nodeTag $fixX $fixY $fixZ + } +} + +set here [file normalize [file dirname [info script]]] +cd $here +# Write generated results beside this script in the results folder. +set resultsDir [file join [file dirname [file normalize [info script]]] results] +file mkdir $resultsDir + +wipe + +# ----------------------------------------------------------------------------- +# Geometry and discretization +# ----------------------------------------------------------------------------- +set soilThick 30.0 +set grade 2.0 +set numLayers 3 +set layerThick(1) 20.0 +set layerThick(2) 8.0 +set layerThick(3) 2.0 +set nElemY(1) 40 +set nElemY(2) 16 +set nElemY(3) 4 +set nElemT 60 +set sElemX 2.0 +set sElemZ 2.0 +set waterTable 2.0 +set waterHeight [expr {$soilThick - $waterTable}] + +for {set layer 1} {$layer <= $numLayers} {incr layer} { + set sElemY($layer) [expr {$layerThick($layer) / $nElemY($layer)}] +} + +# Corner tags 1--244 retain the numbering of freeField3D.tcl: four corners at +# each of the 61 elevations. Edge-midpoint tags are appended during meshing. +# Default ndf=4 is used only by pressure-carrying corner nodes. +model BasicBuilder -ndm 3 -ndf 4 +set pressureNodeTags [dict create] +set pressureNodes {} +set soilNodeTags {} +array set nodeX {} +array set nodeY {} +array set nodeZ {} +array set cornerTag {} +array set nodesByY {} + +set level 0 +set yCoord 0.0 +for {set layer 1} {$layer <= $numLayers} {incr layer} { + for {set localLevel 0} {$localLevel < $nElemY($layer)} {incr localLevel} { + foreach {position x z} {0 0.0 0.0 1 2.0 0.0 2 2.0 2.0 3 0.0 2.0} { + set tag [expr {4 * $level + $position + 1}] + set cornerTag($level,$position) $tag + set nodeX($tag) $x + set nodeY($tag) $yCoord + set nodeZ($tag) $z + node $tag $x $yCoord $z + dict set pressureNodeTags $tag 1 + lappend pressureNodes $tag + lappend soilNodeTags $tag + lappend nodesByY([format "%.12f" $yCoord]) $tag + if {$yCoord >= $waterHeight - 1.0e-10} { + fix $tag 0 0 0 1 + } + } + incr level + set yCoord [expr {$yCoord + $sElemY($layer)}] + } +} +# Add the four top corner nodes, which are not created by the half-open loops. +foreach {position x z} {0 0.0 0.0 1 2.0 0.0 2 2.0 2.0 3 0.0 2.0} { + set tag [expr {4 * $level + $position + 1}] + set cornerTag($level,$position) $tag + set nodeX($tag) $x + set nodeY($tag) $soilThick + set nodeZ($tag) $z + node $tag $x $soilThick $z + dict set pressureNodeTags $tag 1 + lappend pressureNodes $tag + lappend soilNodeTags $tag + lappend nodesByY([format "%.12f" $soilThick]) $tag + fix $tag 0 0 0 1 +} +set nextNodeTag [expr {4 * ($level + 1) + 1}] + +# ----------------------------------------------------------------------------- +# Materials +# ----------------------------------------------------------------------------- +set slope [expr {atan($grade / 100.0)}] +set g -9.81 +set fluidDensity 1.0 + +nDMaterial PressureDependMultiYield02 3 3 1.8 9.0e4 2.2e5 32 0.1 \ + 101.0 0.5 26 0.067 0.23 0.06 0.27 20 5.0 3.0 1.0 \ + 0.0 0.77 0.9 0.02 0.7 101.0 +set xWgt(3) 0.0 +set yWgt(3) [expr {$g * cos($slope)}] +set zWgt(3) [expr {$g * sin($slope)}] +set xPerm(3) 1.0e-2; set yPerm(3) 1.0e-2; set zPerm(3) 1.0e-2 +set uBulk(3) 2.2e6 +set eVoid(3) 0.77 +set n(3) [expr {$eVoid(3)/(1.0 + $eVoid(3))}] + +nDMaterial PressureDependMultiYield02 2 3 2.24 9.0e4 2.2e5 32 0.1 \ + 101.0 0.5 26 0.067 0.23 0.06 0.27 20 5.0 3.0 1.0 \ + 0.0 0.77 0.9 0.02 0.7 101.0 +set xWgt(2) 0.0 +set yWgt(2) [expr {$g * cos($slope)}] +set zWgt(2) [expr {$g * sin($slope)}] +set xPerm(2) 1.0e-5; set yPerm(2) 1.0e-5; set zPerm(2) 1.0e-5 +set uBulk(2) 2.2e6 +set eVoid(2) 0.77 +set n(2) [expr {$eVoid(2)/(1.0 + $eVoid(2))}] + +nDMaterial PressureDependMultiYield02 1 3 2.45 1.3e5 2.6e5 39 0.1 \ + 101.0 0.5 26 0.010 0.0 0.35 0.0 20 5.0 3.0 1.0 \ + 0.0 0.47 0.9 0.02 0.7 101.0 +set xWgt(1) 0.0 +set yWgt(1) [expr {$g * cos($slope)}] +set zWgt(1) [expr {$g * sin($slope)}] +set xPerm(1) 1.0e-2; set yPerm(1) 1.0e-2; set zPerm(1) 1.0e-2 +set uBulk(1) 2.2e6 +set eVoid(1) 0.47 +set n(1) [expr {$eVoid(1)/(1.0 + $eVoid(1))}] + +# ----------------------------------------------------------------------------- +# Conforming C3D10-UP mesh +# ----------------------------------------------------------------------------- +# Six positive-orientation tetrahedra about the hexahedron diagonal 0--6. +# The y/z axis exchange relative to generate_c3d10_column_mesh.py is corrected +# by swapping each tetrahedron's second and third corner. +set localTets { + {0 2 1 6} + {0 3 2 6} + {0 7 3 6} + {0 4 7 6} + {0 5 4 6} + {0 1 5 6} +} +# TenNodeTetrahedronUP order: 12, 23, 13, 14, 34, 24. +# Thus local nodes 9 and 10 are the 3-4 and 2-4 edge nodes, respectively. +set edgeOrder {{0 1} {1 2} {0 2} {0 3} {2 3} {1 3}} +set edgeNodeTags [dict create] +set elementTags {} +array set layerElementTags {} +set elementTag 1 + +for {set cell 0} {$cell < $nElemT} {incr cell} { + if {$cell < 40} { + set layer 1 + } elseif {$cell < 56} { + set layer 2 + } else { + set layer 3 + } + set hex [list \ + $cornerTag($cell,0) $cornerTag($cell,1) \ + $cornerTag($cell,2) $cornerTag($cell,3) \ + $cornerTag([expr {$cell + 1}],0) $cornerTag([expr {$cell + 1}],1) \ + $cornerTag([expr {$cell + 1}],2) $cornerTag([expr {$cell + 1}],3)] + + foreach localTet $localTets { + set corners {} + foreach localIndex $localTet { lappend corners [lindex $hex $localIndex] } + set midsideNodes {} + foreach edge $edgeOrder { + set first [lindex $corners [lindex $edge 0]] + set second [lindex $corners [lindex $edge 1]] + if {$first < $second} { + set edgeKey "$first,$second" + } else { + set edgeKey "$second,$first" + } + if {![dict exists $edgeNodeTags $edgeKey]} { + set midTag $nextNodeTag + incr nextNodeTag + dict set edgeNodeTags $edgeKey $midTag + set x [expr {0.5 * ($nodeX($first) + $nodeX($second))}] + set y [expr {0.5 * ($nodeY($first) + $nodeY($second))}] + set z [expr {0.5 * ($nodeZ($first) + $nodeZ($second))}] + set nodeX($midTag) $x + set nodeY($midTag) $y + set nodeZ($midTag) $z + node $midTag $x $y $z -ndf 3 + lappend soilNodeTags $midTag + lappend nodesByY([format "%.12f" $y]) $midTag + } + lappend midsideNodes [dict get $edgeNodeTags $edgeKey] + } + eval element TenNodeTetrahedronUP $elementTag $corners $midsideNodes $layer \ + [expr {$uBulk($layer)/$n($layer)}] $fluidDensity 1.0 1.0 1.0 \ + $xWgt($layer) $yWgt($layer) $zWgt($layer) + lappend elementTags $elementTag + lappend layerElementTags($layer) $elementTag + incr elementTag + } +} +set nSoilNodes [llength $soilNodeTags] +set nTetElements [llength $elementTags] +puts "Created $nSoilNodes mixed-DOF nodes and $nTetElements TenNodeTetrahedronUP elements." + +# ----------------------------------------------------------------------------- +# Free-field constraints and drainage +# ----------------------------------------------------------------------------- +# All displacement nodes at a common elevation move together, matching the +# one-element-wide free-field column assumption in the SSPbrickUP model. +set levelMasterNodes {} +set baseMaster -1 +set topMaster -1 +set topY -1.0e30 +foreach yKey [lsort -real [array names nodesByY]] { + set levelNodes [lsort -integer -unique $nodesByY($yKey)] + set retained [lindex $levelNodes 0] + lappend levelMasterNodes $retained + if {abs($yKey) < 1.0e-10} { set baseMaster $retained } + if {$yKey > $topY} { set topY $yKey; set topMaster $retained } + foreach constrained [lrange $levelNodes 1 end] { + equalDOF $retained $constrained 1 2 3 + } + if {abs($yKey) < 1.0e-10} { + foreach nodeTag $levelNodes { + # Vertical and transverse base fixity; x remains connected to the dashpot. + fixMixedNode $nodeTag $pressureNodeTags 0 1 1 + } + } +} + +# ----------------------------------------------------------------------------- +# Lysmer dashpots +# ----------------------------------------------------------------------------- +model BasicBuilder -ndm 3 -ndf 3 +set dashF $nextNodeTag; incr nextNodeTag +set dashX $nextNodeTag; incr nextNodeTag +set dashZ $nextNodeTag; incr nextNodeTag +node $dashF 0.0 0.0 0.0 +node $dashX 0.0 0.0 0.0 +node $dashZ 0.0 0.0 0.0 +fix $dashF 1 1 1 +fix $dashX 0 1 1 +fix $dashZ 1 1 0 +equalDOF $baseMaster $dashX 1 +equalDOF $baseMaster $dashZ 3 +set colArea [expr {$sElemX * $sElemZ}] +set rockVS 700.0 +set rockDen 2.5 +set dashpotCoeff [expr {$rockVS * $rockDen * $colArea}] +uniaxialMaterial Viscous 4 $dashpotCoeff 1 +element zeroLength $elementTag $dashF $dashX -mat 4 -dir 1 +incr elementTag +element zeroLength $elementTag $dashF $dashZ -mat 4 -dir 3 + +# ----------------------------------------------------------------------------- +# Analysis parameters and gravity +# ----------------------------------------------------------------------------- +set motionDT 0.005 +set motionSteps 7990 +set duration [expr {$motionDT * $motionSteps}] +set vsMax 250.0 +set minSize $sElemY(1) +for {set layer 2} {$layer <= $numLayers} {incr layer} { + if {$sElemY($layer) < $minSize} { set minSize $sElemY($layer) } +} +set kTrial [expr {$minSize / pow($vsMax, 0.5)}] +if {$motionDT <= $kTrial} { + set nSteps $motionSteps + set dT $motionDT +} else { + set nSteps [expr {int(floor($duration / $kTrial) + 1)}] + set dT [expr {$duration / $nSteps}] +} +set gamma 0.5 +set beta 0.25 + +eval recorder Node -file [freshFile c3d10UP_Gdisplacement.out] -time -node $soilNodeTags -dof 1 2 3 disp +eval recorder Node -file [freshFile c3d10UP_GporePressure.out] -time -node $pressureNodes -dof 4 vel +eval recorder Element -file [freshFile c3d10UP_Gstress_gp1.out] -time -ele $elementTags material 1 stress +eval recorder Element -file [freshFile c3d10UP_Gstrain_gp1.out] -time -ele $elementTags material 1 strain + +model BasicBuilder -ndm 3 -ndf 4 +for {set layer 1} {$layer <= $numLayers} {incr layer} { + updateMaterialStage -material $layer -stage 0 +} +constraints Penalty 1.0e14 1.0e14 +test NormDispIncr 1.0e-5 30 1 +algorithm Newton +numberer RCM +system UmfPack +integrator Newmark $gamma $beta +analysis Transient +set startT [clock seconds] +set ok [analyze 20 500.0] +if {$ok != 0} { error "Elastic gravity analysis failed at [getTime], code $ok" } +puts "Finished with elastic gravity analysis..." + +for {set layer 1} {$layer <= $numLayers} {incr layer} { + updateMaterialStage -material $layer -stage 1 +} +set ok [analyze 40 0.05] +if {$ok != 0} { error "Plastic gravity analysis failed at [getTime], code $ok" } +puts "Finished with plastic gravity analysis..." + +# Replace the high gravity-stage permeability by each layer's physical value. +foreach layer {1 2 3} { + foreach elementTag $layerElementTags($layer) { + setParameter -value $xPerm($layer) -ele $elementTag xPerm + setParameter -value $yPerm($layer) -ele $elementTag yPerm + setParameter -value $zPerm($layer) -ele $elementTag zPerm + } +} +puts "Finished updating permeabilities for dynamic analysis..." + +# ----------------------------------------------------------------------------- +# Dynamic recorders and loading +# ----------------------------------------------------------------------------- +setTime 0.0 +wipeAnalysis +remove recorders +set recDT [expr {10.0 * $motionDT}] +eval recorder Node -file [freshFile c3d10UP_displacement.out] -time -dT $recDT -node $soilNodeTags -dof 1 2 3 disp +eval recorder Node -file [freshFile c3d10UP_velocity.out] -time -dT $recDT -node $soilNodeTags -dof 1 2 3 vel +eval recorder Node -file [freshFile c3d10UP_acceleration.out] -time -dT $recDT -node $soilNodeTags -dof 1 2 3 accel +eval recorder Node -file [freshFile c3d10UP_porePressure.out] -time -dT $recDT -node $pressureNodes -dof 4 vel +eval recorder Node -file [freshFile c3d10UP_level_disp.out] -time -dT $recDT -node $levelMasterNodes -dof 1 2 3 disp +eval recorder Element -file [freshFile c3d10UP_stress_gp1.out] -time -dT $recDT -ele $elementTags material 1 stress +eval recorder Element -file [freshFile c3d10UP_strain_gp1.out] -time -dT $recDT -ele $elementTags material 1 strain + +set velocityFile yerbaNSvelocity.out +timeSeries Path 10 -dt $motionDT -filePath $velocityFile -factor $dashpotCoeff +pattern Plain 10 10 { + # Base corner node has ux, uy, uz, and pore-pressure DOFs. + load $baseMaster 1.0 0.0 0.0 0.0 +} +puts "Dynamic loading created..." + +constraints Penalty 1.0e14 1.0e14 +test NormDispIncr 1.0e-3 55 1 +algorithm KrylovNewton +numberer RCM +system UmfPack +integrator Newmark $gamma $beta +analysis Transient + +set ok [analyze $nSteps $dT] +if {$ok != 0} { + puts "Did not converge at [getTime]; reducing time step by two." + set completedTime [getTime] + set remainingSteps [expr {int(ceil(($duration - $completedTime) / ($dT / 2.0)))}] + set dT [expr {$dT / 2.0}] + set ok [analyze $remainingSteps $dT] +} +if {$ok != 0} { + puts "Did not converge at [getTime]; reducing time step by two again." + set completedTime [getTime] + set remainingSteps [expr {int(ceil(($duration - $completedTime) / ($dT / 2.0)))}] + set dT [expr {$dT / 2.0}] + set ok [analyze $remainingSteps $dT] +} +if {$ok != 0} { error "Dynamic analysis failed at [getTime], code $ok" } + +set endT [clock seconds] +puts "Finished with TenNodeTetrahedronUP dynamic analysis at [getTime]." +puts "Analysis execution time: [expr {$endT - $startT}] seconds" +wipe diff --git a/source/user/examples/UWExamples/freeField3D_UPcomparison/freeField3D_meshes.py b/source/user/examples/UWExamples/freeField3D_UPcomparison/freeField3D_meshes.py new file mode 100644 index 00000000..4800faec --- /dev/null +++ b/source/user/examples/UWExamples/freeField3D_UPcomparison/freeField3D_meshes.py @@ -0,0 +1,289 @@ +"""Plot SSPbrickUP, 10NodeTetrahedronUP, SSPtetUP and the mixed mesh side by side.""" + +from pathlib import Path +import re + +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt +from matplotlib.lines import Line2D +from matplotlib.patches import Patch +from mpl_toolkits.mplot3d.art3d import Line3DCollection +import numpy as np + + +HERE = Path(__file__).resolve().parent +FIGURES = HERE / "figures" +FIGURES.mkdir(parents=True, exist_ok=True) +RESULTS = HERE / "results" +WIDTH_X = 2.0 +WIDTH_Z = 2.0 +HEIGHT = 30.0 +N_CELLS = 60 +DY = HEIGHT / N_CELLS + +# Hexahedron corner numbering used in the Tcl mesh. Each tuple is reordered to +# have positive orientation after using global y as the column's vertical axis. +LOCAL_TETS = ( + (0, 2, 1, 6), + (0, 3, 2, 6), + (0, 7, 3, 6), + (0, 4, 7, 6), + (0, 5, 4, 6), + (0, 1, 5, 6), +) +TET_EDGES = ((0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)) +BRICK_EDGES = ((0, 1), (1, 2), (2, 3), (3, 0), + (4, 5), (5, 6), (6, 7), (7, 4), + (0, 4), (1, 5), (2, 6), (3, 7)) +MATERIALS = ( + (1, 0, 40, "tab:blue", "Material 1: 0–20 m"), + (2, 40, 56, "tab:orange", "Material 2: 20–28 m"), + (3, 56, 60, "tab:purple", "Material 3: 28–30 m"), +) + + +def corners_by_level() -> list[tuple[float, float, float]]: + nodes = [] + for level in range(N_CELLS + 1): + y = level * DY + nodes.extend(((0.0, y, 0.0), (WIDTH_X, y, 0.0), + (WIDTH_X, y, WIDTH_Z), (0.0, y, WIDTH_Z))) + return nodes + + +def hexahedra() -> list[tuple[int, ...]]: + cells = [] + for level in range(N_CELLS): + lower = tuple(4 * level + i for i in range(4)) + upper = tuple(4 * (level + 1) + i for i in range(4)) + cells.append(lower + upper) + return cells + + +def c3d10_mesh(): + nodes = corners_by_level() + edge_midpoints: dict[tuple[int, int], int] = {} + tetrahedra = [] + for hexahedron in hexahedra(): + for local_tet in LOCAL_TETS: + corners = tuple(hexahedron[index] for index in local_tet) + midsides = [] + # Tcl/OpenSees order: 12, 23, 13, 14, 34, 24. + for first_local, second_local in ((0, 1), (1, 2), (0, 2), + (0, 3), (2, 3), (1, 3)): + edge = tuple(sorted((corners[first_local], corners[second_local]))) + if edge not in edge_midpoints: + first = np.asarray(nodes[edge[0]]) + second = np.asarray(nodes[edge[1]]) + edge_midpoints[edge] = len(nodes) + nodes.append(tuple(0.5 * (first + second))) + midsides.append(edge_midpoints[edge]) + tetrahedra.append(corners + tuple(midsides)) + return np.asarray(nodes), tetrahedra + + +def unique_segments(connectivities, local_edges): + edge_keys = set() + for connectivity in connectivities: + for first, second in local_edges: + edge_keys.add(tuple(sorted((connectivity[first], connectivity[second])))) + return sorted(edge_keys) + + +def read_mixed_mesh(path: Path): + """Read shared coordinates and both topology blocks from a GiD mesh.""" + coordinates = {} + elements = [] + element_tags = set() + section = None + topology = None + node_count = None + for line_number, line in enumerate(path.read_text().splitlines(), 1): + line = line.strip() + if not line or line.startswith("#"): + continue + if line.upper().startswith("MESH "): + match = re.search(r"ElemType\s+(\w+)\s+Nnode\s+(\d+)", line, re.I) + if match is None: + raise ValueError(f"{path}:{line_number}: invalid mesh header") + topology, node_count = match.group(1).lower(), int(match.group(2)) + if (topology, node_count) not in (("hexahedra", 8), ("tetrahedra", 4)): + raise ValueError(f"{path}:{line_number}: unsupported topology") + section = None + elif line.lower() in ("coordinates", "elements"): + section = line.lower() + elif line.lower().startswith("end "): + section = None + elif section == "coordinates": + fields = line.split() + tag, xyz = int(fields[0]), tuple(map(float, fields[1:4])) + if tag in coordinates and coordinates[tag] != xyz: + raise ValueError(f"{path}:{line_number}: conflicting coordinates for node {tag}") + coordinates[tag] = xyz + elif section == "elements": + fields = list(map(int, line.split())) + if len(fields) != node_count + 2 or fields[0] in element_tags: + raise ValueError(f"{path}:{line_number}: invalid or duplicate element") + element_tags.add(fields[0]) + elements.append((topology, fields[-1], tuple(fields[1:-1]))) + if not coordinates or not elements: + raise ValueError(f"{path}: no mesh coordinates or elements found") + tags = sorted(coordinates) + indices = {tag: index for index, tag in enumerate(tags)} + nodes = np.asarray([coordinates[tag] for tag in tags]) + indexed_elements = [ + (topology, material, tuple(indices[tag] for tag in connectivity)) + for topology, material, connectivity in elements + ] + return nodes, indexed_elements + + +def ssptet_mesh(): + """Read the exported SSPtetUP mesh, or reproduce its Tcl connectivity.""" + path = RESULTS / "ssptetUP_freeField3D.flavia.msh" + if path.is_file(): + return read_mixed_mesh(path) + # SSPtetUP Tcl corner tags run around each level in the z direction first. + nodes = np.asarray(corners_by_level())[:, (2, 1, 0)] + local_tets = ((0, 1, 2, 6), (0, 2, 3, 6), (0, 3, 7, 6), + (0, 7, 4, 6), (0, 4, 5, 6), (0, 5, 1, 6)) + elements = [] + for cell, hex_nodes in enumerate(hexahedra()): + material = next(tag for tag, first, last, _, _ in MATERIALS if first <= cell < last) + elements.extend(("tetrahedra", material, tuple(hex_nodes[i] for i in tet)) + for tet in local_tets) + return nodes, elements + + +def add_segments(axis, nodes, segments, *, color, linewidth, alpha): + if not segments: + return + lines = [(nodes[first], nodes[second]) for first, second in segments] + axis.add_collection3d( + Line3DCollection(lines, colors=color, linewidths=linewidth, alpha=alpha) + ) + + +def format_axis(axis, title): + axis.set_title(title, pad=12) + axis.set_xlabel("x [m]") + axis.set_ylabel("z [m]") + axis.set_zlabel("elevation y [m]") + axis.set_xlim(0.0, WIDTH_X) + axis.set_ylim(0.0, WIDTH_Z) + axis.set_zlim(0.0, HEIGHT) + axis.set_box_aspect((WIDTH_X, WIDTH_Z, HEIGHT)) + axis.set_xticks((0.0, 2.0)) + axis.set_yticks((0.0, 2.0)) + axis.set_zticks(np.arange(0.0, HEIGHT + 0.1, 5.0)) + axis.view_init(elev=12, azim=-55) + + +def main() -> None: + brick_nodes = np.asarray(corners_by_level()) + bricks = hexahedra() + brick_edges = unique_segments( + bricks, + ((0, 1), (1, 2), (2, 3), (3, 0), + (4, 5), (5, 6), (6, 7), (7, 4), + (0, 4), (1, 5), (2, 6), (3, 7)), + ) + + tet_nodes, tetrahedra = c3d10_mesh() + tet_corner_connectivity = [tet[:4] for tet in tetrahedra] + tet_edges = unique_segments(tet_corner_connectivity, TET_EDGES) + pressure_count = len(brick_nodes) + # Display elevation vertically while retaining the model's global axes in + # labels: plotting coordinates are (global x, global z, global y). + brick_plot_nodes = brick_nodes[:, (0, 2, 1)] + tet_plot_nodes = tet_nodes[:, (0, 2, 1)] + mixed_nodes, mixed_elements = read_mixed_mesh(RESULTS / "mixed_freeField3D.flavia.msh") + mixed_plot_nodes = mixed_nodes[:, (0, 2, 1)] + ssp_nodes, ssp_elements = ssptet_mesh() + ssp_plot_nodes = ssp_nodes[:, (0, 2, 1)] + + figure = plt.figure(figsize=(20, 12), constrained_layout=True) + brick_axis = figure.add_subplot(1, 4, 1, projection="3d") + tet_axis = figure.add_subplot(1, 4, 2, projection="3d") + ssp_axis = figure.add_subplot(1, 4, 3, projection="3d") + mixed_axis = figure.add_subplot(1, 4, 4, projection="3d") + + for _, first_cell, last_cell, color, _ in MATERIALS: + material_edges = unique_segments( + bricks[first_cell:last_cell], + ((0, 1), (1, 2), (2, 3), (3, 0), + (4, 5), (5, 6), (6, 7), (7, 4), + (0, 4), (1, 5), (2, 6), (3, 7)), + ) + add_segments(brick_axis, brick_plot_nodes, material_edges, + color=color, linewidth=0.9, alpha=0.85) + brick_axis.scatter(brick_plot_nodes[:, 0], brick_plot_nodes[:, 1], brick_plot_nodes[:, 2], + s=3, color="0.2", depthshade=False) + format_axis(brick_axis, f"SSPbrickUP\n{len(bricks)} elements, {len(brick_nodes)} nodes") + + for _, first_cell, last_cell, color, _ in MATERIALS: + material_tets = tet_corner_connectivity[6 * first_cell:6 * last_cell] + material_edges = unique_segments(material_tets, TET_EDGES) + add_segments(tet_axis, tet_plot_nodes, material_edges, + color=color, linewidth=0.55, alpha=0.62) + tet_axis.scatter(tet_plot_nodes[:pressure_count, 0], tet_plot_nodes[:pressure_count, 1], + tet_plot_nodes[:pressure_count, 2], s=5, color="tab:red", + label="corner: $u_x,u_y,u_z,p$", depthshade=False) + tet_axis.scatter(tet_plot_nodes[pressure_count:, 0], tet_plot_nodes[pressure_count:, 1], + tet_plot_nodes[pressure_count:, 2], s=2, color="tab:green", alpha=0.48, + label="midside: $u_x,u_y,u_z$", depthshade=False) + format_axis( + tet_axis, + f"10NodeTetrahedronUP\n{len(tetrahedra)} elements, {len(tet_nodes)} nodes", + ) + for material, _, _, color, _ in MATERIALS: + connectivity = [nodes for kind, layer, nodes in ssp_elements + if kind == "tetrahedra" and layer == material] + add_segments(ssp_axis, ssp_plot_nodes, unique_segments(connectivity, TET_EDGES), + color=color, linewidth=0.55, alpha=0.7) + ssp_axis.scatter(ssp_plot_nodes[:, 0], ssp_plot_nodes[:, 1], ssp_plot_nodes[:, 2], + s=4, color="tab:red", depthshade=False) + format_axis(ssp_axis, f"SSPtetUP\n{len(ssp_elements)} elements, {len(ssp_nodes)} nodes") + + for material, _, _, color, _ in MATERIALS: + for topology, edges in (("hexahedra", BRICK_EDGES), ("tetrahedra", TET_EDGES)): + connectivity = [nodes for kind, layer, nodes in mixed_elements + if kind == topology and layer == material] + add_segments(mixed_axis, mixed_plot_nodes, unique_segments(connectivity, edges), + color=color, linewidth=0.8, alpha=0.8) + mixed_axis.scatter(mixed_plot_nodes[:, 0], mixed_plot_nodes[:, 1], mixed_plot_nodes[:, 2], + s=4, color="tab:red", depthshade=False) + mixed_bricks = sum(kind == "hexahedra" for kind, _, _ in mixed_elements) + mixed_tets = sum(kind == "tetrahedra" for kind, _, _ in mixed_elements) + format_axis(mixed_axis, f"Mixed SSPbrickUP / SSPtetUP\n" + f"{mixed_bricks} bricks + {mixed_tets} tets, {len(mixed_nodes)} nodes") + material_legend = [Patch(facecolor=color, label=label) for _, _, _, color, label in MATERIALS] + node_legend = [ + Line2D([], [], marker="o", linestyle="none", color="tab:red", markersize=5, + label="corner: $u_x,u_y,u_z,p$"), + Line2D([], [], marker="o", linestyle="none", color="tab:green", markersize=4, + label="midside: $u_x,u_y,u_z$"), + ] + figure.legend(handles=material_legend, loc="lower center", ncol=3, + bbox_to_anchor=(0.5, 0.075), title="Soil layers") + tet_axis.legend(handles=node_legend, loc="upper center", + bbox_to_anchor=(0.5, -0.02), fontsize=8) + + figure.suptitle("3D free-field meshes: 2 m × 30 m × 2 m", fontsize=15) + output = FIGURES / "freeField3D_meshes.png" + figure.savefig(output, dpi=220) + print(f"SSPbrickUP: {len(bricks)} elements, {len(brick_nodes)} four-DOF nodes") + print( + f"10NodeTetrahedronUP: {len(tetrahedra)} elements, {pressure_count} four-DOF corner nodes, " + f"{len(tet_nodes) - pressure_count} three-DOF midside nodes" + ) + print(f"Wrote {output}") + print(f"Mixed: {mixed_bricks} bricks, {mixed_tets} tetrahedra, {len(mixed_nodes)} four-DOF nodes") + print(f"SSPtetUP: {len(ssp_elements)} tetrahedra, {len(ssp_nodes)} four-DOF nodes") + plt.close(figure) + + +if __name__ == "__main__": + main() diff --git a/source/user/examples/UWExamples/freeField3D_UPcomparison/freeField3D_mixed.tcl b/source/user/examples/UWExamples/freeField3D_UPcomparison/freeField3D_mixed.tcl new file mode 100644 index 00000000..f5ba462c --- /dev/null +++ b/source/user/examples/UWExamples/freeField3D_UPcomparison/freeField3D_mixed.tcl @@ -0,0 +1,537 @@ +# Mixed free-field column based on freeField3D.tcl. +# Layer 1 (y=0..20 m): SSPbrickUP, layer 2 (20..28 m): SSPtetUP, +# layer 3 (28..30 m): SSPbrickUP. Units: kN, m, s. +# Both formulations receive fluid bulk uBulk and void ratio separately. +# Results: results/mixed_*.out; input motion: example/yerbaNSvelocity.out. +# Retain the original alpha=1.5e-6 as an uncalibrated starting value. +# Interface nodes are shared. Brick bilinear and tetrahedron linear pressure +# traces differ between interface nodes; this is a mixing experiment. +# Original free-field displacement ties remain; no pressure ties are added. + +set here [file normalize [file dirname [info script]]] +cd $here + +########################################################### +# # +# 3D site response analysis of a soil deposit on an # +# elastic half-space. Shaking is applied in a single # +# plane, and the site has a slope out of the plane of # +# shaking. The finite rigidity of the underlying medium # +# is considered through the use of a viscous damper at # +# the base of the soil column. # +# # +# Created by: Chris McGann # +# Pedro Arduino # +# --University of Washington-- # +# # +# ---> Basic units are kN and m (unless specified) # +# # +########################################################### + +# Write generated results beside this script in the results folder. +set resultsDir [file join [file dirname [file normalize [info script]]] results] +file mkdir $resultsDir + +wipe + +#----------------------------------------------------------------------------------------- +# 1. DEFINE ANALYSIS PARAMETERS +#----------------------------------------------------------------------------------------- + +#---SOIL GEOMETRY +# thickness of soil profile (m) +set soilThick 30.0 +# grade of slope (%) +set grade 2.0 +# number of soil layers +set numLayers 3 +# layer thicknessess (m) +set layerThick(3) 2.0 +set layerThick(2) 8.0 +set layerThick(1) 20.0 +# depth of water table +set waterTable 2.0 + +# define layer boundaries +set layerBound(1) $layerThick(1) +for {set i 2} {$i <= $numLayers} {incr i 1} { + set layerBound($i) [expr $layerBound([expr $i-1])+$layerThick($i)] +} + +#---MESH GEOMETRY +# number of elements in horizontal direction +set nElemX 1 +set nElemZ 1 +# number of nodes in horizontal direction +set nNodeX [expr 2*$nElemX+1] +# horizontal element size (m) +set sElemX 2.0 +set sElemZ 2.0 + +# number of elements in vertical direction for each layer +set nElemY(3) 4 +set nElemY(2) 16 +set nElemY(1) 40 +# total number of elements in vertical direction +set nElemT 60 +# nElemT counts original cells: only the second layer is subdivided. +set nSoilElements [expr {$nElemY(1) + 6*$nElemY(2) + $nElemY(3)}] +# vertical element size in each layer +for {set i 1} {$i <=$numLayers} {incr i 1} { + set sElemY($i) [expr $layerThick($i)/$nElemY($i)] + puts "size: $sElemY($i)" +} + +# number of nodes in vertical direction in each layer +set nNodeT 0 +for {set k 1} {$k < $numLayers} {incr k 1} { + set nNodeY($k) [expr 4*$nElemY($k)] + puts "number of nodes in layer $k: $nNodeY($k)" + set nNodeT [expr $nNodeT + $nNodeY($k)] +} +set nNodeY($numLayers) [expr 4*($nElemY($numLayers) + 1)] +puts "number of nodes in layer $numLayers: $nNodeY($numLayers)" +set nNodeT [expr $nNodeT + $nNodeY($numLayers)] +puts "total number of nodes: $nNodeT" + +#----------------------------------------------------------------------------------------- +# 2. CREATE SOIL NODES AND BOUNDARY CONDITIONS +#----------------------------------------------------------------------------------------- + +model BasicBuilder -ndm 3 -ndf 4 + +set yCoord 0.0 +set count 0 +set gwt 1 +set waterHeight [expr $soilThick-$waterTable] +set nodesInfo [open [file join $resultsDir mixed_nodesInfo.dat] w] +# loop over layers +for {set k 1} {$k <= $numLayers} {incr k 1} { + # loop over nodes + for {set j 1} {$j <= $nNodeY($k)} {incr j 4} { + node [expr $j+$count] 0.0 $yCoord 0.0 + node [expr $j+$count+1] 0.0 $yCoord $sElemZ + node [expr $j+$count+2] $sElemX $yCoord $sElemZ + node [expr $j+$count+3] $sElemX $yCoord 0.0 + + puts $nodesInfo "[expr $j+$count] 0.0 $yCoord 0.0" + puts $nodesInfo "[expr $j+$count+1] 0.0 $yCoord $sElemZ" + puts $nodesInfo "[expr $j+$count+2] $sElemX $yCoord $sElemZ" + puts $nodesInfo "[expr $j+$count+3] $sElemX $yCoord 0.0" + + # designate nodes above water table + if {$yCoord>=$waterHeight} { + set dryNode($gwt) [expr $j+$count] + set gwt [expr $gwt+1] + set dryNode($gwt) [expr $j+$count+1] + set gwt [expr $gwt+1] + set dryNode($gwt) [expr $j+$count+2] + set gwt [expr $gwt+1] + set dryNode($gwt) [expr $j+$count+3] + set gwt [expr $gwt+1] + } + + set yCoord [expr $yCoord + $sElemY($k)] + } + set count [expr $count + $nNodeY($k)] +} +close $nodesInfo +puts "Finished creating all soil nodes..." + +# define boundary conditions for nodes at base of column +fix 1 0 1 1 0 +fix 2 0 1 1 0 +fix 3 0 1 1 0 +fix 4 0 1 1 0 +equalDOF 1 2 1 +equalDOF 1 3 1 +equalDOF 1 4 1 + +# define periodic boundary conditions for remaining nodes +set count 0 +for {set k 5} {$k <= [expr $nNodeT]} {incr k 4} { + equalDOF $k [expr $k+1] 1 2 3 + equalDOF $k [expr $k+2] 1 2 3 + equalDOF $k [expr $k+3] 1 2 3 + puts "equalDOF $k [expr $k+1] 1 2 3" + puts "equalDOF $k [expr $k+2] 1 2 3" + puts "equalDOF $k [expr $k+3] 1 2 3" +} + +# define pore pressure boundaries for nodes above water table +for {set i 1} {$i < $gwt} {incr i 1} { + fix $dryNode($i) 0 0 0 1 +} +puts "Finished creating all soil boundary conditions..." + +#----------------------------------------------------------------------------------------- +# 4. CREATE SOIL MATERIALS +#----------------------------------------------------------------------------------------- + +set slope [expr atan($grade/100.0)] +set g -9.81 + +nDMaterial PressureDependMultiYield02 3 3 1.8 9.0e4 2.2e5 32 0.1 \ + 101.0 0.5 26 0.067 0.23 0.06 \ + 0.27 20 5.0 3.0 1.0 \ + 0.0 0.77 0.9 0.02 0.7 101.0 +set xWgt(3) 0.0 +set yWgt(3) [expr $g*cos($slope)] +set zWgt(3) [expr $g*sin($slope)] +set uBulk(3) 2.2e6 +set xPerm(3) 1.0e-2 +set yPerm(3) 1.0e-2 +set zPerm(3) 1.0e-2 +set eVoid(3) 0.77 + +nDMaterial PressureDependMultiYield02 2 3 2.24 9.0e4 2.2e5 32 0.1 \ + 101.0 0.5 26 0.067 0.23 0.06 \ + 0.27 20 5.0 3.0 1.0 \ + 0.0 0.77 0.9 0.02 0.7 101.0 +set xWgt(2) 0.0 +set yWgt(2) [expr $g*cos($slope)] +set zWgt(2) [expr $g*sin($slope)] +set uBulk(2) 2.2e6 +set xPerm(2) 1.0e-5 +set yPerm(2) 1.0e-5 +set zPerm(2) 1.0e-5 +set eVoid(2) 0.77 + +nDMaterial PressureDependMultiYield02 1 3 2.45 1.3e5 2.6e5 39 0.1 \ + 101.0 0.5 26 0.010 0.0 0.35 \ + 0.0 20 5.0 3.0 1.0 \ + 0.0 0.47 0.9 0.02 0.7 101.0 +set xWgt(1) 0.0 +set yWgt(1) [expr $g*cos($slope)] +set zWgt(1) [expr $g*sin($slope)] +set uBulk(1) 2.2e6 +set xPerm(1) 1.0e-2 +set yPerm(1) 1.0e-2 +set zPerm(1) 1.0e-2 +set eVoid(1) 0.47 + +puts "Finished creating all soil materials..." + +#----------------------------------------------------------------------------------------- +# 5. CREATE SOIL ELEMENTS +#----------------------------------------------------------------------------------------- + +set alpha 1.5e-6 +# Local corners: I J K L on the bottom, M N O P on the top. +# Six tetrahedra share diagonal I--O; matching faces conform between cells. +set localTets {{0 1 2 6} {0 2 3 6} {0 3 7 6} + {0 7 4 6} {0 4 5 6} {0 5 1 6}} +set count 0 +set eleTag 0 +set brickConnectivity {} +set tetConnectivity {} +set elemInfo [open [file join $resultsDir mixed_elementInfo.dat] w] +puts $elemInfo "# tag layer cell type nodes (8 for SSPbrickUP, 4 for SSPtetUP)" +for {set k 1} {$k <= $numLayers} {incr k} { + set firstElement($k) [expr {$eleTag + 1}] + for {set j 1} {$j <= $nElemY($k)} {incr j} { + set cell [expr {$j + $count}] + set firstNode [expr {4 * $cell - 3}] + set hex {} + for {set offset 0} {$offset < 8} {incr offset} { + lappend hex [expr {$firstNode + $offset}] + } + # Use the original high permeability during gravity for both types. + if {$k == 2} { + foreach localTet $localTets { + set tet {} + foreach localNode $localTet { lappend tet [lindex $hex $localNode] } + incr eleTag + lassign $tet n1 n2 n3 n4 + element SSPtetUP $eleTag $n1 $n2 $n3 $n4 $k \ + $uBulk($k) 1.0 1.0 1.0 1.0 $eVoid($k) $alpha \ + $xWgt($k) $yWgt($k) $zWgt($k) + lappend tetConnectivity [list $eleTag $n1 $n2 $n3 $n4 $k] + puts $elemInfo "$eleTag $k $cell SSPtetUP [join $tet { }]" + } + } else { + incr eleTag + lassign $hex nI nJ nK nL nM nN nO nP + element SSPbrickUP $eleTag $nI $nJ $nK $nL $nM $nN $nO $nP $k \ + $uBulk($k) 1.0 1.0 1.0 1.0 $eVoid($k) $alpha \ + $xWgt($k) $yWgt($k) $zWgt($k) + lappend brickConnectivity [list $eleTag $nI $nJ $nK $nL $nM $nN $nO $nP $k] + puts $elemInfo "$eleTag $k $cell SSPbrickUP [join $hex { }]" + } + } + set lastElement($k) $eleTag + set count [expr {$count + $nElemY($k)}] +} +if {$eleTag != $nSoilElements} { error "Unexpected soil element count: $eleTag" } +close $elemInfo +puts "Mixed mesh: [llength $brickConnectivity] bricks, [llength $tetConnectivity] tetrahedra, $nNodeT soil nodes." +puts "Finished creating all soil elements..." + +#----------------------------------------------------------------------------------------- +# 6. LYSMER DASHPOTS +#----------------------------------------------------------------------------------------- + +model BasicBuilder -ndm 3 -ndf 3 + +# define dashpot nodes +set dashF [expr $nNodeT + 1] +set dashX [expr $nNodeT + 2] +set dashZ [expr $nNodeT + 3] + +node $dashF 0.0 0.0 0.0 +node $dashX 0.0 0.0 0.0 +node $dashZ 0.0 0.0 0.0 + +# define fixities for dashpot nodes +fix $dashF 1 1 1 +fix $dashX 0 1 1 +fix $dashZ 1 1 0 + +# link dashpots with soil column +equalDOF 1 $dashX 1 +equalDOF 1 $dashZ 3 + +# dashpot material +set colArea [expr $sElemX*$sElemZ] +set rockVS 700.0 +set rockDen 2.5 +set dashpotCoeff [expr $rockVS*$rockDen*$colArea] +uniaxialMaterial Viscous [expr $numLayers+1] $dashpotCoeff 1 + +# dashpot elements +element zeroLength [expr {$nSoilElements+1}] $dashF $dashX -mat [expr $numLayers+1] -dir 1 +element zeroLength [expr {$nSoilElements+2}] $dashF $dashZ -mat [expr $numLayers+1] -dir 3 + +puts "Finished creating Lysmer dashpots..." + +#----------------------------------------------------------------------------------------- +# 8. CREATE GID FLAVIA.MSH FILE FOR POSTPROCESSING +#----------------------------------------------------------------------------------------- + +# GiD uses separate blocks for different element topologies. +set meshFile [open [file join $resultsDir mixed_freeField3D.flavia.msh] w] +foreach {meshName topology nodeCount connectivity} [list \ + ffMixedBrick Hexahedra 8 $brickConnectivity \ + ffMixedTet Tetrahedra 4 $tetConnectivity] { + puts $meshFile "MESH $meshName dimension 3 ElemType $topology Nnode $nodeCount" + puts $meshFile "Coordinates" + for {set tag 1} {$tag <= $nNodeT} {incr tag} { + puts $meshFile "$tag [join [nodeCoord $tag] { }]" + } + puts $meshFile "End Coordinates" + puts $meshFile "Elements" + foreach entry $connectivity { puts $meshFile [join $entry " "] } + puts $meshFile "End Elements" +} +close $meshFile + +#----------------------------------------------------------------------------------------- +# 7. GRAVITY RECORDERS +#----------------------------------------------------------------------------------------- + +## record nodal displacments, velocities, and accelerations at each time step +recorder Node -file [file join $resultsDir mixed_Gdisplacement.out] -time -nodeRange 1 $nNodeT -dof 1 2 3 disp +recorder Node -file [file join $resultsDir mixed_Gvelocity.out] -time -nodeRange 1 $nNodeT -dof 1 2 3 vel +recorder Node -file [file join $resultsDir mixed_Gacceleration.out] -time -nodeRange 1 $nNodeT -dof 1 2 3 accel +recorder Node -file [file join $resultsDir mixed_GporePressure.out] -time -nodeRange 1 $nNodeT -dof 4 vel + +# Six stress/strain components per soil element, in ascending element-tag order. +# mixed_elementInfo.dat maps each tag to its layer, cell and topology. +recorder Element -file [file join $resultsDir mixed_Gstress.out] -time -eleRange 1 $nSoilElements stress3D6 +recorder Element -file [file join $resultsDir mixed_Gstrain.out] -time -eleRange 1 $nSoilElements strain3D6 +puts "Finished creating gravity recorders..." + +#----------------------------------------------------------------------------------------- +# 9. DEFINE ANALYSIS PARAMETERS +#----------------------------------------------------------------------------------------- + +#---GROUND MOTION PARAMETERS +# time step in ground motion record +set motionDT 0.005 +# number of steps in ground motion record +set motionSteps 7990 + +#---RAYLEIGH DAMPING PARAMETERS +set pi 3.141592654 +# damping ratio +set damp 0.02 +# lower frequency +set omega1 [expr 2*$pi*0.2] +# upper frequency +set omega2 [expr 2*$pi*20] +# damping coefficients +set a0 [expr 2*$damp*$omega1*$omega2/($omega1 + $omega2)] +set a1 [expr 2*$damp/($omega1 + $omega2)] +puts "damping coefficients: a_0 = $a0; a_1 = $a1" + +#---DETERMINE STABLE ANALYSIS TIME STEP USING CFL CONDITION +# maximum shear wave velocity (m/s) +set vsMax 250.0 +# duration of ground motion (s) +set duration [expr $motionDT*$motionSteps] +# minimum element size +set minSize $sElemY(1) +for {set i 2} {$i <= $numLayers} {incr i 1} { + if {$sElemY($i) < $minSize} { + set minSize $sElemY($i) + } +} +# trial analysis time step +set kTrial [expr $minSize/(pow($vsMax,0.5))] +# define time step and number of steps for analysis +if { $motionDT <= $kTrial } { + set nSteps $motionSteps + set dT $motionDT +} else { + set nSteps [expr int(floor($duration/$kTrial)+1)] + set dT [expr $duration/$nSteps] +} +puts "number of steps in analysis: $nSteps" +puts "analysis time step: $dT" + +#---ANALYSIS PARAMETERS +# Newmark parameters +set gamma 0.5 +set beta 0.25 + +#----------------------------------------------------------------------------------------- +# 7. GRAVITY ANALYSIS +#----------------------------------------------------------------------------------------- + +model BasicBuilder -ndm 3 -ndf 4 + +# update materials to consider elastic behavior +for {set k 1} {$k <= $numLayers} {incr k} { + updateMaterialStage -material $k -stage 0 +} + +constraints Penalty 1.e14 1.e14 +test NormDispIncr 1e-5 30 1 +algorithm Newton +numberer Plain +system SparseGeneral +integrator Newmark $gamma $beta +analysis Transient + +set startT [clock seconds] +set ok [analyze 20 5.0e2] +if {$ok != 0} { error "Elastic gravity analysis failed at [getTime], code $ok" } + +puts "Finished with elastic gravity analysis..." + +# update materials to consider plastic behavior +for {set k 1} {$k <= $numLayers} {incr k} { + updateMaterialStage -material $k -stage 1 +} + +# plastic gravity loading +set ok [analyze 40 5.0e-2] +if {$ok != 0} { error "Plastic gravity analysis failed at [getTime], code $ok" } + +puts "Finished with plastic gravity analysis..." + +#----------------------------------------------------------------------------------------- +# 11. UPDATE ELEMENT PERMEABILITY VALUES FOR POST-GRAVITY ANALYSIS +#----------------------------------------------------------------------------------------- + +# Use the actual mixed-element tag ranges captured for each layer. +for {set k 1} {$k <= $numLayers} {incr k} { + setParameter -value $xPerm($k) -eleRange $firstElement($k) $lastElement($k) xPerm + setParameter -value $yPerm($k) -eleRange $firstElement($k) $lastElement($k) yPerm + setParameter -value $zPerm($k) -eleRange $firstElement($k) $lastElement($k) zPerm +} + +puts "Finished updating permeabilities for dynamic analysis..." + +#----------------------------------------------------------------------------------------- +# 8. CREATE POST-GRAVITY RECORDERS +#----------------------------------------------------------------------------------------- + +# reset time and analysis +setTime 0.0 +wipeAnalysis +remove recorders + +# recorder time step +set recDT [expr 10*$motionDT] + +## record nodal displacments, velocities, and accelerations at each time step +recorder Node -file [file join $resultsDir mixed_displacement.out] -time -dT $recDT -nodeRange 1 $nNodeT -dof 1 2 3 disp +recorder Node -file [file join $resultsDir mixed_velocity.out] -time -dT $recDT -nodeRange 1 $nNodeT -dof 1 2 3 vel +recorder Node -file [file join $resultsDir mixed_acceleration.out] -time -dT $recDT -nodeRange 1 $nNodeT -dof 1 2 3 accel +recorder Node -file [file join $resultsDir mixed_porePressure.out] -time -dT $recDT -nodeRange 1 $nNodeT -dof 4 vel + +# Six stress/strain components per soil element, in ascending element-tag order. +# mixed_elementInfo.dat maps each tag to its layer, cell and topology. +recorder Element -file [file join $resultsDir mixed_stress.out] -time -dT $recDT -eleRange 1 $nSoilElements stress3D6 +recorder Element -file [file join $resultsDir mixed_strain.out] -time -dT $recDT -eleRange 1 $nSoilElements strain3D6 +puts "Finished creating post-gravity recorders..." + +#----------------------------------------------------------------------------------------- +# 9. DYNAMIC ANALYSIS +#----------------------------------------------------------------------------------------- + +# define velocity time history file +set velocityFile yerbaNSvelocity.out + +# timeseries object for force history +# Force history from the incident-wave velocity record +timeSeries Path 10 \ + -dt $motionDT \ + -filePath $velocityFile \ + -factor $dashpotCoeff + +pattern Plain 10 10 { + load 1 1.0 0.0 0.0 0.0 +} +puts "Dynamic loading created..." + +constraints Penalty 1.e14 1.e14 +test NormDispIncr 1.0e-3 55 1 +algorithm KrylovNewton +numberer Plain +system SparseGeneral +integrator Newmark $gamma $beta +#rayleigh $a0 $a1 0.0 0.0 +analysis Transient + +# perform analysis with timestep reduction loop +set ok [analyze $nSteps $dT] + +# if analysis fails, reduce timestep and continue with analysis +if {$ok != 0} { + puts "did not converge, reducing time step" + set curTime [getTime] + set mTime $curTime + puts "curTime: $curTime" + set curStep [expr $curTime/$dT] + puts "curStep: $curStep" + set rStep [expr ($nSteps-$curStep)*2.0] + set remStep [expr int(($nSteps-$curStep)*2.0)] + puts "remStep: $remStep" + set dT [expr $dT/2.0] + puts "dT: $dT" + + set ok [analyze $remStep $dT] + + # if analysis fails again, reduce timestep and continue with analysis + if {$ok != 0} { + puts "did not converge, reducing time step" + set curTime [getTime] + puts "curTime: $curTime" + set curStep [expr ($curTime-$mTime)/$dT] + puts "curStep: $curStep" + set remStep [expr int(($rStep-$curStep)*2.0)] + puts "remStep: $remStep" + set dT [expr $dT/2.0] + puts "dT: $dT" + + set ok [analyze $remStep $dT] + } +} +if {$ok != 0} { error "Dynamic analysis failed at [getTime], code $ok" } +set endT [clock seconds] +puts "Finished with mixed-element dynamic analysis at [getTime] s." +puts "Analysis execution time: [expr $endT-$startT] seconds" + +wipe diff --git a/source/user/examples/UWExamples/freeField3D_UPcomparison/freeField3D_schematic.py b/source/user/examples/UWExamples/freeField3D_UPcomparison/freeField3D_schematic.py new file mode 100644 index 00000000..53c8d0c5 --- /dev/null +++ b/source/user/examples/UWExamples/freeField3D_UPcomparison/freeField3D_schematic.py @@ -0,0 +1,168 @@ +"""Draw an axonometric schematic of the layered 3D free-field column. + +Run: python freeField3D_schematic.py +Writes PNG, SVG and PDF versions into figures/. +Vertical dimensions are proportional; horizontal dimensions are exaggerated. +""" + +from pathlib import Path + +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt +from matplotlib.colors import to_rgb +from matplotlib.patches import Polygon + + +HERE = Path(__file__).resolve().parent +FIGURES = HERE / "figures" +INK = "#19324A" +MUTED = "#53677B" +WATER = "#008CA8" +INPUT = "#BE593C" +LAYERS = ( + (1, 0, 20, "#C9DFEF", "#3D759E"), + (2, 20, 28, "#F5D8AA", "#AA7030"), + (3, 28, 30, "#DED5EE", "#7E629F"), +) + + +def project(x, y, z): + """Oblique projection: x right, y up, z recedes up and right.""" + return 1.1 * x + 0.6 * z, y + 0.6 * z + + +def face(axis, coordinates, **kwargs): + axis.add_patch(Polygon([project(*point) for point in coordinates], closed=True, **kwargs)) + + +def ring(axis, elevation, **kwargs): + corners = [(0, elevation, 0), (2, elevation, 0), + (2, elevation, 2), (0, elevation, 2), (0, elevation, 0)] + xs, ys = zip(*(project(*point) for point in corners)) + axis.plot(xs, ys, **kwargs) + + +def dimension(axis, x, bottom, top, text, overall=False): + axis.annotate("", (x, top), (x, bottom), + arrowprops=dict(arrowstyle="<->", color=MUTED, lw=1.1, + shrinkA=0, shrinkB=0)) + for y in (bottom, top): + axis.plot([x - 0.15, -0.15], [y, y], color=MUTED, lw=0.55, alpha=0.5) + axis.text(x - 0.2, (bottom + top) / 2, text, ha="right", va="center", + fontsize=12 if overall else 10, color=INK if overall else MUTED, + rotation=90 if overall else 0) + + +def main() -> None: + plt.rcParams.update({"font.family": "DejaVu Sans", "font.size": 11, + "svg.fonttype": "none"}) + figure = plt.figure(figsize=(11, 10), facecolor="white") + figure.text(0.075, 0.95, "3D FREE-FIELD SOIL COLUMN", fontsize=22, + fontweight="bold", color=INK) + figure.text(0.075, 0.913, "Three-dimensional model / 2 m × 2 m footprint / horizontal input along x", + fontsize=11, color=MUTED) + axis = figure.add_axes((0.075, 0.12, 0.87, 0.76)) + axis.set_xlim(-5, 12) + axis.set_ylim(-6, 36) + axis.axis("off") + + # Filled front and right faces reveal the finite out-of-plane dimension. + for layer, bottom, top, fill, accent in LAYERS: + darker = tuple(channel * 0.85 for channel in to_rgb(fill)) + face(axis, [(2, bottom, 0), (2, bottom, 2), (2, top, 2), (2, top, 0)], + facecolor=darker, edgecolor=INK, lw=1.0) + face(axis, [(0, bottom, 0), (2, bottom, 0), (2, top, 0), (0, top, 0)], + facecolor=fill, edgecolor=INK, lw=1.0) + axis.text(1.1, (bottom + top) / 2, f"LAYER {layer}", ha="center", va="center", + fontsize=12 if layer != 3 else 9, fontweight="bold", color=accent) + face(axis, [(0, 30, 0), (2, 30, 0), (2, 30, 2), (0, 30, 2)], + facecolor="#EEE8F6", edgecolor=INK, lw=1.2) + # Hidden vertical corner indicates the back of the column. + bx, by = project(0, 0, 2) + axis.plot([bx, bx], [by, by + 30], color=INK, lw=0.8, alpha=0.35, dashes=(3, 4)) + + # Elastic base drawn as a shallow 3D plinth, rather than an extra soil layer. + face(axis, [(-0.15, -1.1, -0.15), (2.15, -1.1, -0.15), + (2.15, 0, -0.15), (-0.15, 0, -0.15)], + facecolor="#E6EBF0", edgecolor="#98A8B6", hatch="///", lw=0.6) + face(axis, [(2.15, -1.1, -0.15), (2.15, -1.1, 2.15), + (2.15, 0, 2.15), (2.15, 0, -0.15)], + facecolor="#CAD4DD", edgecolor="#98A8B6", lw=0.6) + ring(axis, 0, color=INK, lw=1.5) + + dimension(axis, -3.0, 0, 30, "30 m", overall=True) + for _, bottom, top, _, _ in LAYERS: + dimension(axis, -0.9, bottom, top, f"{top-bottom} m") + # Front width and receding depth dimensions, both physically 2 m. + axis.annotate("", (0, 33.6), (2.2, 33.6), + arrowprops=dict(arrowstyle="<->", color=INK, lw=1.1, shrinkA=0, shrinkB=0)) + for x in (0, 2.2): + axis.plot([x, x], [30.5, 34], color=MUTED, lw=0.6) + axis.text(1.1, 34.1, "2 m (x)", color=INK, ha="center", fontsize=10) + axis.annotate("", (3.0, 32.0), (4.2, 33.2), + arrowprops=dict(arrowstyle="<->", color=INK, lw=1.1, shrinkA=0, shrinkB=0)) + axis.plot([2.2, 3.2], [30, 32.2], color=MUTED, lw=0.6) + axis.plot([3.4, 4.4], [31.2, 33.4], color=MUTED, lw=0.6) + axis.text(4.25, 33.6, "2 m (z)", color=INK, ha="center", fontsize=10) + + # A finite horizontal plane and its visible edges identify the water table. + face(axis, [(-0.15, 28, -0.15), (2.15, 28, -0.15), + (2.15, 28, 2.15), (-0.15, 28, 2.15)], + facecolor=WATER, alpha=0.18, edgecolor="none") + ring(axis, 28, color=WATER, lw=1.8, dashes=(4, 3)) + axis.plot([3.5, 5.5], [29.2, 29.2], color=WATER, lw=1.0) + axis.text(5.9, 29.2, "WATER TABLE", color=WATER, fontsize=11, + fontweight="bold", va="center") + axis.text(5.9, 27.9, "y = 28 m · 2 m below surface", color=MUTED, fontsize=10) + + # The 3D history scripts average all four pressure-carrying corner nodes. + for name, y, text_y, title, node_ids in ( + ("P1", 15, 16.5, "Mid-column", "121-124"), + ("P2", 30, 32.5, "Ground surface", "241-244"), + ): + ring(axis, y, color=INK, lw=0.9, dashes=(3, 3)) + points = [project(x, y, z) for x, z in ((0, 0), (2, 0), (2, 2), (0, 2))] + xs, ys = zip(*points) + axis.scatter(xs, ys, s=42, facecolor="white", edgecolor=INK, linewidth=1.4, zorder=6) + cx, cy = project(1, y, 1) + axis.scatter([cx], [cy], s=45, marker="D", color=INK, zorder=6) + axis.plot([3.55, 5.2, 5.5], [y + 1.2, text_y, text_y], color=INK, lw=1.0) + axis.text(5.9, text_y, f"{name} {title}", fontsize=12, + color=INK, fontweight="bold", va="center") + axis.text(5.9, text_y - 1.3, f"y = {y} m · average of corner nodes {node_ids}", + fontsize=9.3, color=MUTED) + + axis.annotate("", (2.15, -2.4), (0.05, -2.4), + arrowprops=dict(arrowstyle="<->", color=INPUT, lw=2.4)) + axis.plot([0, 0], [-0.15, -2.4], color=INPUT, lw=1.0) + axis.plot([2.35, 5.5], [-2.4, -2.4], color=INPUT, lw=1.0) + axis.text(5.9, -0.8, "HORIZONTAL MOTION INPUT", fontsize=11, color=INPUT, fontweight="bold") + axis.text(5.9, -2.15, r"Base x direction: $F_x(t)=c\,v_{in}(t)$", fontsize=10, color=MUTED) + axis.text(1.5, -4.0, "Elastic half-space\nHorizontal Lysmer dashpots", ha="center", va="center", + fontsize=10, color=MUTED, linespacing=1.5) + # A spatial triad makes the x-y-z interpretation explicit. + for target, label, label_position in ( + ((11.3, 1.2), "x", (11.45, 1.0)), + ((9.6, 4.5), "y", (9.4, 4.7)), + ((10.8, 3.0), "z", (10.95, 3.1)), + ): + axis.annotate("", target, (9.6, 1.2), + arrowprops=dict(arrowstyle="->", color=MUTED, lw=1.1)) + axis.text(*label_position, label, color=MUTED, fontsize=10) + + figure.text(0.075, 0.075, "Comparison histories: three displacement components and pore pressure.", + fontsize=10, color=INK) + figure.text(0.075, 0.05, "Circles: four averaged corner nodes. Diamonds: comparison elevations. Horizontal dimensions exaggerated.", + fontsize=9, color=MUTED) + FIGURES.mkdir(parents=True, exist_ok=True) + for suffix in ("png", "svg", "pdf"): + output = FIGURES / f"freeField3D_schematic.{suffix}" + figure.savefig(output, dpi=240, facecolor="white") + print(f"Wrote {output}") + plt.close(figure) + + +if __name__ == "__main__": + main() diff --git a/source/user/examples/UWExamples/freeField3D_UPcomparison/freefield_plot_utils.py b/source/user/examples/UWExamples/freeField3D_UPcomparison/freefield_plot_utils.py new file mode 100644 index 00000000..b763a200 --- /dev/null +++ b/source/user/examples/UWExamples/freeField3D_UPcomparison/freefield_plot_utils.py @@ -0,0 +1,105 @@ +"""Shared result readers and formatting for the 2D and 3D plotting scripts.""" + +from pathlib import Path + +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt +import numpy as np + + +RESULTS = Path(__file__).resolve().parent / "results" +N_CELLS = 60 +N_LEVELS = N_CELLS + 1 +N_CORNERS_PER_LEVEL = 4 +N_CORNER_NODES = N_CORNERS_PER_LEVEL * N_LEVELS +N_PRESSURE_NODES = N_CORNER_NODES +N_C3D10_NODES = 1089 +N_TETS_PER_CELL = 6 +LEVELS = {"Mid-column (y = 15 m)": 30, "Top (y = 30 m)": 60} +ELEVATION_NODES = np.linspace(0.0, 30.0, N_LEVELS) +ELEVATION_CELLS = 0.5 * (ELEVATION_NODES[:-1] + ELEVATION_NODES[1:]) + + +def load_complete_rows(path: Path, expected_columns: int) -> np.ndarray: + """Read complete numeric rows, tolerating a result still being written.""" + if not path.is_file(): + raise FileNotFoundError(f"Required dynamic result not found: {path}") + rows = [] + with path.open("r", encoding="utf-8", errors="replace") as stream: + for line_number, line in enumerate(stream, 1): + fields = line.split() + if len(fields) != expected_columns: + if line_number == 1: + raise ValueError(f"{path.name}: expected {expected_columns} columns, " + f"found {len(fields)} in its first row") + continue + try: + rows.append(np.asarray(fields, dtype=float)) + except ValueError: + continue + if not rows: + raise ValueError(f"No complete rows are available in {path}") + return np.vstack(rows) + + +def corner_average(history: np.ndarray, values_per_node: int, level: int) -> np.ndarray: + first = 1 + values_per_node * N_CORNERS_PER_LEVEL * level + last = first + values_per_node * N_CORNERS_PER_LEVEL + return history[:, first:last].reshape(len(history), N_CORNERS_PER_LEVEL, values_per_node).mean(axis=1) + + +def common_histories(*histories: np.ndarray): + common_times = np.round(histories[0][:, 0], 9) + for history in histories[1:]: + common_times = np.intersect1d(common_times, np.round(history[:, 0], 9)) + if common_times.size == 0: + raise ValueError("The histories currently have no common recorded times") + aligned = [] + for history in histories: + lookup = {round(time, 9): index for index, time in enumerate(history[:, 0])} + rows = np.asarray([lookup[float(time)] for time in common_times]) + aligned.append(history[rows]) + return common_times, *aligned + + +def final_row(name: str, expected_columns: int) -> np.ndarray: + path = RESULTS / name + if not path.is_file(): + raise FileNotFoundError(f"Required gravity result not found: {path}") + data = np.loadtxt(path, ndmin=2) + if data.shape[1] != expected_columns: + raise ValueError(f"{path.name}: expected {expected_columns} columns, found {data.shape[1]}") + return data[-1] + + +def displacement_profile(name: str, node_count: int): + history = final_row(name, 1 + 3 * node_count) + corners = history[1:1 + 3 * N_CORNER_NODES] + return history[0], corners.reshape(N_LEVELS, N_CORNERS_PER_LEVEL, 3).mean(axis=1) + + +def pore_pressure_profile(name: str): + history = final_row(name, 1 + N_CORNER_NODES) + return history[0], history[1:].reshape(N_LEVELS, N_CORNERS_PER_LEVEL).mean(axis=1) + + +def element_profile(name: str, values_per_element: int, elements_per_cell: int): + history = final_row(name, 1 + N_CELLS * elements_per_cell * values_per_element) + values = history[1:].reshape(N_CELLS, elements_per_cell, values_per_element).mean(axis=1) + return history[0], values + + +def style_axis(axis, xlabel: str): + axis.set_xlabel(xlabel) + axis.set_ylabel("Elevation y [m]") + axis.grid(alpha=0.3) + + +def profile_limits(*profiles: np.ndarray) -> tuple[float, float]: + """Use all models/components, include zero, and add 5% padding.""" + lower = min(0.0, *(float(np.min(values)) for values in profiles)) + upper = max(0.0, *(float(np.max(values)) for values in profiles)) + padding = 0.05 * (upper - lower) if upper > lower else 1.0e-12 + return lower - padding, upper + padding diff --git a/source/user/examples/UWExamples/freeField3D_UPcomparison/index.rst b/source/user/examples/UWExamples/freeField3D_UPcomparison/index.rst new file mode 100644 index 00000000..fa448964 --- /dev/null +++ b/source/user/examples/UWExamples/freeField3D_UPcomparison/index.rst @@ -0,0 +1,39 @@ +Three-dimensional free-field element comparison +=============================================== + +This example compares the gravity and dynamic free-field response of a soil +column using :ref:`SSPbrickUP`, :ref:`brickUP `, +:ref:`TenNodeTetrahedronUP`, and :ref:`SSPtetUP`. A mixed +``SSPbrickUP`` / ``SSPtetUP`` model is also included. + +.. figure:: figures/freeField3D_schematic.png + :alt: Layered three-dimensional free-field soil column with a water table, base motion input, and response comparison locations. + :width: 800px + :align: center + + Soil column used for the free-field response comparison. + +Tcl model files +--------------- + +* :download:`SSPbrickUP ` +* :download:`brickUP ` +* :download:`TenNodeTetrahedronUP ` +* :download:`SSPtetUP ` +* :download:`Mixed SSPbrickUP / SSPtetUP ` + +Input velocity record used by all Tcl models: +:download:`yerbaNSvelocity.out `. +Save this file in the same directory as the Tcl model files. + +Python scripts +-------------- + +* :download:`Gravity-response comparison ` +* :download:`Dynamic-history comparison ` +* :download:`Shared plotting utility ` +* :download:`Column schematic ` +* :download:`Mesh comparison ` + +Keep the Python scripts together beside the ``results`` directory generated +by the Tcl models. The plotting scripts require NumPy and Matplotlib. diff --git a/source/user/examples/UWExamples/freeField3D_UPcomparison/plot_dynamic_history_comparison_3D.py b/source/user/examples/UWExamples/freeField3D_UPcomparison/plot_dynamic_history_comparison_3D.py new file mode 100644 index 00000000..842df6a1 --- /dev/null +++ b/source/user/examples/UWExamples/freeField3D_UPcomparison/plot_dynamic_history_comparison_3D.py @@ -0,0 +1,75 @@ +"""Compare dynamic histories including the mixed brick/tetrahedron column. + +Run: python plot_dynamic_history_comparison_3D.py +Reads results/ and writes figures/dynamic__history_comparison_3D.png. +""" + +from pathlib import Path + +from freefield_plot_utils import ( + LEVELS, N_C3D10_NODES, N_PRESSURE_NODES, RESULTS, + common_histories, corner_average, load_complete_rows, np, plt, +) + + +HERE = Path(__file__).resolve().parent +FIGURES = HERE / "figures" +FIGURES.mkdir(parents=True, exist_ok=True) +MODELS = ( + ("SSPbrickUP", "sspbrickup_displacement.out", "sspbrickup_porePressure.out", + N_PRESSURE_NODES, "tab:blue", "-"), + ("BrickUP", "displacement_BrickUP.out", "porePressure_BrickUP.out", + N_PRESSURE_NODES, "tab:green", "-."), + ("10NodeTetrahedronUP", "c3d10UP_displacement.out", "c3d10UP_porePressure.out", + N_C3D10_NODES, "tab:orange", "--"), + ("SSPtetUP", "ssptetUP_displacement.out", "ssptetUP_porePressure.out", + N_PRESSURE_NODES, "tab:red", ":"), + ("Mixed SSPbrickUP / SSPtetUP", "mixed_displacement.out", "mixed_porePressure.out", + N_PRESSURE_NODES, "tab:purple", (0, (5, 1, 1, 1))), +) + + +def plot_histories(histories: list[np.ndarray], pressure: bool) -> Path: + times, *aligned = common_histories(*histories) + components = 1 if pressure else 3 + figure, axes = plt.subplots( + len(LEVELS), components, figsize=(11, 8) if pressure else (15, 9), + sharex=True, squeeze=False, constrained_layout=True, + ) + labels = ("$p$ [kPa]",) if pressure else ("$u_x$ [m]", "$u_y$ [m]", "$u_z$ [m]") + for row, (location, level) in enumerate(LEVELS.items()): + for model, history in zip(MODELS, aligned): + label, _, _, _, color, linestyle = model + values = corner_average(history, components, level) + for component, axis in enumerate(axes[row]): + axis.plot(times, values[:, component], color=color, + linestyle=linestyle, lw=1.6, label=label) + for component, axis in enumerate(axes[row]): + axis.set_ylabel(f"{location}\n{labels[component]}") + axis.grid(alpha=0.3) + if row == len(LEVELS) - 1: + axis.set_xlabel("Time [s]") + axes[0, 0].legend(loc="best") + quantity = "pore_pressure" if pressure else "displacement" + figure.suptitle(f"Free-field {quantity.replace('_', ' ')} histories including mixed mesh") + output = FIGURES / f"dynamic_{quantity}_history_comparison_3D.png" + figure.savefig(output, dpi=200) + plt.close(figure) + print(f"{quantity}: {len(times)} shared recorded times through t={times[-1]:g} s") + return output + + +def main() -> None: + displacements, pressures = [], [] + for label, displacement_file, pressure_file, node_count, _, _ in MODELS: + displacement = load_complete_rows(RESULTS / displacement_file, 1 + 3 * node_count) + pressure = load_complete_rows(RESULTS / pressure_file, 1 + N_PRESSURE_NODES) + displacements.append(displacement) + pressures.append(pressure) + print(f"{label}: {len(displacement)} displacement rows, {len(pressure)} pressure rows") + for output in (plot_histories(displacements, False), plot_histories(pressures, True)): + print(f"Wrote {output}") + + +if __name__ == "__main__": + main() diff --git a/source/user/examples/UWExamples/freeField3D_UPcomparison/plot_gravity_results_comparison_3D.py b/source/user/examples/UWExamples/freeField3D_UPcomparison/plot_gravity_results_comparison_3D.py new file mode 100644 index 00000000..8de015bb --- /dev/null +++ b/source/user/examples/UWExamples/freeField3D_UPcomparison/plot_gravity_results_comparison_3D.py @@ -0,0 +1,119 @@ +"""Compare gravity profiles including the mixed brick/tetrahedron column. + +Run: python plot_gravity_results_comparison_3D.py +Writes figures/gravity__comparison_3D.png. +Mixed element-to-cell mapping comes from results/mixed_elementInfo.dat. +""" + +from pathlib import Path + +from freefield_plot_utils import ( + ELEVATION_CELLS, ELEVATION_NODES, N_CELLS, N_CORNER_NODES, N_TETS_PER_CELL, + RESULTS, displacement_profile, element_profile, final_row, + np, plt, pore_pressure_profile, profile_limits, style_axis, +) + + +HERE = Path(__file__).resolve().parent +FIGURES = HERE / "figures" +FIGURES.mkdir(parents=True, exist_ok=True) +MODELS = ( + ("SSPbrickUP", "sspbrickup_", "", N_CORNER_NODES, 1, 7, "tab:blue", "-"), + ("BrickUP", "", "_BrickUP", N_CORNER_NODES, 1, 7, "tab:green", "-."), + ("10NodeTetrahedronUP", "c3d10UP_", "", 1089, N_TETS_PER_CELL, 7, "tab:orange", "--"), + ("SSPtetUP", "ssptetUP_", "", N_CORNER_NODES, N_TETS_PER_CELL, 6, "tab:red", ":"), + ("Mixed SSPbrickUP / SSPtetUP", "mixed_", "", N_CORNER_NODES, None, 6, + "tab:purple", (0, (5, 1, 1, 1))), +) + + +def mixed_element_profile(name: str) -> tuple[float, np.ndarray]: + """Average one brick or six equal-volume tetrahedra in each original cell.""" + metadata = RESULTS / "mixed_elementInfo.dat" + entries = [] + for line in metadata.read_text().splitlines(): + if line.strip() and not line.lstrip().startswith("#"): + fields = line.split() + entries.append((int(fields[0]), int(fields[2]), fields[3])) + entries.sort() + if [tag for tag, _, _ in entries] != list(range(1, len(entries) + 1)): + raise ValueError(f"{metadata}: expected consecutive element tags starting at 1") + if {cell for _, cell, _ in entries} != set(range(1, N_CELLS + 1)): + raise ValueError(f"{metadata}: expected all {N_CELLS} original cells") + history = final_row(name, 1 + 6 * len(entries)) + values = history[1:].reshape(len(entries), 6) + profiles = [] + for cell in range(1, N_CELLS + 1): + indices = [i for i, (_, cell_tag, _) in enumerate(entries) if cell_tag == cell] + types = [entries[i][2] for i in indices] + if types != ["SSPbrickUP"] and types != ["SSPtetUP"] * N_TETS_PER_CELL: + raise ValueError(f"{metadata}: unexpected topology in cell {cell}") + profiles.append(values[indices].mean(axis=0)) + return history[0], np.asarray(profiles) + + +def plot_profiles(profiles: list[np.ndarray], quantity: str, + labels: tuple[str, ...], nodal: bool) -> Path: + count = len(labels) + shape = (2, 3) if count == 6 else (1, count) + shared_scale = quantity in ("displacement", "pore_pressure", "stress") + limits = profile_limits(*profiles) if shared_scale else None + figure, axes = plt.subplots( + *shape, figsize=(13, 10) if count == 6 else ((7, 8) if count == 1 else (13, 7)), + sharex=shared_scale, sharey=True, squeeze=False, constrained_layout=True, + ) + elevations = ELEVATION_NODES if nodal else ELEVATION_CELLS + for component, axis in enumerate(axes.flat): + for model, values in zip(MODELS, profiles): + axis.plot(values[:, component], elevations, color=model[-2], + linestyle=model[-1], lw=2, label=model[0]) + style_axis(axis, labels[component]) + if limits is not None: + axis.set_xlim(limits) + for interface in (20.0, 28.0): + axis.axhline(interface, color="0.6", ls=":", lw=0.8) + axes.flat[0].legend(loc="best") + figure.suptitle(f"Final gravity {quantity.replace('_', ' ')} profiles including mixed mesh") + output = FIGURES / f"gravity_{quantity}_comparison_3D.png" + figure.savefig(output, dpi=220) + plt.close(figure) + return output + + +def main() -> None: + displacements, pressures, stresses, strains = [], [], [], [] + for label, prefix, suffix, nodes, per_cell, stress_components, _, _ in MODELS: + dt, displacement = displacement_profile(f"{prefix}Gdisplacement{suffix}.out", nodes) + pt, pressure = pore_pressure_profile(f"{prefix}GporePressure{suffix}.out") + if prefix == "mixed_": + st, stress = mixed_element_profile("mixed_Gstress.out") + et, strain = mixed_element_profile("mixed_Gstrain.out") + else: + gp = "_gp1" if prefix == "c3d10UP_" else "" + st, stress = element_profile(f"{prefix}Gstress{suffix}{gp}.out", stress_components, per_cell) + et, strain = element_profile(f"{prefix}Gstrain{suffix}{gp}.out", 6, per_cell) + displacements.append(displacement) + pressures.append(pressure[:, None]) + stresses.append(stress[:, :6]) + strains.append(strain) + print(f"{label}: final displacement/pressure/stress/strain times = {dt:g}/{pt:g}/{st:g}/{et:g}") + outputs = [ + plot_profiles(displacements, "displacement", ("$u_x$ [m]", "$u_y$ [m]", "$u_z$ [m]"), True), + plot_profiles(pressures, "pore_pressure", ("$p$ [kPa]",), True), + plot_profiles(stresses, "stress", + (r"$\sigma_{xx}$ [kPa]", r"$\sigma_{yy}$ [kPa]", r"$\sigma_{zz}$ [kPa]", + r"$\tau_{xy}$ [kPa]", r"$\tau_{yz}$ [kPa]", r"$\tau_{xz}$ [kPa]"), False), + plot_profiles(strains, "strain", + (r"$\epsilon_{xx}$", r"$\epsilon_{yy}$", r"$\epsilon_{zz}$", + r"$\gamma_{xy}$", r"$\gamma_{yz}$", r"$\gamma_{xz}$"), False), + ] + for label, profiles in (("displacement", displacements), ("pore pressure", pressures), + ("stress", stresses), ("strain", strains)): + print(f"Mixed maximum {label} difference from SSPbrickUP: " + f"{np.max(np.abs(profiles[-1] - profiles[0])):.6e}") + for output in outputs: + print(f"Wrote {output}") + + +if __name__ == "__main__": + main() diff --git a/source/user/examples/UWExamples/freeField3D_UPcomparison/yerbaNSvelocity.out b/source/user/examples/UWExamples/freeField3D_UPcomparison/yerbaNSvelocity.out new file mode 100644 index 00000000..e1209541 --- /dev/null +++ b/source/user/examples/UWExamples/freeField3D_UPcomparison/yerbaNSvelocity.out @@ -0,0 +1,7990 @@ + 0.0000000e+000 + 1.8137186e-004 + 3.3846731e-004 + 3.9773823e-004 + 4.0427321e-004 + 4.1893860e-004 + 4.3290092e-004 + 4.4634178e-004 + 4.5955975e-004 + 4.7288561e-004 + 4.8651841e-004 + 5.0042410e-004 + 5.1444317e-004 + 5.2842765e-004 + 5.4219855e-004 + 5.5544798e-004 + 5.6773722e-004 + 5.7855714e-004 + 5.8744073e-004 + 5.9406527e-004 + 5.9822460e-004 + 5.9975349e-004 + 5.9846687e-004 + 5.9412775e-004 + 5.8648789e-004 + 5.7533077e-004 + 5.6046020e-004 + 5.4168399e-004 + 5.1889214e-004 + 4.9224917e-004 + 4.6237268e-004 + 4.3032064e-004 + 3.9743256e-004 + 3.6529284e-004 + 3.3573002e-004 + 3.1060572e-004 + 2.9172837e-004 + 2.8102185e-004 + 2.8042493e-004 + 2.9152843e-004 + 3.1531488e-004 + 3.5194687e-004 + 4.0048356e-004 + 4.5881284e-004 + 5.2416290e-004 + 5.9392078e-004 + 6.6605972e-004 + 7.3886347e-004 + 8.1026535e-004 + 8.7740156e-004 + 9.3707354e-004 + 9.8688952e-004 + 1.0262114e-003 + 1.0566294e-003 + 1.0817627e-003 + 1.1065751e-003 + 1.1362734e-003 + 1.1747307e-003 + 1.2237114e-003 + 1.2833193e-003 + 1.3525567e-003 + 1.4298988e-003 + 1.5138166e-003 + 1.6025511e-003 + 1.6937662e-003 + 1.7846587e-003 + 1.8717934e-003 + 1.9506623e-003 + 2.0158488e-003 + 2.0621142e-003 + 2.0854700e-003 + 2.0834804e-003 + 2.0558888e-003 + 2.0055761e-003 + 1.9387745e-003 + 1.8646828e-003 + 1.7938351e-003 + 1.7347754e-003 + 1.6913764e-003 + 1.6638837e-003 + 1.6522186e-003 + 1.6581472e-003 + 1.6860951e-003 + 1.7419614e-003 + 1.8299320e-003 + 1.9496684e-003 + 2.0954082e-003 + 2.2573127e-003 + 2.4249866e-003 + 2.5914926e-003 + 2.7544215e-003 + 2.9131314e-003 + 3.0646812e-003 + 3.2013767e-003 + 3.3118229e-003 + 3.3851344e-003 + 3.4148870e-003 + 3.3988174e-003 + 3.3350554e-003 + 3.2195411e-003 + 3.0467849e-003 + 2.8131572e-003 + 2.5211037e-003 + 2.1811961e-003 + 1.8100149e-003 + 1.4250870e-003 + 1.0395707e-003 + 6.6004457e-004 + 2.8796733e-004 + -7.7669249e-005 + -4.3705390e-004 + -7.8676907e-004 + -1.1197654e-003 + -1.4269331e-003 + -1.6994561e-003 + -1.9326191e-003 + -2.1291742e-003 + -2.2994126e-003 + -2.4578669e-003 + -2.6184523e-003 + -2.7888360e-003 + -2.9662035e-003 + -3.1378938e-003 + -3.2871688e-003 + -3.4017515e-003 + -3.4811500e-003 + -3.5379640e-003 + -3.5918640e-003 + -3.6603436e-003 + -3.7525674e-003 + -3.8681682e-003 + -3.9983428e-003 + -4.1293058e-003 + -4.2485512e-003 + -4.3497805e-003 + -4.4322014e-003 + -4.4967291e-003 + -4.5453266e-003 + -4.5825774e-003 + -4.6142941e-003 + -4.6436062e-003 + -4.6683754e-003 + -4.6815172e-003 + -4.6743643e-003 + -4.6418349e-003 + -4.5849002e-003 + -4.5086195e-003 + -4.4197279e-003 + -4.3256732e-003 + -4.2337185e-003 + -4.1494785e-003 + -4.0757940e-003 + -4.0138124e-003 + -3.9651660e-003 + -3.9310193e-003 + -3.9090777e-003 + -3.8946352e-003 + -3.8847687e-003 + -3.8798709e-003 + -3.8805459e-003 + -3.8806353e-003 + -3.8623728e-003 + -3.8009127e-003 + -3.6753643e-003 + -3.4785454e-003 + -3.2214458e-003 + -2.9302675e-003 + -2.6365033e-003 + -2.3633080e-003 + -2.1150655e-003 + -1.8806374e-003 + -1.6480423e-003 + -1.4137689e-003 + -1.1775959e-003 + -9.2935252e-004 + -6.4063522e-004 + -2.6962388e-004 + 2.2343504e-004 + 8.6048212e-004 + 1.6389397e-003 + 2.5341521e-003 + 3.5075536e-003 + 4.5177151e-003 + 5.5310833e-003 + 6.5294721e-003 + 7.5080033e-003 + 8.4637575e-003 + 9.3876264e-003 + 1.0264695e-002 + 1.1076723e-002 + 1.1804801e-002 + 1.2434216e-002 + 1.2958900e-002 + 1.3383868e-002 + 1.3725874e-002 + 1.4011029e-002 + 1.4269067e-002 + 1.4522616e-002 + 1.4774520e-002 + 1.5003749e-002 + 1.5173260e-002 + 1.5241579e-002 + 1.5171936e-002 + 1.4942142e-002 + 1.4553483e-002 + 1.4028940e-002 + 1.3397699e-002 + 1.2674314e-002 + 1.1846458e-002 + 1.0876741e-002 + 9.7174021e-003 + 8.3361716e-003 + 6.7427633e-003 + 5.0013507e-003 + 3.2202757e-003 + 1.5216966e-003 + 8.2728424e-006 + -1.2512244e-003 + -2.2144633e-003 + -2.8530457e-003 + -3.1462249e-003 + -3.0820385e-003 + -2.6616827e-003 + -1.9072092e-003 + -8.7300407e-004 + 3.5141133e-004 + 1.6498348e-003 + 2.8917852e-003 + 3.9538205e-003 + 4.7492673e-003 + 5.2478181e-003 + 5.4703706e-003 + 5.4681646e-003 + 5.3014747e-003 + 5.0223090e-003 + 4.6640901e-003 + 4.2406899e-003 + 3.7565694e-003 + 3.2212041e-003 + 2.6539178e-003 + 2.0790601e-003 + 1.5240600e-003 + 1.0220933e-003 + 6.0609618e-004 + 2.9610855e-004 + 9.0633356e-005 + -3.7937691e-005 + -1.3772335e-004 + -2.5723718e-004 + -4.2123372e-004 + -6.2112723e-004 + -8.2689810e-004 + -1.0076669e-003 + -1.1502686e-003 + -1.2661903e-003 + -1.3826203e-003 + -1.5284419e-003 + -1.7214542e-003 + -1.9582470e-003 + -2.2123570e-003 + -2.4452359e-003 + -2.6225026e-003 + -2.7193859e-003 + -2.7163004e-003 + -2.5973788e-003 + -2.3553694e-003 + -1.9985509e-003 + -1.5505817e-003 + -1.0408448e-003 + -4.9646292e-004 + 5.3873316e-005 + 5.7205896e-004 + 1.0139412e-003 + 1.3427756e-003 + 1.5414404e-003 + 1.6149959e-003 + 1.5867800e-003 + 1.4964632e-003 + 1.3941386e-003 + 1.3230870e-003 + 1.3020099e-003 + 1.3249774e-003 + 1.3841549e-003 + 1.4968782e-003 + 1.7071084e-003 + 2.0574142e-003 + 2.5584050e-003 + 3.1788352e-003 + 3.8638591e-003 + 4.5620499e-003 + 5.2300404e-003 + 5.8237966e-003 + 6.3041885e-003 + 6.6490704e-003 + 6.8570059e-003 + 6.9548551e-003 + 7.0092233e-003 + 7.1152433e-003 + 7.3586375e-003 + 7.7784987e-003 + 8.3540960e-003 + 9.0201022e-003 + 9.7022594e-003 + 1.0351851e-002 + 1.0955743e-002 + 1.1526447e-002 + 1.2087046e-002 + 1.2654606e-002 + 1.3233245e-002 + 1.3823097e-002 + 1.4432156e-002 + 1.5082209e-002 + 1.5809602e-002 + 1.6655078e-002 + 1.7637292e-002 + 1.8729838e-002 + 1.9862017e-002 + 2.0940821e-002 + 2.1885747e-002 + 2.2658822e-002 + 2.3272660e-002 + 2.3776332e-002 + 2.4231193e-002 + 2.4689248e-002 + 2.5183096e-002 + 2.5734884e-002 + 2.6375213e-002 + 2.7147418e-002 + 2.8089715e-002 + 2.9210767e-002 + 3.0470735e-002 + 3.1775249e-002 + 3.2991270e-002 + 3.3987709e-002 + 3.4684080e-002 + 3.5073241e-002 + 3.5208925e-002 + 3.5172442e-002 + 3.5029844e-002 + 3.4799603e-002 + 3.4451700e-002 + 3.3941280e-002 + 3.3254103e-002 + 3.2432716e-002 + 3.1569031e-002 + 3.0763614e-002 + 3.0078662e-002 + 2.9517648e-002 + 2.9036856e-002 + 2.8577951e-002 + 2.8097722e-002 + 2.7573892e-002 + 2.6991092e-002 + 2.6322993e-002 + 2.5525854e-002 + 2.4553551e-002 + 2.3383256e-002 + 2.2029678e-002 + 2.0536474e-002 + 1.8953621e-002 + 1.7319694e-002 + 1.5654335e-002 + 1.3963040e-002 + 1.2254493e-002 + 1.0562022e-002 + 8.9553325e-003 + 7.5262204e-003 + 6.3511403e-003 + 5.4574344e-003 + 4.8224276e-003 + 4.3979913e-003 + 4.1282408e-003 + 3.9566899e-003 + 3.8340035e-003 + 3.7245492e-003 + 3.6025268e-003 + 3.4353026e-003 + 3.1718306e-003 + 2.7533967e-003 + 2.1377120e-003 + 1.3140677e-003 + 3.0194411e-004 + -8.5912738e-004 + -2.1224622e-003 + -3.4447559e-003 + -4.7888250e-003 + -6.1141928e-003 + -7.3581087e-003 + -8.4202919e-003 + -9.1706405e-003 + -9.4881461e-003 + -9.3098519e-003 + -8.6587401e-003 + -7.6317391e-003 + -6.3531188e-003 + -4.9121048e-003 + -3.3244604e-003 + -1.5577885e-003 + 4.1379767e-004 + 2.5743342e-003 + 4.8469174e-003 + 7.0961915e-003 + 9.1738785e-003 + 1.0982556e-002 + 1.2498737e-002 + 1.3747569e-002 + 1.4770583e-002 + 1.5605485e-002 + 1.6272033e-002 + 1.6760411e-002 + 1.7031712e-002 + 1.7028880e-002 + 1.6692332e-002 + 1.5991001e-002 + 1.4950311e-002 + 1.3655571e-002 + 1.2227703e-002 + 1.0776382e-002 + 9.3640534e-003 + 8.0042023e-003 + 6.6849929e-003 + 5.4014146e-003 + 4.1766285e-003 + 3.0553164e-003 + 2.0746598e-003 + 1.2419718e-003 + 5.3451785e-004 + -9.3269509e-005 + -7.0867883e-004 + -1.4052884e-003 + -2.3000825e-003 + -3.5058085e-003 + -5.0927659e-003 + -7.0693900e-003 + -9.3881359e-003 + -1.1970758e-002 + -1.4737140e-002 + -1.7620775e-002 + -2.0563550e-002 + -2.3483671e-002 + -2.6249106e-002 + -2.8685287e-002 + -3.0592148e-002 + -3.1774990e-002 + -3.2103830e-002 + -3.1568058e-002 + -3.0293228e-002 + -2.8498366e-002 + -2.6412238e-002 + -2.4211228e-002 + -2.2004915e-002 + -1.9851170e-002 + -1.7776167e-002 + -1.5794740e-002 + -1.3937870e-002 + -1.2276467e-002 + -1.0912651e-002 + -9.9327581e-003 + -9.3622923e-003 + -9.1507148e-003 + -9.1895944e-003 + -9.3609396e-003 + -9.5864736e-003 + -9.8387737e-003 + -1.0113617e-002 + -1.0396427e-002 + -1.0650022e-002 + -1.0836175e-002 + -1.0948250e-002 + -1.1017614e-002 + -1.1089426e-002 + -1.1184658e-002 + -1.1267833e-002 + -1.1242246e-002 + -1.0978829e-002 + -1.0365598e-002 + -9.3543023e-003 + -7.9750187e-003 + -6.3191795e-003 + -4.5145625e-003 + -2.6973328e-003 + -9.8765252e-004 + 5.1866410e-004 + 1.7567855e-003 + 2.7016800e-003 + 3.3628660e-003 + 3.7745764e-003 + 3.9927170e-003 + 4.0896339e-003 + 4.1383619e-003 + 4.1861050e-003 + 4.2322630e-003 + 4.2381538e-003 + 4.1565607e-003 + 3.9515237e-003 + 3.6180146e-003 + 3.1962195e-003 + 2.7621177e-003 + 2.3887204e-003 + 2.0849995e-003 + 1.7657574e-003 + 1.2757165e-003 + 4.3835780e-004 + -8.8686716e-004 + -2.7551274e-003 + -5.1184596e-003 + -7.8475015e-003 + -1.0776558e-002 + -1.3753745e-002 + -1.6675675e-002 + -1.9484790e-002 + -2.2149376e-002 + -2.4654449e-002 + -2.7001994e-002 + -2.9210949e-002 + -3.1300355e-002 + -3.3259872e-002 + -3.5036669e-002 + -3.6563719e-002 + -3.7813737e-002 + -3.8830841e-002 + -3.9722405e-002 + -4.0621026e-002 + -4.1634646e-002 + -4.2807247e-002 + -4.4107753e-002 + -4.5449867e-002 + -4.6731024e-002 + -4.7871414e-002 + -4.8830994e-002 + -4.9603583e-002 + -5.0200541e-002 + -5.0631127e-002 + -5.0897038e-002 + -5.1010779e-002 + -5.1013134e-002 + -5.0965355e-002 + -5.0926959e-002 + -5.0938255e-002 + -5.1018831e-002 + -5.1177865e-002 + -5.1419562e-002 + -5.1744262e-002 + -5.2149192e-002 + -5.2627108e-002 + -5.3162018e-002 + -5.3728770e-002 + -5.4301421e-002 + -5.4860245e-002 + -5.5389084e-002 + -5.5857992e-002 + -5.6208773e-002 + -5.6378449e-002 + -5.6352557e-002 + -5.6197531e-002 + -5.6044458e-002 + -5.6030801e-002 + -5.6229056e-002 + -5.6607392e-002 + -5.7042813e-002 + -5.7392206e-002 + -5.7583050e-002 + -5.7646100e-002 + -5.7690559e-002 + -5.7861077e-002 + -5.8282166e-002 + -5.9011210e-002 + -6.0023012e-002 + -6.1224667e-002 + -6.2495278e-002 + -6.3745838e-002 + -6.4971726e-002 + -6.6247316e-002 + -6.7663933e-002 + -6.9260866e-002 + -7.0993187e-002 + -7.2753682e-002 + -7.4420415e-002 + -7.5900777e-002 + -7.7156868e-002 + -7.8200695e-002 + -7.9062382e-002 + -7.9750980e-002 + -8.0243319e-002 + -8.0505413e-002 + -8.0524860e-002 + -8.0339374e-002 + -8.0042213e-002 + -7.9755987e-002 + -7.9592683e-002 + -7.9628291e-002 + -7.9900134e-002 + -8.0413247e-002 + -8.1154987e-002 + -8.2113301e-002 + -8.3274845e-002 + -8.4601600e-002 + -8.6011943e-002 + -8.7394428e-002 + -8.8643559e-002 + -8.9683847e-002 + -9.0486097e-002 + -9.1073016e-002 + -9.1497544e-002 + -9.1812119e-002 + -9.2047640e-002 + -9.2208420e-002 + -9.2280771e-002 + -9.2243759e-002 + -9.2082962e-002 + -9.1808364e-002 + -9.1464102e-002 + -9.1117419e-002 + -9.0832811e-002 + -9.0654787e-002 + -9.0606669e-002 + -9.0692423e-002 + -9.0895731e-002 + -9.1184436e-002 + -9.1523120e-002 + -9.1881801e-002 + -9.2239519e-002 + -9.2577633e-002 + -9.2864405e-002 + -9.3053423e-002 + -9.3097570e-002 + -9.2965954e-002 + -9.2654594e-002 + -9.2185944e-002 + -9.1589625e-002 + -9.0871213e-002 + -9.0000806e-002 + -8.8935202e-002 + -8.7653337e-002 + -8.6186054e-002 + -8.4626830e-002 + -8.3107515e-002 + -8.1746162e-002 + -8.0599446e-002 + -7.9655337e-002 + -7.8857906e-002 + -7.8137632e-002 + -7.7445634e-002 + -7.6778850e-002 + -7.6180695e-002 + -7.5716189e-002 + -7.5442070e-002 + -7.5397550e-002 + -7.5614961e-002 + -7.6136695e-002 + -7.7014510e-002 + -7.8284396e-002 + -7.9926465e-002 + -8.1829735e-002 + -8.3814392e-002 + -8.5706427e-002 + -8.7395945e-002 + -8.8851649e-002 + -9.0096822e-002 + -9.1155470e-002 + -9.2010553e-002 + -9.2613108e-002 + -9.2910773e-002 + -9.2867636e-002 + -9.2494319e-002 + -9.1882101e-002 + -9.1198977e-002 + -9.0630832e-002 + -9.0302347e-002 + -9.0221388e-002 + -9.0283795e-002 + -9.0342791e-002 + -9.0284208e-002 + -9.0059227e-002 + -8.9679497e-002 + -8.9181988e-002 + -8.8583112e-002 + -8.7860040e-002 + -8.6963851e-002 + -8.5844795e-002 + -8.4468239e-002 + -8.2823424e-002 + -8.0928488e-002 + -7.8819705e-002 + -7.6541576e-002 + -7.4144522e-002 + -7.1685205e-002 + -6.9226095e-002 + -6.6836925e-002 + -6.4598594e-002 + -6.2586237e-002 + -6.0847572e-002 + -5.9404247e-002 + -5.8259219e-002 + -5.7396907e-002 + -5.6782491e-002 + -5.6352801e-002 + -5.6018650e-002 + -5.5699733e-002 + -5.5363549e-002 + -5.5040103e-002 + -5.4795062e-002 + -5.4668350e-002 + -5.4614759e-002 + -5.4499370e-002 + -5.4139416e-002 + -5.3371789e-002 + -5.2135849e-002 + -5.0499918e-002 + -4.8634074e-002 + -4.6757870e-002 + -4.5075634e-002 + -4.3723021e-002 + -4.2732046e-002 + -4.2048562e-002 + -4.1586372e-002 + -4.1273585e-002 + -4.1074497e-002 + -4.0982824e-002 + -4.1004283e-002 + -4.1148156e-002 + -4.1419141e-002 + -4.1793310e-002 + -4.2199886e-002 + -4.2533662e-002 + -4.2681422e-002 + -4.2541713e-002 + -4.2040963e-002 + -4.1152987e-002 + -3.9914580e-002 + -3.8411681e-002 + -3.6752320e-002 + -3.5031539e-002 + -3.3281278e-002 + -3.1467648e-002 + -2.9544569e-002 + -2.7498386e-002 + -2.5365627e-002 + -2.3228425e-002 + -2.1180668e-002 + -1.9298748e-002 + -1.7618051e-002 + -1.6107489e-002 + -1.4680272e-002 + -1.3222820e-002 + -1.1620613e-002 + -9.7997989e-003 + -7.7619171e-003 + -5.5653228e-003 + -3.2727816e-003 + -9.3640902e-004 + 1.4021706e-003 + 3.7242506e-003 + 6.0042029e-003 + 8.1997550e-003 + 1.0279649e-002 + 1.2222393e-002 + 1.4022042e-002 + 1.5687168e-002 + 1.7215721e-002 + 1.8587365e-002 + 1.9771591e-002 + 2.0741332e-002 + 2.1487432e-002 + 2.2008846e-002 + 2.2305365e-002 + 2.2376141e-002 + 2.2198779e-002 + 2.1758418e-002 + 2.1091791e-002 + 2.0248158e-002 + 1.9261916e-002 + 1.8166083e-002 + 1.6970038e-002 + 1.5698965e-002 + 1.4449095e-002 + 1.3323697e-002 + 1.2408978e-002 + 1.1790856e-002 + 1.1478423e-002 + 1.1388556e-002 + 1.1400782e-002 + 1.1386538e-002 + 1.1274545e-002 + 1.1072418e-002 + 1.0827054e-002 + 1.0616667e-002 + 1.0540479e-002 + 1.0695138e-002 + 1.1155543e-002 + 1.1940172e-002 + 1.2994823e-002 + 1.4217246e-002 + 1.5501358e-002 + 1.6772174e-002 + 1.7992155e-002 + 1.9167861e-002 + 2.0333010e-002 + 2.1504801e-002 + 2.2663736e-002 + 2.3772411e-002 + 2.4790579e-002 + 2.5679028e-002 + 2.6441041e-002 + 2.7123756e-002 + 2.7789454e-002 + 2.8513647e-002 + 2.9355308e-002 + 3.0324384e-002 + 3.1377061e-002 + 3.2435235e-002 + 3.3421232e-002 + 3.4295175e-002 + 3.5065427e-002 + 3.5764759e-002 + 3.6432326e-002 + 3.7082817e-002 + 3.7694005e-002 + 3.8235513e-002 + 3.8696034e-002 + 3.9111691e-002 + 3.9555032e-002 + 4.0086011e-002 + 4.0715461e-002 + 4.1387989e-002 + 4.2004560e-002 + 4.2487606e-002 + 4.2808476e-002 + 4.2976140e-002 + 4.3053012e-002 + 4.3139118e-002 + 4.3331401e-002 + 4.3710363e-002 + 4.4330328e-002 + 4.5207760e-002 + 4.6318179e-002 + 4.7596525e-002 + 4.8933429e-002 + 5.0196069e-002 + 5.1266078e-002 + 5.2064829e-002 + 5.2564126e-002 + 5.2796296e-002 + 5.2859290e-002 + 5.2874841e-002 + 5.2938570e-002 + 5.3111950e-002 + 5.3420513e-002 + 5.3843289e-002 + 5.4315056e-002 + 5.4743054e-002 + 5.5040243e-002 + 5.5167274e-002 + 5.5151266e-002 + 5.5073724e-002 + 5.5032693e-002 + 5.5103892e-002 + 5.5329229e-002 + 5.5714591e-002 + 5.6245203e-002 + 5.6913154e-002 + 5.7710640e-002 + 5.8614627e-002 + 5.9583965e-002 + 6.0557698e-002 + 6.1461667e-002 + 6.2214601e-002 + 6.2751883e-002 + 6.3042815e-002 + 6.3067706e-002 + 6.2799611e-002 + 6.2206058e-002 + 6.1271451e-002 + 6.0031898e-002 + 5.8600809e-002 + 5.7151695e-002 + 5.5856589e-002 + 5.4828678e-002 + 5.4106875e-002 + 5.3684515e-002 + 5.3521397e-002 + 5.3564031e-002 + 5.3782172e-002 + 5.4145136e-002 + 5.4589534e-002 + 5.5027263e-002 + 5.5361518e-002 + 5.5503228e-002 + 5.5399707e-002 + 5.5060859e-002 + 5.4553866e-002 + 5.3966292e-002 + 5.3381286e-002 + 5.2877277e-002 + 5.2517032e-002 + 5.2359235e-002 + 5.2477367e-002 + 5.2928453e-002 + 5.3716245e-002 + 5.4771081e-002 + 5.5948178e-002 + 5.7069269e-002 + 5.7992147e-002 + 5.8653795e-002 + 5.9072884e-002 + 5.9334318e-002 + 5.9538968e-002 + 5.9746783e-002 + 5.9946766e-002 + 6.0050471e-002 + 5.9947373e-002 + 5.9591867e-002 + 5.9032318e-002 + 5.8365957e-002 + 5.7701214e-002 + 5.7155252e-002 + 5.6813302e-002 + 5.6705317e-002 + 5.6818426e-002 + 5.7095338e-002 + 5.7454870e-002 + 5.7807919e-002 + 5.8064987e-002 + 5.8175843e-002 + 5.8163287e-002 + 5.8099301e-002 + 5.8066463e-002 + 5.8134171e-002 + 5.8335115e-002 + 5.8652589e-002 + 5.9020963e-002 + 5.9351684e-002 + 5.9562613e-002 + 5.9588242e-002 + 5.9385406e-002 + 5.8945838e-002 + 5.8315162e-002 + 5.7589683e-002 + 5.6891127e-002 + 5.6340194e-002 + 5.6012178e-002 + 5.5911354e-002 + 5.6001088e-002 + 5.6241185e-002 + 5.6602951e-002 + 5.7062008e-002 + 5.7587440e-002 + 5.8132489e-002 + 5.8633418e-002 + 5.9033119e-002 + 5.9303600e-002 + 5.9452854e-002 + 5.9519213e-002 + 5.9560699e-002 + 5.9638383e-002 + 5.9793982e-002 + 6.0029290e-002 + 6.0297165e-002 + 6.0524638e-002 + 6.0654717e-002 + 6.0671078e-002 + 6.0593930e-002 + 6.0476415e-002 + 6.0370303e-002 + 6.0272641e-002 + 6.0134847e-002 + 5.9890260e-002 + 5.9499766e-002 + 5.9000206e-002 + 5.8480374e-002 + 5.8015169e-002 + 5.7615707e-002 + 5.7224283e-002 + 5.6736765e-002 + 5.6059555e-002 + 5.5176437e-002 + 5.4159874e-002 + 5.3144850e-002 + 5.2262211e-002 + 5.1555645e-002 + 5.0972036e-002 + 5.0402791e-002 + 4.9731646e-002 + 4.8889901e-002 + 4.7880025e-002 + 4.6754081e-002 + 4.5585340e-002 + 4.4445695e-002 + 4.3366327e-002 + 4.2315789e-002 + 4.1224296e-002 + 4.0022394e-002 + 3.8674335e-002 + 3.7188510e-002 + 3.5612531e-002 + 3.4027418e-002 + 3.2530302e-002 + 3.1208787e-002 + 3.0109900e-002 + 2.9212229e-002 + 2.8442737e-002 + 2.7727744e-002 + 2.7014793e-002 + 2.6285274e-002 + 2.5574474e-002 + 2.4942851e-002 + 2.4439713e-002 + 2.4109370e-002 + 2.3979703e-002 + 2.4052455e-002 + 2.4325125e-002 + 2.4791505e-002 + 2.5434983e-002 + 2.6217240e-002 + 2.7058807e-002 + 2.7857080e-002 + 2.8522506e-002 + 2.9014582e-002 + 2.9350169e-002 + 2.9568181e-002 + 2.9718565e-002 + 2.9840799e-002 + 2.9930229e-002 + 2.9966437e-002 + 2.9932545e-002 + 2.9820828e-002 + 2.9645107e-002 + 2.9419335e-002 + 2.9152385e-002 + 2.8863404e-002 + 2.8587081e-002 + 2.8363509e-002 + 2.8219257e-002 + 2.8157736e-002 + 2.8149912e-002 + 2.8148750e-002 + 2.8103945e-002 + 2.7961835e-002 + 2.7683370e-002 + 2.7251788e-002 + 2.6674726e-002 + 2.5988974e-002 + 2.5245831e-002 + 2.4480549e-002 + 2.3707464e-002 + 2.2937362e-002 + 2.2177155e-002 + 2.1425572e-002 + 2.0663644e-002 + 1.9855556e-002 + 1.8976828e-002 + 1.8023471e-002 + 1.6999085e-002 + 1.5905856e-002 + 1.4732371e-002 + 1.3461797e-002 + 1.2090026e-002 + 1.0633363e-002 + 9.1395180e-003 + 7.6761777e-003 + 6.3022975e-003 + 5.0563685e-003 + 3.9597954e-003 + 3.0286238e-003 + 2.2798802e-003 + 1.7154198e-003 + 1.3123408e-003 + 1.0289798e-003 + 8.0314184e-004 + 5.6508589e-004 + 2.6862246e-004 + -9.8475343e-005 + -5.1621189e-004 + -9.2907033e-004 + -1.2558897e-003 + -1.4108924e-003 + -1.3316518e-003 + -1.0203400e-003 + -5.6715260e-004 + -1.1336673e-004 + 2.1501673e-004 + 3.5281978e-004 + 3.1030413e-004 + 1.4569090e-004 + -7.4210486e-005 + -2.8503255e-004 + -4.3447180e-004 + -4.9329902e-004 + -4.3573770e-004 + -2.2043744e-004 + 1.9374331e-004 + 8.2931965e-004 + 1.6886017e-003 + 2.7563262e-003 + 4.0001299e-003 + 5.3687970e-003 + 6.7967732e-003 + 8.2015458e-003 + 9.4779183e-003 + 1.0514104e-002 + 1.1218904e-002 + 1.1550787e-002 + 1.1541377e-002 + 1.1294468e-002 + 1.0956356e-002 + 1.0670749e-002 + 1.0536445e-002 + 1.0582623e-002 + 1.0778639e-002 + 1.1072972e-002 + 1.1415705e-002 + 1.1760449e-002 + 1.2088753e-002 + 1.2423793e-002 + 1.2806601e-002 + 1.3280392e-002 + 1.3864015e-002 + 1.4528003e-002 + 1.5209272e-002 + 1.5821154e-002 + 1.6273515e-002 + 1.6499516e-002 + 1.6463219e-002 + 1.6162569e-002 + 1.5621149e-002 + 1.4883529e-002 + 1.4001697e-002 + 1.3017021e-002 + 1.1968296e-002 + 1.0903707e-002 + 9.8933479e-003 + 9.0243589e-003 + 8.3732862e-003 + 7.9837279e-003 + 7.8484874e-003 + 7.9137122e-003 + 8.1004156e-003 + 8.3204020e-003 + 8.4889753e-003 + 8.5294614e-003 + 8.3733570e-003 + 7.9804361e-003 + 7.3599123e-003 + 6.5544968e-003 + 5.6250492e-003 + 4.6514063e-003 + 3.7113933e-003 + 2.8592319e-003 + 2.1312488e-003 + 1.5611230e-003 + 1.1945918e-003 + 1.0829104e-003 + 1.2568555e-003 + 1.7204515e-003 + 2.4482679e-003 + 3.3827381e-003 + 4.4637315e-003 + 5.6647256e-003 + 7.0060607e-003 + 8.5386636e-003 + 1.0290941e-002 + 1.2235032e-002 + 1.4300013e-002 + 1.6379002e-002 + 1.8333739e-002 + 2.0022094e-002 + 2.1339952e-002 + 2.2246377e-002 + 2.2756355e-002 + 2.2926475e-002 + 2.2842254e-002 + 2.2608273e-002 + 2.2332309e-002 + 2.2112122e-002 + 2.2046198e-002 + 2.2226187e-002 + 2.2704022e-002 + 2.3480735e-002 + 2.4504130e-002 + 2.5663934e-002 + 2.6812602e-002 + 2.7808663e-002 + 2.8565371e-002 + 2.9083786e-002 + 2.9443282e-002 + 2.9740606e-002 + 3.0016895e-002 + 3.0231335e-002 + 3.0284915e-002 + 3.0083822e-002 + 2.9598304e-002 + 2.8863417e-002 + 2.7952693e-002 + 2.6954447e-002 + 2.5948838e-002 + 2.5003385e-002 + 2.4180880e-002 + 2.3528532e-002 + 2.3067434e-002 + 2.2799416e-002 + 2.2717391e-002 + 2.2815979e-002 + 2.3094489e-002 + 2.3554263e-002 + 2.4183304e-002 + 2.4948843e-002 + 2.5817284e-002 + 2.6757206e-002 + 2.7720018e-002 + 2.8614222e-002 + 2.9294849e-002 + 2.9612853e-002 + 2.9496521e-002 + 2.8988631e-002 + 2.8222806e-002 + 2.7366984e-002 + 2.6562290e-002 + 2.5892903e-002 + 2.5400805e-002 + 2.5109824e-002 + 2.5027546e-002 + 2.5145464e-002 + 2.5450272e-002 + 2.5926665e-002 + 2.6551006e-002 + 2.7290566e-002 + 2.8114700e-002 + 2.9011324e-002 + 2.9988146e-002 + 3.1054403e-002 + 3.2207196e-002 + 3.3430758e-002 + 3.4693493e-002 + 3.5957843e-002 + 3.7207550e-002 + 3.8447079e-002 + 3.9678317e-002 + 4.0885065e-002 + 4.2036770e-002 + 4.3116966e-002 + 4.4141740e-002 + 4.5156505e-002 + 4.6214025e-002 + 4.7338018e-002 + 4.8508764e-002 + 4.9676814e-002 + 5.0796871e-002 + 5.1863575e-002 + 5.2905663e-002 + 5.3954671e-002 + 5.5024447e-002 + 5.6103049e-002 + 5.7153427e-002 + 5.8108754e-002 + 5.8883988e-002 + 5.9414290e-002 + 5.9684940e-002 + 5.9749825e-002 + 5.9709868e-002 + 5.9650544e-002 + 5.9616941e-002 + 5.9621456e-002 + 5.9661890e-002 + 5.9753010e-002 + 5.9934563e-002 + 6.0259935e-002 + 6.0775477e-002 + 6.1491685e-002 + 6.2364939e-002 + 6.3291865e-002 + 6.4130691e-002 + 6.4751118e-002 + 6.5077736e-002 + 6.5106453e-002 + 6.4904432e-002 + 6.4589759e-002 + 6.4274603e-002 + 6.4012223e-002 + 6.3795638e-002 + 6.3586570e-002 + 6.3341501e-002 + 6.3040155e-002 + 6.2701986e-002 + 6.2374066e-002 + 6.2112485e-002 + 6.1957097e-002 + 6.1907155e-002 + 6.1930194e-002 + 6.1995744e-002 + 6.2101832e-002 + 6.2284263e-002 + 6.2602143e-002 + 6.3092422e-002 + 6.3726965e-002 + 6.4407901e-002 + 6.4997725e-002 + 6.5373493e-002 + 6.5480677e-002 + 6.5355649e-002 + 6.5102049e-002 + 6.4832592e-002 + 6.4612500e-002 + 6.4430796e-002 + 6.4213839e-002 + 6.3869376e-002 + 6.3326747e-002 + 6.2563197e-002 + 6.1617867e-002 + 6.0583139e-002 + 5.9579084e-002 + 5.8721996e-002 + 5.8094616e-002 + 5.7729470e-002 + 5.7614390e-002 + 5.7724999e-002 + 5.8044132e-002 + 5.8549892e-002 + 5.9198646e-002 + 5.9912639e-002 + 6.0588332e-002 + 6.1132945e-002 + 6.1497296e-002 + 6.1681260e-002 + 6.1726366e-002 + 6.1689277e-002 + 6.1611070e-002 + 6.1508641e-002 + 6.1377103e-002 + 6.1204375e-002 + 6.0985044e-002 + 6.0724696e-002 + 6.0439342e-002 + 6.0159545e-002 + 5.9930312e-002 + 5.9783818e-002 + 5.9727477e-002 + 5.9754640e-002 + 5.9851063e-002 + 6.0012072e-002 + 6.0250996e-002 + 6.0594652e-002 + 6.1078917e-002 + 6.1738428e-002 + 6.2602031e-002 + 6.3690480e-002 + 6.5010130e-002 + 6.6541524e-002 + 6.8226994e-002 + 6.9981339e-002 + 7.1718567e-002 + 7.3367746e-002 + 7.4883382e-002 + 7.6247819e-002 + 7.7456855e-002 + 7.8509629e-002 + 7.9402185e-002 + 8.0120385e-002 + 8.0649090e-002 + 8.0985600e-002 + 8.1142645e-002 + 8.1146682e-002 + 8.1037818e-002 + 8.0877662e-002 + 8.0742308e-002 + 8.0695688e-002 + 8.0778009e-002 + 8.0997621e-002 + 8.1324406e-002 + 8.1707504e-002 + 8.2094241e-002 + 8.2422324e-002 + 8.2605353e-002 + 8.2550223e-002 + 8.2184066e-002 + 8.1484289e-002 + 8.0516983e-002 + 7.9419640e-002 + 7.8337332e-002 + 7.7369126e-002 + 7.6544316e-002 + 7.5841334e-002 + 7.5229070e-002 + 7.4695492e-002 + 7.4256804e-002 + 7.3964225e-002 + 7.3887954e-002 + 7.4080505e-002 + 7.4556200e-002 + 7.5278206e-002 + 7.6168148e-002 + 7.7141078e-002 + 7.8129344e-002 + 7.9090003e-002 + 8.0002065e-002 + 8.0868395e-002 + 8.1718409e-002 + 8.2597430e-002 + 8.3553400e-002 + 8.4619924e-002 + 8.5779230e-002 + 8.6931277e-002 + 8.7921508e-002 + 8.8599351e-002 + 8.8875933e-002 + 8.8772882e-002 + 8.8411075e-002 + 8.7940123e-002 + 8.7460316e-002 + 8.6975143e-002 + 8.6405220e-002 + 8.5654580e-002 + 8.4656199e-002 + 8.3387146e-002 + 8.1884440e-002 + 8.0235848e-002 + 7.8558010e-002 + 7.6961899e-002 + 7.5510916e-002 + 7.4219084e-002 + 7.3071177e-002 + 7.2032544e-002 + 7.1059724e-002 + 7.0119660e-002 + 6.9196758e-002 + 6.8283033e-002 + 6.7382807e-002 + 6.6529115e-002 + 6.5764459e-002 + 6.5107083e-002 + 6.4554948e-002 + 6.4093968e-002 + 6.3694294e-002 + 6.3333561e-002 + 6.2999681e-002 + 6.2666409e-002 + 6.2303940e-002 + 6.1892246e-002 + 6.1424545e-002 + 6.0915140e-002 + 6.0387757e-002 + 5.9849486e-002 + 5.9300964e-002 + 5.8753037e-002 + 5.8210154e-002 + 5.7681924e-002 + 5.7192652e-002 + 5.6761937e-002 + 5.6402789e-002 + 5.6103363e-002 + 5.5809688e-002 + 5.5451080e-002 + 5.4981932e-002 + 5.4392045e-002 + 5.3689541e-002 + 5.2910956e-002 + 5.2119231e-002 + 5.1398154e-002 + 5.0831366e-002 + 5.0442133e-002 + 5.0204340e-002 + 5.0074215e-002 + 5.0003565e-002 + 4.9971281e-002 + 4.9955164e-002 + 4.9920067e-002 + 4.9856574e-002 + 4.9767195e-002 + 4.9654244e-002 + 4.9528537e-002 + 4.9392182e-002 + 4.9219066e-002 + 4.8940215e-002 + 4.8462926e-002 + 4.7739345e-002 + 4.6799155e-002 + 4.5741870e-002 + 4.4715616e-002 + 4.3842599e-002 + 4.3172546e-002 + 4.2700038e-002 + 4.2396642e-002 + 4.2253531e-002 + 4.2281755e-002 + 4.2478419e-002 + 4.2813836e-002 + 4.3215265e-002 + 4.3570865e-002 + 4.3780766e-002 + 4.3789352e-002 + 4.3590811e-002 + 4.3218156e-002 + 4.2711984e-002 + 4.2100863e-002 + 4.1407911e-002 + 4.0652104e-002 + 3.9819867e-002 + 3.8884948e-002 + 3.7863134e-002 + 3.6787391e-002 + 3.5663345e-002 + 3.4465675e-002 + 3.3147702e-002 + 3.1654396e-002 + 2.9930809e-002 + 2.7949859e-002 + 2.5720776e-002 + 2.3284757e-002 + 2.0703887e-002 + 1.8024397e-002 + 1.5276062e-002 + 1.2478602e-002 + 9.6541150e-003 + 6.8428731e-003 + 4.1118656e-003 + 1.5571108e-003 + -7.4087968e-004 + -2.7486002e-003 + -4.4827305e-003 + -6.0060924e-003 + -7.3860884e-003 + -8.6735570e-003 + -9.9234392e-003 + -1.1164329e-002 + -1.2379840e-002 + -1.3561371e-002 + -1.4724102e-002 + -1.5889152e-002 + -1.7095986e-002 + -1.8383361e-002 + -1.9743299e-002 + -2.1139557e-002 + -2.2534949e-002 + -2.3894834e-002 + -2.5212491e-002 + -2.6513074e-002 + -2.7816062e-002 + -2.9111828e-002 + -3.0374009e-002 + -3.1590378e-002 + -3.2747004e-002 + -3.3808238e-002 + -3.4761580e-002 + -3.5618548e-002 + -3.6393321e-002 + -3.7118296e-002 + -3.7836028e-002 + -3.8562972e-002 + -3.9263173e-002 + -3.9856916e-002 + -4.0236378e-002 + -4.0311309e-002 + -4.0048623e-002 + -3.9442679e-002 + -3.8527048e-002 + -3.7396432e-002 + -3.6151469e-002 + -3.4883152e-002 + -3.3683061e-002 + -3.2609948e-002 + -3.1681580e-002 + -3.0892317e-002 + -3.0239927e-002 + -2.9717302e-002 + -2.9270264e-002 + -2.8812330e-002 + -2.8266481e-002 + -2.7587046e-002 + -2.6777922e-002 + -2.5885304e-002 + -2.4973650e-002 + -2.4114965e-002 + -2.3370924e-002 + -2.2784428e-002 + -2.2389745e-002 + -2.2218896e-002 + -2.2275107e-002 + -2.2516326e-002 + -2.2902703e-002 + -2.3409320e-002 + -2.4013351e-002 + -2.4734528e-002 + -2.5605083e-002 + -2.6605461e-002 + -2.7705601e-002 + -2.8890473e-002 + -3.0124968e-002 + -3.1372131e-002 + -3.2633972e-002 + -3.3931878e-002 + -3.5286902e-002 + -3.6706461e-002 + -3.8180236e-002 + -3.9696579e-002 + -4.1205680e-002 + -4.2620274e-002 + -4.3887723e-002 + -4.5014913e-002 + -4.6018605e-002 + -4.6899935e-002 + -4.7680227e-002 + -4.8409531e-002 + -4.9145045e-002 + -4.9934275e-002 + -5.0807139e-002 + -5.1765429e-002 + -5.2784826e-002 + -5.3842539e-002 + -5.4917449e-002 + -5.5977473e-002 + -5.6980840e-002 + -5.7879598e-002 + -5.8637598e-002 + -5.9219309e-002 + -5.9597646e-002 + -5.9794164e-002 + -5.9841678e-002 + -5.9757425e-002 + -5.9567289e-002 + -5.9298526e-002 + -5.8962309e-002 + -5.8541100e-002 + -5.7988693e-002 + -5.7251302e-002 + -5.6283439e-002 + -5.5078866e-002 + -5.3701323e-002 + -5.2262742e-002 + -5.0902012e-002 + -4.9759897e-002 + -4.8936135e-002 + -4.8478642e-002 + -4.8384741e-002 + -4.8609356e-002 + -4.9085523e-002 + -4.9751638e-002 + -5.0548112e-002 + -5.1418937e-002 + -5.2336984e-002 + -5.3293163e-002 + -5.4297493e-002 + -5.5372158e-002 + -5.6507820e-002 + -5.7665833e-002 + -5.8818019e-002 + -5.9925855e-002 + -6.0922025e-002 + -6.1756488e-002 + -6.2406309e-002 + -6.2855627e-002 + -6.3083047e-002 + -6.3044915e-002 + -6.2713565e-002 + -6.2106448e-002 + -6.1231753e-002 + -6.0098675e-002 + -5.8765729e-002 + -5.7314282e-002 + -5.5810322e-002 + -5.4286243e-002 + -5.2746220e-002 + -5.1163338e-002 + -4.9487299e-002 + -4.7663649e-002 + -4.5635020e-002 + -4.3372078e-002 + -4.0882173e-002 + -3.8185350e-002 + -3.5304652e-002 + -3.2264203e-002 + -2.9113178e-002 + -2.5915134e-002 + -2.2710000e-002 + -1.9532005e-002 + -1.6395596e-002 + -1.3256508e-002 + -1.0060183e-002 + -6.7753627e-003 + -3.3515050e-003 + 2.4314073e-004 + 3.9769543e-003 + 7.8265568e-003 + 1.1791302e-002 + 1.5867229e-002 + 2.0072700e-002 + 2.4427983e-002 + 2.8908151e-002 + 3.3458524e-002 + 3.8030354e-002 + 4.2573603e-002 + 4.7020700e-002 + 5.1294557e-002 + 5.5320920e-002 + 5.9049429e-002 + 6.2478149e-002 + 6.5653074e-002 + 6.8672485e-002 + 7.1674626e-002 + 7.4771856e-002 + 7.8020854e-002 + 8.1445465e-002 + 8.5059698e-002 + 8.8890546e-002 + 9.2960964e-002 + 9.7255241e-002 + 1.0170474e-001 + 1.0619079e-001 + 1.1058319e-001 + 1.1477256e-001 + 1.1869969e-001 + 1.2236116e-001 + 1.2576471e-001 + 1.2890316e-001 + 1.3174732e-001 + 1.3424216e-001 + 1.3632746e-001 + 1.3796259e-001 + 1.3913543e-001 + 1.3985777e-001 + 1.4014490e-001 + 1.4002343e-001 + 1.3952793e-001 + 1.3867365e-001 + 1.3747394e-001 + 1.3595452e-001 + 1.3413607e-001 + 1.3201043e-001 + 1.2955420e-001 + 1.2675704e-001 + 1.2361387e-001 + 1.2012772e-001 + 1.1631798e-001 + 1.1219963e-001 + 1.0777644e-001 + 1.0304750e-001 + 9.7993725e-002 + 9.2609739e-002 + 8.6939443e-002 + 8.1042908e-002 + 7.4987499e-002 + 6.8857244e-002 + 6.2744791e-002 + 5.6744913e-002 + 5.0962994e-002 + 4.5508684e-002 + 4.0457001e-002 + 3.5835795e-002 + 3.1616109e-002 + 2.7711078e-002 + 2.4004027e-002 + 2.0383180e-002 + 1.6753049e-002 + 1.3021922e-002 + 9.1196448e-003 + 5.0257291e-003 + 7.7764906e-004 + -3.5565331e-003 + -7.9065279e-003 + -1.2184992e-002 + -1.6294159e-002 + -2.0149832e-002 + -2.3685911e-002 + -2.6891992e-002 + -2.9811838e-002 + -3.2488606e-002 + -3.4970841e-002 + -3.7330104e-002 + -3.9658603e-002 + -4.2050473e-002 + -4.4590444e-002 + -4.7361323e-002 + -5.0398989e-002 + -5.3676714e-002 + -5.7135394e-002 + -6.0672587e-002 + -6.4170810e-002 + -6.7563979e-002 + -7.0833268e-002 + -7.3981220e-002 + -7.7044579e-002 + -8.0070753e-002 + -8.3088374e-002 + -8.6134776e-002 + -8.9245653e-002 + -9.2434781e-002 + -9.5711489e-002 + -9.9074536e-002 + -1.0251736e-001 + -1.0605236e-001 + -1.0971186e-001 + -1.1352948e-001 + -1.1752864e-001 + -1.2171879e-001 + -1.2608291e-001 + -1.3058903e-001 + -1.3519973e-001 + -1.3984637e-001 + -1.4443758e-001 + -1.4888897e-001 + -1.5313427e-001 + -1.5714227e-001 + -1.6092725e-001 + -1.6453550e-001 + -1.6799498e-001 + -1.7128360e-001 + -1.7434505e-001 + -1.7705426e-001 + -1.7920027e-001 + -1.8056491e-001 + -1.8098122e-001 + -1.8038403e-001 + -1.7882376e-001 + -1.7640026e-001 + -1.7319568e-001 + -1.6925924e-001 + -1.6464924e-001 + -1.5945152e-001 + -1.5381023e-001 + -1.4792864e-001 + -1.4200507e-001 + -1.3620547e-001 + -1.3062651e-001 + -1.2525963e-001 + -1.2001143e-001 + -1.1473070e-001 + -1.0925128e-001 + -1.0345642e-001 + -9.7280176e-002 + -9.0698326e-002 + -8.3747975e-002 + -7.6507437e-002 + -6.9073748e-002 + -6.1560978e-002 + -5.4089270e-002 + -4.6776709e-002 + -3.9729646e-002 + -3.3023710e-002 + -2.6737556e-002 + -2.0991632e-002 + -1.5903307e-002 + -1.1563004e-002 + -8.0377895e-003 + -5.3337162e-003 + -3.3941259e-003 + -2.1339893e-003 + -1.4751191e-003 + -1.3791824e-003 + -1.8363601e-003 + -2.8308400e-003 + -4.3327120e-003 + -6.2993164e-003 + -8.6605488e-003 + -1.1331552e-002 + -1.4248514e-002 + -1.7348284e-002 + -2.0550057e-002 + -2.3780634e-002 + -2.6971929e-002 + -3.0069841e-002 + -3.3057839e-002 + -3.5960279e-002 + -3.8829502e-002 + -4.1697348e-002 + -4.4559933e-002 + -4.7381892e-002 + -5.0101880e-002 + -5.2678303e-002 + -5.5120007e-002 + -5.7492488e-002 + -5.9893838e-002 + -6.2425954e-002 + -6.5153539e-002 + -6.8053025e-002 + -7.1047569e-002 + -7.4070542e-002 + -7.7058961e-002 + -7.9940634e-002 + -8.2655608e-002 + -8.5141981e-002 + -8.7318424e-002 + -8.9128720e-002 + -9.0583268e-002 + -9.1761920e-002 + -9.2800306e-002 + -9.3865761e-002 + -9.5108145e-002 + -9.6619430e-002 + -9.8433735e-002 + -1.0052113e-001 + -1.0283207e-001 + -1.0532948e-001 + -1.0795103e-001 + -1.1063239e-001 + -1.1331935e-001 + -1.1595380e-001 + -1.1846152e-001 + -1.2071451e-001 + -1.2258065e-001 + -1.2398428e-001 + -1.2491556e-001 + -1.2545613e-001 + -1.2574430e-001 + -1.2592116e-001 + -1.2613210e-001 + -1.2650801e-001 + -1.2714220e-001 + -1.2810849e-001 + -1.2945420e-001 + -1.3117860e-001 + -1.3324562e-001 + -1.3558797e-001 + -1.3809371e-001 + -1.4062700e-001 + -1.4306318e-001 + -1.4527488e-001 + -1.4713400e-001 + -1.4855466e-001 + -1.4950338e-001 + -1.4998847e-001 + -1.5006434e-001 + -1.4983170e-001 + -1.4940410e-001 + -1.4886423e-001 + -1.4824098e-001 + -1.4752419e-001 + -1.4670213e-001 + -1.4578400e-001 + -1.4481792e-001 + -1.4389466e-001 + -1.4311877e-001 + -1.4256633e-001 + -1.4223779e-001 + -1.4203637e-001 + -1.4179155e-001 + -1.4131323e-001 + -1.4046290e-001 + -1.3919401e-001 + -1.3755339e-001 + -1.3563774e-001 + -1.3352736e-001 + -1.3127033e-001 + -1.2888943e-001 + -1.2639284e-001 + -1.2378659e-001 + -1.2108056e-001 + -1.1830287e-001 + -1.1548946e-001 + -1.1265725e-001 + -1.0980657e-001 + -1.0693640e-001 + -1.0403596e-001 + -1.0108014e-001 + -9.8042302e-002 + -9.4896890e-002 + -9.1643115e-002 + -8.8322578e-002 + -8.4998899e-002 + -8.1744785e-002 + -7.8637649e-002 + -7.5766751e-002 + -7.3245058e-002 + -7.1185676e-002 + -6.9662139e-002 + -6.8696562e-002 + -6.8250581e-002 + -6.8226295e-002 + -6.8508675e-002 + -6.9017691e-002 + -6.9721756e-002 + -7.0614190e-002 + -7.1695396e-002 + -7.2960719e-002 + -7.4388108e-002 + -7.5926133e-002 + -7.7504013e-002 + -7.9048520e-002 + -8.0481178e-002 + -8.1733142e-002 + -8.2756645e-002 + -8.3532901e-002 + -8.4087032e-002 + -8.4475215e-002 + -8.4776906e-002 + -8.5093694e-002 + -8.5503259e-002 + -8.6024554e-002 + -8.6636254e-002 + -8.7296482e-002 + -8.7985839e-002 + -8.8752302e-002 + -8.9692351e-002 + -9.0920205e-002 + -9.2531321e-002 + -9.4561744e-002 + -9.6997122e-002 + -9.9797981e-002 + -1.0291092e-001 + -1.0628054e-001 + -1.0986587e-001 + -1.1364443e-001 + -1.1759654e-001 + -1.2168789e-001 + -1.2585647e-001 + -1.3000896e-001 + -1.3404047e-001 + -1.3785374e-001 + -1.4136923e-001 + -1.4456394e-001 + -1.4749843e-001 + -1.5027927e-001 + -1.5301020e-001 + -1.5577433e-001 + -1.5860124e-001 + -1.6144830e-001 + -1.6425342e-001 + -1.6697898e-001 + -1.6960844e-001 + -1.7214250e-001 + -1.7459190e-001 + -1.7693815e-001 + -1.7910834e-001 + -1.8101053e-001 + -1.8257219e-001 + -1.8374932e-001 + -1.8451964e-001 + -1.8487586e-001 + -1.8482908e-001 + -1.8440923e-001 + -1.8367407e-001 + -1.8272906e-001 + -1.8171255e-001 + -1.8074774e-001 + -1.7992252e-001 + -1.7927075e-001 + -1.7876328e-001 + -1.7834319e-001 + -1.7794595e-001 + -1.7752469e-001 + -1.7706586e-001 + -1.7656202e-001 + -1.7599125e-001 + -1.7530642e-001 + -1.7444882e-001 + -1.7338632e-001 + -1.7214285e-001 + -1.7080106e-001 + -1.6946836e-001 + -1.6824295e-001 + -1.6719861e-001 + -1.6635885e-001 + -1.6569351e-001 + -1.6516241e-001 + -1.6473803e-001 + -1.6438983e-001 + -1.6407235e-001 + -1.6371618e-001 + -1.6321806e-001 + -1.6245139e-001 + -1.6129680e-001 + -1.5967031e-001 + -1.5754670e-001 + -1.5498468e-001 + -1.5211091e-001 + -1.4907059e-001 + -1.4599824e-001 + -1.4297963e-001 + -1.4005733e-001 + -1.3726843e-001 + -1.3464195e-001 + -1.3221241e-001 + -1.3001995e-001 + -1.2810373e-001 + -1.2646170e-001 + -1.2497892e-001 + -1.2346470e-001 + -1.2171806e-001 + -1.1955437e-001 + -1.1685871e-001 + -1.1361090e-001 + -1.0985359e-001 + -1.0564951e-001 + -1.0105355e-001 + -9.6130787e-002 + -9.0981916e-002 + -8.5721643e-002 + -8.0461505e-002 + -7.5305255e-002 + -7.0334879e-002 + -6.5618950e-002 + -6.1227044e-002 + -5.7230316e-002 + -5.3689283e-002 + -5.0650636e-002 + -4.8160308e-002 + -4.6253987e-002 + -4.4911215e-002 + -4.4026181e-002 + -4.3442424e-002 + -4.2988599e-002 + -4.2509360e-002 + -4.1918715e-002 + -4.1218564e-002 + -4.0458949e-002 + -3.9691861e-002 + -3.8948296e-002 + -3.8223540e-002 + -3.7496741e-002 + -3.6757107e-002 + -3.6017452e-002 + -3.5325960e-002 + -3.4758689e-002 + -3.4411232e-002 + -3.4373629e-002 + -3.4689940e-002 + -3.5318216e-002 + -3.6130682e-002 + -3.6964574e-002 + -3.7653279e-002 + -3.8038719e-002 + -3.7974359e-002 + -3.7317291e-002 + -3.5940474e-002 + -3.3746162e-002 + -3.0647952e-002 + -2.6596543e-002 + -2.1640483e-002 + -1.5900731e-002 + -9.5326578e-003 + -2.7395996e-003 + 4.2604847e-003 + 1.1298910e-002 + 1.8259786e-002 + 2.5044343e-002 + 3.1561344e-002 + 3.7725996e-002 + 4.3453438e-002 + 4.8665934e-002 + 5.3287616e-002 + 5.7275536e-002 + 6.0641957e-002 + 6.3411955e-002 + 6.5632255e-002 + 6.7373076e-002 + 6.8698544e-002 + 6.9676934e-002 + 7.0380630e-002 + 7.0861144e-002 + 7.1136456e-002 + 7.1197593e-002 + 7.0993924e-002 + 7.0454558e-002 + 6.9546006e-002 + 6.8247925e-002 + 6.6526499e-002 + 6.4375906e-002 + 6.1818345e-002 + 5.8871471e-002 + 5.5554734e-002 + 5.1906087e-002 + 4.7993999e-002 + 4.3931420e-002 + 3.9865899e-002 + 3.5952604e-002 + 3.2318682e-002 + 2.9032431e-002 + 2.6105165e-002 + 2.3492734e-002 + 2.1114787e-002 + 1.8865787e-002 + 1.6627997e-002 + 1.4301076e-002 + 1.1777843e-002 + 8.9493071e-003 + 5.7411383e-003 + 2.1272965e-003 + -1.8575293e-003 + -6.1288182e-003 + -1.0597220e-002 + -1.5219889e-002 + -1.9983120e-002 + -2.4865251e-002 + -2.9854194e-002 + -3.4917422e-002 + -3.9999931e-002 + -4.5072017e-002 + -5.0089202e-002 + -5.4991379e-002 + -5.9720468e-002 + -6.4194363e-002 + -6.8326348e-002 + -7.2022126e-002 + -7.5204915e-002 + -7.7841613e-002 + -7.9908887e-002 + -8.1393807e-002 + -8.2296909e-002 + -8.2622969e-002 + -8.2343602e-002 + -8.1410812e-002 + -7.9842360e-002 + -7.7746079e-002 + -7.5295643e-002 + -7.2675599e-002 + -7.0049235e-002 + -6.7524344e-002 + -6.5083010e-002 + -6.2598978e-002 + -5.9920499e-002 + -5.6922762e-002 + -5.3535914e-002 + -4.9793038e-002 + -4.5849019e-002 + -4.1915372e-002 + -3.8173346e-002 + -3.4742940e-002 + -3.1651746e-002 + -2.8786639e-002 + -2.5961387e-002 + -2.2999855e-002 + -1.9749033e-002 + -1.6110266e-002 + -1.2056017e-002 + -7.6122691e-003 + -2.8304373e-003 + 2.2359702e-003 + 7.5474050e-003 + 1.3082461e-002 + 1.8819118e-002 + 2.4714140e-002 + 3.0712437e-002 + 3.6762473e-002 + 4.2795251e-002 + 4.8733783e-002 + 5.4521653e-002 + 6.0100627e-002 + 6.5399071e-002 + 7.0345099e-002 + 7.4887565e-002 + 7.9013395e-002 + 8.2735443e-002 + 8.6086427e-002 + 8.9146680e-002 + 9.2042480e-002 + 9.4894156e-002 + 9.7822911e-002 + 1.0096083e-001 + 1.0443225e-001 + 1.0836619e-001 + 1.1287312e-001 + 1.1803218e-001 + 1.2387340e-001 + 1.3035891e-001 + 1.3744272e-001 + 1.4509554e-001 + 1.5329119e-001 + 1.6201385e-001 + 1.7122254e-001 + 1.8080142e-001 + 1.9056844e-001 + 2.0031157e-001 + 2.0983568e-001 + 2.1901780e-001 + 2.2780417e-001 + 2.3618905e-001 + 2.4418619e-001 + 2.5177719e-001 + 2.5892464e-001 + 2.6558410e-001 + 2.7168996e-001 + 2.7714835e-001 + 2.8183288e-001 + 2.8558134e-001 + 2.8817550e-001 + 2.8938693e-001 + 2.8902097e-001 + 2.8696102e-001 + 2.8325618e-001 + 2.7811442e-001 + 2.7186574e-001 + 2.6491524e-001 + 2.5765402e-001 + 2.5039492e-001 + 2.4332652e-001 + 2.3651282e-001 + 2.2992427e-001 + 2.2345678e-001 + 2.1696537e-001 + 2.1032275e-001 + 2.0346598e-001 + 1.9640552e-001 + 1.8919804e-001 + 1.8192402e-001 + 1.7469873e-001 + 1.6766588e-001 + 1.6096876e-001 + 1.5471346e-001 + 1.4896676e-001 + 1.4376827e-001 + 1.3912272e-001 + 1.3503317e-001 + 1.3150053e-001 + 1.2850806e-001 + 1.2604488e-001 + 1.2409481e-001 + 1.2266036e-001 + 1.2178356e-001 + 1.2150731e-001 + 1.2187112e-001 + 1.2288571e-001 + 1.2448296e-001 + 1.2652856e-001 + 1.2886090e-001 + 1.3129175e-001 + 1.3362486e-001 + 1.3570000e-001 + 1.3740824e-001 + 1.3871093e-001 + 1.3961129e-001 + 1.4010670e-001 + 1.4015974e-001 + 1.3965504e-001 + 1.3843735e-001 + 1.3638042e-001 + 1.3342090e-001 + 1.2958529e-001 + 1.2499644e-001 + 1.1984431e-001 + 1.1430750e-001 + 1.0851013e-001 + 1.0253315e-001 + 9.6431409e-002 + 9.0252611e-002 + 8.4059139e-002 + 7.7922338e-002 + 7.1899761e-002 + 6.6045172e-002 + 6.0382902e-002 + 5.4891577e-002 + 4.9537040e-002 + 4.4277872e-002 + 3.9091255e-002 + 3.3994548e-002 + 2.9010775e-002 + 2.4151274e-002 + 1.9428544e-002 + 1.4830274e-002 + 1.0254618e-002 + 5.4994641e-003 + 3.1026242e-004 + -5.5762579e-003 + -1.2359608e-002 + -2.0094689e-002 + -2.8684568e-002 + -3.7928273e-002 + -4.7553487e-002 + -5.7255672e-002 + -6.6766491e-002 + -7.5852138e-002 + -8.4275033e-002 + -9.1795828e-002 + -9.8171382e-002 + -1.0317226e-001 + -1.0662754e-001 + -1.0846048e-001 + -1.0870271e-001 + -1.0746950e-001 + -1.0492907e-001 + -1.0128519e-001 + -9.6735768e-002 + -9.1448937e-002 + -8.5592987e-002 + -7.9362007e-002 + -7.2987133e-002 + -6.6731397e-002 + -6.0839776e-002 + -5.5469851e-002 + -5.0656361e-002 + -4.6350318e-002 + -4.2465231e-002 + -3.8910150e-002 + -3.5668469e-002 + -3.2826199e-002 + -3.0512705e-002 + -2.8819682e-002 + -2.7742646e-002 + -2.7176663e-002 + -2.6923066e-002 + -2.6724808e-002 + -2.6337841e-002 + -2.5573084e-002 + -2.4332122e-002 + -2.2601180e-002 + -2.0382269e-002 + -1.7627580e-002 + -1.4187267e-002 + -9.8475590e-003 + -4.4132110e-003 + 2.2551828e-003 + 1.0149835e-002 + 1.9044711e-002 + 2.8547895e-002 + 3.8193444e-002 + 4.7555217e-002 + 5.6361168e-002 + 6.4528307e-002 + 7.2117470e-002 + 7.9255413e-002 + 8.6062005e-002 + 9.2595567e-002 + 9.8838925e-002 + 1.0473369e-001 + 1.1022092e-001 + 1.1526026e-001 + 1.1983256e-001 + 1.2393386e-001 + 1.2755049e-001 + 1.3064746e-001 + 1.3316417e-001 + 1.3500809e-001 + 1.3610908e-001 + 1.3644962e-001 + 1.3604653e-001 + 1.3495076e-001 + 1.3321564e-001 + 1.3089536e-001 + 1.2808073e-001 + 1.2488258e-001 + 1.2143704e-001 + 1.1791741e-001 + 1.1446588e-001 + 1.1115943e-001 + 1.0802206e-001 + 1.0501019e-001 + 1.0204206e-001 + 9.9058900e-002 + 9.6057611e-002 + 9.3090309e-002 + 9.0232244e-002 + 8.7552925e-002 + 8.5102166e-002 + 8.2883894e-002 + 8.0836907e-002 + 7.8852670e-002 + 7.6806296e-002 + 7.4569563e-002 + 7.2023876e-002 + 6.9088048e-002 + 6.5726058e-002 + 6.1939791e-002 + 5.7772780e-002 + 5.3319272e-002 + 4.8733755e-002 + 4.4209855e-002 + 3.9930779e-002 + 3.6038245e-002 + 3.2619085e-002 + 2.9712801e-002 + 2.7321589e-002 + 2.5413802e-002 + 2.3958317e-002 + 2.2944908e-002 + 2.2355362e-002 + 2.2155213e-002 + 2.2323779e-002 + 2.2842164e-002 + 2.3677689e-002 + 2.4799437e-002 + 2.6162129e-002 + 2.7691930e-002 + 2.9286076e-002 + 3.0831108e-002 + 3.2220553e-002 + 3.3334390e-002 + 3.4042948e-002 + 3.4229548e-002 + 3.3818641e-002 + 3.2826997e-002 + 3.1380920e-002 + 2.9702027e-002 + 2.8057384e-002 + 2.6673149e-002 + 2.5687226e-002 + 2.5129472e-002 + 2.4939472e-002 + 2.5017339e-002 + 2.5258994e-002 + 2.5569878e-002 + 2.5866949e-002 + 2.6094099e-002 + 2.6237051e-002 + 2.6341063e-002 + 2.6504410e-002 + 2.6862845e-002 + 2.7578217e-002 + 2.8772880e-002 + 3.0499743e-002 + 3.2775820e-002 + 3.5577757e-002 + 3.8832839e-002 + 4.2444403e-002 + 4.6315888e-002 + 5.0357248e-002 + 5.4472094e-002 + 5.8561963e-002 + 6.2543185e-002 + 6.6346727e-002 + 6.9926546e-002 + 7.3256286e-002 + 7.6311947e-002 + 7.9074549e-002 + 8.1540695e-002 + 8.3730172e-002 + 8.5676174e-002 + 8.7411298e-002 + 8.8964241e-002 + 9.0339408e-002 + 9.1494656e-002 + 9.2339340e-002 + 9.2745831e-002 + 9.2589939e-002 + 9.1811538e-002 + 9.0435568e-002 + 8.8561193e-002 + 8.6368535e-002 + 8.4099268e-002 + 8.2027838e-002 + 8.0456749e-002 + 7.9689077e-002 + 7.9967179e-002 + 8.1373560e-002 + 8.3772177e-002 + 8.6839372e-002 + 9.0151904e-002 + 9.3315503e-002 + 9.6057853e-002 + 9.8265676e-002 + 9.9968701e-002 + 1.0126324e-001 + 1.0223694e-001 + 1.0293734e-001 + 1.0337916e-001 + 1.0354977e-001 + 1.0342374e-001 + 1.0301979e-001 + 1.0243022e-001 + 1.0178583e-001 + 1.0121947e-001 + 1.0083086e-001 + 1.0062308e-001 + 1.0047082e-001 + 1.0016433e-001 + 9.9471143e-002 + 9.8195385e-002 + 9.6232079e-002 + 9.3576921e-002 + 9.0306685e-002 + 8.6531810e-002 + 8.2347983e-002 + 7.7834388e-002 + 7.3061754e-002 + 6.8093504e-002 + 6.2983280e-002 + 5.7744124e-002 + 5.2329092e-002 + 4.6647421e-002 + 4.0580688e-002 + 3.4014039e-002 + 2.6867986e-002 + 1.9121411e-002 + 1.0820749e-002 + 2.0617256e-003 + -7.0177664e-003 + -1.6250386e-002 + -2.5463723e-002 + -3.4497784e-002 + -4.3213552e-002 + -5.1485547e-002 + -5.9205224e-002 + -6.6310045e-002 + -7.2800352e-002 + -7.8718089e-002 + -8.4134057e-002 + -8.9140275e-002 + -9.3835562e-002 + -9.8326238e-002 + -1.0269825e-001 + -1.0697221e-001 + -1.1108969e-001 + -1.1492039e-001 + -1.1827749e-001 + -1.2096872e-001 + -1.2285828e-001 + -1.2388871e-001 + -1.2409599e-001 + -1.2361456e-001 + -1.2263558e-001 + -1.2134262e-001 + -1.1985892e-001 + -1.1824121e-001 + -1.1653338e-001 + -1.1482447e-001 + -1.1325377e-001 + -1.1196664e-001 + -1.1105277e-001 + -1.1049622e-001 + -1.1015585e-001 + -1.0980490e-001 + -1.0921764e-001 + -1.0822725e-001 + -1.0674943e-001 + -1.0477617e-001 + -1.0232111e-001 + -9.9370809e-002 + -9.5874387e-002 + -9.1760765e-002 + -8.6979001e-002 + -8.1545724e-002 + -7.5575499e-002 + -6.9277681e-002 + -6.2930811e-002 + -5.6821180e-002 + -5.1170590e-002 + -4.6109045e-002 + -4.1668681e-002 + -3.7811121e-002 + -3.4478337e-002 + -3.1629080e-002 + -2.9251625e-002 + -2.7345763e-002 + -2.5913168e-002 + -2.4948131e-002 + -2.4421653e-002 + -2.4288204e-002 + -2.4499243e-002 + -2.5001287e-002 + -2.5724473e-002 + -2.6573207e-002 + -2.7430358e-002 + -2.8193197e-002 + -2.8803565e-002 + -2.9240598e-002 + -2.9512133e-002 + -2.9655601e-002 + -2.9730576e-002 + -2.9799798e-002 + -2.9896927e-002 + -2.9978301e-002 + -2.9907777e-002 + -2.9494711e-002 + -2.8532212e-002 + -2.6836233e-002 + -2.4290190e-002 + -2.0877593e-002 + -1.6701486e-002 + -1.1971496e-002 + -6.9707700e-003 + -2.0228549e-003 + 2.5653490e-003 + 6.5705271e-003 + 9.8710483e-003 + 1.2440179e-002 + 1.4347792e-002 + 1.5725717e-002 + 1.6724205e-002 + 1.7481546e-002 + 1.8070807e-002 + 1.8473265e-002 + 1.8592167e-002 + 1.8262654e-002 + 1.7296019e-002 + 1.5553276e-002 + 1.2983081e-002 + 9.6298932e-003 + 5.6329104e-003 + 1.2149215e-003 + -3.3460780e-003 + -7.7663624e-003 + -1.1820151e-002 + -1.5396330e-002 + -1.8508430e-002 + -2.1259103e-002 + -2.3803117e-002 + -2.6312978e-002 + -2.8923735e-002 + -3.1699689e-002 + -3.4645930e-002 + -3.7710819e-002 + -4.0798999e-002 + -4.3806209e-002 + -4.6615024e-002 + -4.9070488e-002 + -5.0974847e-002 + -5.2117008e-002 + -5.2338698e-002 + -5.1583537e-002 + -4.9903153e-002 + -4.7427315e-002 + -4.4307970e-002 + -4.0671838e-002 + -3.6605790e-002 + -3.2173620e-002 + -2.7438699e-002 + -2.2480634e-002 + -1.7407136e-002 + -1.2330459e-002 + -7.3246151e-003 + -2.4125250e-003 + 2.4290716e-003 + 7.2566749e-003 + 1.2121939e-002 + 1.7046901e-002 + 2.2028311e-002 + 2.7039783e-002 + 3.2028487e-002 + 3.6895401e-002 + 4.1484421e-002 + 4.5600577e-002 + 4.9046550e-002 + 5.1662736e-002 + 5.3336491e-002 + 5.4007644e-002 + 5.3667611e-002 + 5.2326259e-002 + 5.0000681e-002 + 4.6730757e-002 + 4.2602529e-002 + 3.7769502e-002 + 3.2447016e-002 + 2.6899939e-002 + 2.1435615e-002 + 1.6377420e-002 + 1.2004642e-002 + 8.4885487e-003 + 5.8458283e-003 + 3.9420220e-003 + 2.5609446e-003 + 1.4629518e-003 + 4.2944884e-004 + -6.9326775e-004 + -2.0012451e-003 + -3.5617870e-003 + -5.4329989e-003 + -7.6775938e-003 + -1.0336678e-002 + -1.3385622e-002 + -1.6736650e-002 + -2.0259425e-002 + -2.3798114e-002 + -2.7208169e-002 + -3.0387474e-002 + -3.3295821e-002 + -3.5961483e-002 + -3.8452612e-002 + -4.0836626e-002 + -4.3150657e-002 + -4.5392513e-002 + -4.7527571e-002 + -4.9495518e-002 + -5.1235198e-002 + -5.2699183e-002 + -5.3852207e-002 + -5.4680549e-002 + -5.5175591e-002 + -5.5313001e-002 + -5.5053753e-002 + -5.4360345e-002 + -5.3222987e-002 + -5.1668958e-002 + -4.9758440e-002 + -4.7572979e-002 + -4.5208149e-002 + -4.2784872e-002 + -4.0461302e-002 + -3.8411731e-002 + -3.6772366e-002 + -3.5597116e-002 + -3.4854087e-002 + -3.4454015e-002 + -3.4288994e-002 + -3.4274783e-002 + -3.4382791e-002 + -3.4654709e-002 + -3.5185257e-002 + -3.6070651e-002 + -3.7359382e-002 + -3.9023733e-002 + -4.0966782e-002 + -4.3064748e-002 + -4.5216387e-002 + -4.7378638e-002 + -4.9577027e-002 + -5.1887845e-002 + -5.4391804e-002 + -5.7124289e-002 + -6.0073699e-002 + -6.3210049e-002 + -6.6501030e-002 + -6.9928467e-002 + -7.3498850e-002 + -7.7231235e-002 + -8.1133869e-002 + -8.5190838e-002 + -8.9371094e-002 + -9.3652823e-002 + -9.8031093e-002 + -1.0250004e-001 + -1.0704698e-001 + -1.1165445e-001 + -1.1629487e-001 + -1.2092991e-001 + -1.2552650e-001 + -1.3007458e-001 + -1.3457202e-001 + -1.3899667e-001 + -1.4328886e-001 + -1.4734797e-001 + -1.5106128e-001 + -1.5434557e-001 + -1.5716496e-001 + -1.5951863e-001 + -1.6140328e-001 + -1.6278217e-001 + -1.6360632e-001 + -1.6384944e-001 + -1.6351388e-001 + -1.6263160e-001 + -1.6125777e-001 + -1.5945441e-001 + -1.5728232e-001 + -1.5479926e-001 + -1.5206732e-001 + -1.4916698e-001 + -1.4620132e-001 + -1.4328407e-001 + -1.4051466e-001 + -1.3795694e-001 + -1.3563619e-001 + -1.3354984e-001 + -1.3168538e-001 + -1.3002848e-001 + -1.2855382e-001 + -1.2721883e-001 + -1.2595867e-001 + -1.2469366e-001 + -1.2335709e-001 + -1.2189666e-001 + -1.2026538e-001 + -1.1844077e-001 + -1.1643058e-001 + -1.1426782e-001 + -1.1201877e-001 + -1.0977714e-001 + -1.0764139e-001 + -1.0569596e-001 + -1.0401605e-001 + -1.0268004e-001 + -1.0177073e-001 + -1.0136809e-001 + -1.0153039e-001 + -1.0225906e-001 + -1.0346015e-001 + -1.0493879e-001 + -1.0642073e-001 + -1.0757999e-001 + -1.0808586e-001 + -1.0765742e-001 + -1.0611391e-001 + -1.0341639e-001 + -9.9662354e-002 + -9.5052454e-002 + -8.9861569e-002 + -8.4397075e-002 + -7.8965091e-002 + -7.3830774e-002 + -6.9176072e-002 + -6.5101251e-002 + -6.1645623e-002 + -5.8818308e-002 + -5.6616110e-002 + -5.4996278e-002 + -5.3854378e-002 + -5.3042379e-002 + -5.2403598e-002 + -5.1806060e-002 + -5.1172096e-002 + -5.0485465e-002 + -4.9774165e-002 + -4.9110961e-002 + -4.8623258e-002 + -4.8470121e-002 + -4.8797680e-002 + -4.9708251e-002 + -5.1246874e-002 + -5.3388147e-002 + -5.6035587e-002 + -5.9032071e-002 + -6.2180473e-002 + -6.5273316e-002 + -6.8120386e-002 + -7.0588765e-002 + -7.2636325e-002 + -7.4316082e-002 + -7.5751587e-002 + -7.7103826e-002 + -7.8536988e-002 + -8.0175340e-002 + -8.2080209e-002 + -8.4241966e-002 + -8.6582768e-002 + -8.8982012e-002 + -9.1301786e-002 + -9.3409478e-002 + -9.5185018e-002 + -9.6518304e-002 + -9.7325708e-002 + -9.7558709e-002 + -9.7196101e-002 + -9.6237316e-002 + -9.4705828e-002 + -9.2654448e-002 + -9.0162025e-002 + -8.7340333e-002 + -8.4327948e-002 + -8.1247593e-002 + -7.8170373e-002 + -7.5117849e-002 + -7.2065239e-002 + -6.8952286e-002 + -6.5732724e-002 + -6.2410456e-002 + -5.9023763e-002 + -5.5615655e-002 + -5.2230688e-002 + -4.8901000e-002 + -4.5634403e-002 + -4.2420514e-002 + -3.9221962e-002 + -3.5972834e-002 + -3.2591668e-002 + -2.9023887e-002 + -2.5279957e-002 + -2.1442936e-002 + -1.7667041e-002 + -1.4124873e-002 + -1.0931151e-002 + -8.1224954e-003 + -5.6643658e-003 + -3.4586324e-003 + -1.3816935e-003 + 6.9894346e-004 + 2.9281203e-003 + 5.4275038e-003 + 8.2907250e-003 + 1.1585266e-002 + 1.5333685e-002 + 1.9536232e-002 + 2.4166586e-002 + 2.9170406e-002 + 3.4493318e-002 + 4.0067037e-002 + 4.5796248e-002 + 5.1576093e-002 + 5.7335041e-002 + 6.3065884e-002 + 6.8801079e-002 + 7.4561150e-002 + 8.0335162e-002 + 8.6073129e-002 + 9.1661625e-002 + 9.6954254e-002 + 1.0182198e-001 + 1.0614450e-001 + 1.0981392e-001 + 1.1277427e-001 + 1.1502065e-001 + 1.1660231e-001 + 1.1764420e-001 + 1.1831168e-001 + 1.1877839e-001 + 1.1921519e-001 + 1.1976272e-001 + 1.2052302e-001 + 1.2156404e-001 + 1.2292153e-001 + 1.2459532e-001 + 1.2654142e-001 + 1.2867718e-001 + 1.3090371e-001 + 1.3312770e-001 + 1.3526009e-001 + 1.3723247e-001 + 1.3901673e-001 + 1.4059835e-001 + 1.4196274e-001 + 1.4309401e-001 + 1.4394656e-001 + 1.4444657e-001 + 1.4454561e-001 + 1.4423989e-001 + 1.4354782e-001 + 1.4250886e-001 + 1.4118624e-001 + 1.3966137e-001 + 1.3803618e-001 + 1.3641654e-001 + 1.3489168e-001 + 1.3354005e-001 + 1.3242774e-001 + 1.3160010e-001 + 1.3106241e-001 + 1.3078422e-001 + 1.3072061e-001 + 1.3079487e-001 + 1.3090216e-001 + 1.3094318e-001 + 1.3084171e-001 + 1.3055048e-001 + 1.3004547e-001 + 1.2931632e-001 + 1.2837253e-001 + 1.2724533e-001 + 1.2599929e-001 + 1.2472811e-001 + 1.2351813e-001 + 1.2242864e-001 + 1.2146225e-001 + 1.2056745e-001 + 1.1968500e-001 + 1.1875870e-001 + 1.1773383e-001 + 1.1658267e-001 + 1.1529616e-001 + 1.1384749e-001 + 1.1219465e-001 + 1.1030287e-001 + 1.0817027e-001 + 1.0583330e-001 + 1.0334486e-001 + 1.0074698e-001 + 9.8052061e-002 + 9.5251317e-002 + 9.2342026e-002 + 8.9335895e-002 + 8.6250224e-002 + 8.3118300e-002 + 7.9992863e-002 + 7.6923366e-002 + 7.3954620e-002 + 7.1139367e-002 + 6.8518091e-002 + 6.6120681e-002 + 6.3982063e-002 + 6.2125712e-002 + 6.0569834e-002 + 5.9317445e-002 + 5.8334580e-002 + 5.7605383e-002 + 5.7155637e-002 + 5.7004453e-002 + 5.7170528e-002 + 5.7670696e-002 + 5.8477023e-002 + 5.9515659e-002 + 6.0687662e-002 + 6.1887933e-002 + 6.3031914e-002 + 6.4090207e-002 + 6.5087854e-002 + 6.6070257e-002 + 6.7091559e-002 + 6.8192955e-002 + 6.9365084e-002 + 7.0555531e-002 + 7.1692882e-002 + 7.2697694e-002 + 7.3501447e-002 + 7.4043369e-002 + 7.4260430e-002 + 7.4107565e-002 + 7.3570652e-002 + 7.2665155e-002 + 7.1437048e-002 + 6.9958846e-002 + 6.8313050e-002 + 6.6588652e-002 + 6.4884430e-002 + 6.3270588e-002 + 6.1761542e-002 + 6.0338915e-002 + 5.8974655e-002 + 5.7647145e-002 + 5.6358291e-002 + 5.5113392e-002 + 5.3893106e-002 + 5.2682887e-002 + 5.1492899e-002 + 5.0351765e-002 + 4.9343885e-002 + 4.8627683e-002 + 4.8387490e-002 + 4.8770716e-002 + 4.9827950e-002 + 5.1471780e-002 + 5.3494901e-002 + 5.5640035e-002 + 5.7665830e-002 + 5.9389291e-002 + 6.0710403e-002 + 6.1603405e-002 + 6.2071685e-002 + 6.2093554e-002 + 6.1602859e-002 + 6.0527347e-002 + 5.8840078e-002 + 5.6574488e-002 + 5.3831623e-002 + 5.0790187e-002 + 4.7681347e-002 + 4.4747544e-002 + 4.2207847e-002 + 4.0201357e-002 + 3.8759869e-002 + 3.7847937e-002 + 3.7407293e-002 + 3.7380750e-002 + 3.7716406e-002 + 3.8371546e-002 + 3.9301016e-002 + 4.0435748e-002 + 4.1702397e-002 + 4.3044368e-002 + 4.4429174e-002 + 4.5851330e-002 + 4.7330682e-002 + 4.8898979e-002 + 5.0548712e-002 + 5.2211167e-002 + 5.3780666e-002 + 5.5144904e-002 + 5.6230828e-002 + 5.7029618e-002 + 5.7589302e-002 + 5.7983913e-002 + 5.8268178e-002 + 5.8455592e-002 + 5.8525921e-002 + 5.8451275e-002 + 5.8221228e-002 + 5.7853400e-002 + 5.7396372e-002 + 5.6916413e-002 + 5.6454791e-002 + 5.5999516e-002 + 5.5514604e-002 + 5.4968925e-002 + 5.4344717e-002 + 5.3658137e-002 + 5.2938013e-002 + 5.2186546e-002 + 5.1379882e-002 + 5.0462874e-002 + 4.9354487e-002 + 4.7986589e-002 + 4.6323848e-002 + 4.4368754e-002 + 4.2144158e-002 + 3.9654274e-002 + 3.6886871e-002 + 3.3827604e-002 + 3.0466182e-002 + 2.6798968e-002 + 2.2826759e-002 + 1.8563750e-002 + 1.4044663e-002 + 9.3465866e-003 + 4.5873515e-003 + -1.0790201e-004 + -4.6145095e-003 + -8.8183653e-003 + -1.2622485e-002 + -1.5947589e-002 + -1.8754706e-002 + -2.1039311e-002 + -2.2821231e-002 + -2.4153780e-002 + -2.5106947e-002 + -2.5749809e-002 + -2.6138719e-002 + -2.6312997e-002 + -2.6301826e-002 + -2.6118393e-002 + -2.5756589e-002 + -2.5192103e-002 + -2.4386193e-002 + -2.3311878e-002 + -2.1982661e-002 + -2.0449206e-002 + -1.8769980e-002 + -1.6982896e-002 + -1.5091711e-002 + -1.3086026e-002 + -1.0969839e-002 + -8.7554822e-003 + -6.4558373e-003 + -4.0878310e-003 + -1.6676533e-003 + 7.9907633e-004 + 3.3130397e-003 + 5.8678931e-003 + 8.4564886e-003 + 1.1065953e-002 + 1.3682382e-002 + 1.6316552e-002 + 1.8981242e-002 + 2.1669652e-002 + 2.4375317e-002 + 2.7106897e-002 + 2.9885710e-002 + 3.2733277e-002 + 3.5655287e-002 + 3.8628479e-002 + 4.1612178e-002 + 4.4581845e-002 + 4.7554032e-002 + 5.0571727e-002 + 5.3673326e-002 + 5.6883914e-002 + 6.0209678e-002 + 6.3641818e-002 + 6.7163300e-002 + 7.0743902e-002 + 7.4349429e-002 + 7.7947577e-002 + 8.1482611e-002 + 8.4869532e-002 + 8.8017480e-002 + 9.0844608e-002 + 9.3309571e-002 + 9.5433030e-002 + 9.7283588e-002 + 9.8965336e-002 + 1.0058462e-001 + 1.0221274e-001 + 1.0388571e-001 + 1.0559755e-001 + 1.0730260e-001 + 1.0892780e-001 + 1.1037983e-001 + 1.1159495e-001 + 1.1258059e-001 + 1.1340618e-001 + 1.1419401e-001 + 1.1510628e-001 + 1.1629491e-001 + 1.1785747e-001 + 1.1982120e-001 + 1.2212140e-001 + 1.2459872e-001 + 1.2704260e-001 + 1.2924357e-001 + 1.3104355e-001 + 1.3237190e-001 + 1.3322144e-001 + 1.3361857e-001 + 1.3361651e-001 + 1.3327092e-001 + 1.3261902e-001 + 1.3167456e-001 + 1.3042010e-001 + 1.2881542e-001 + 1.2682604e-001 + 1.2443904e-001 + 1.2166576e-001 + 1.1851589e-001 + 1.1496525e-001 + 1.1097473e-001 + 1.0652333e-001 + 1.0164559e-001 + 9.6457678e-002 + 9.1121250e-002 + 8.5791758e-002 + 8.0579568e-002 + 7.5541845e-002 + 7.0725429e-002 + 6.6198112e-002 + 6.2049039e-002 + 5.8385896e-002 + 5.5317606e-002 + 5.2924670e-002 + 5.1237082e-002 + 5.0227133e-002 + 4.9817287e-002 + 4.9889015e-002 + 5.0302699e-002 + 5.0925977e-002 + 5.1646067e-002 + 5.2381280e-002 + 5.3094619e-002 + 5.3783966e-002 + 5.4459751e-002 + 5.5131252e-002 + 5.5780846e-002 + 5.6357484e-002 + 5.6816874e-002 + 5.7145661e-002 + 5.7356373e-002 + 5.7472956e-002 + 5.7504003e-002 + 5.7430494e-002 + 5.7210290e-002 + 5.6782480e-002 + 5.6081851e-002 + 5.5058638e-002 + 5.3692681e-002 + 5.2006643e-002 + 5.0063644e-002 + 4.7928540e-002 + 4.5639068e-002 + 4.3213757e-002 + 4.0673052e-002 + 3.8064410e-002 + 3.5466701e-002 + 3.2965944e-002 + 3.0625390e-002 + 2.8477492e-002 + 2.6539034e-002 + 2.4831326e-002 + 2.3381884e-002 + 2.2225881e-002 + 2.1413326e-002 + 2.0983752e-002 + 2.0959178e-002 + 2.1370691e-002 + 2.2250104e-002 + 2.3602245e-002 + 2.5393882e-002 + 2.7533605e-002 + 2.9864532e-002 + 3.2205283e-002 + 3.4399796e-002 + 3.6353333e-002 + 3.8047993e-002 + 3.9536556e-002 + 4.0923923e-002 + 4.2320061e-002 + 4.3800137e-002 + 4.5382118e-002 + 4.7019314e-002 + 4.8632821e-002 + 5.0136645e-002 + 5.1461232e-002 + 5.2573990e-002 + 5.3462577e-002 + 5.4125193e-002 + 5.4567935e-002 + 5.4797269e-002 + 5.4824680e-002 + 5.4664066e-002 + 5.4336099e-002 + 5.3876527e-002 + 5.3336661e-002 + 5.2791734e-002 + 5.2325845e-002 + 5.2016308e-002 + 5.1929394e-002 + 5.2099230e-002 + 5.2512380e-002 + 5.3121725e-002 + 5.3871759e-002 + 5.4702004e-002 + 5.5555947e-002 + 5.6369838e-002 + 5.7032112e-002 + 5.7411846e-002 + 5.7424841e-002 + 5.7051357e-002 + 5.6333971e-002 + 5.5361711e-002 + 5.4236309e-002 + 5.3050715e-002 + 5.1864729e-002 + 5.0690834e-002 + 4.9519321e-002 + 4.8354016e-002 + 4.7225182e-002 + 4.6183259e-002 + 4.5280004e-002 + 4.4537979e-002 + 4.3946212e-002 + 4.3478572e-002 + 4.3100624e-002 + 4.2786923e-002 + 4.2517693e-002 + 4.2258851e-002 + 4.1980142e-002 + 4.1655725e-002 + 4.1259582e-002 + 4.0802942e-002 + 4.0326953e-002 + 3.9850258e-002 + 3.9357614e-002 + 3.8793383e-002 + 3.8071759e-002 + 3.7136869e-002 + 3.5979718e-002 + 3.4625031e-002 + 3.3121644e-002 + 3.1508864e-002 + 2.9796327e-002 + 2.7957763e-002 + 2.5940046e-002 + 2.3684168e-002 + 2.1146280e-002 + 1.8319528e-002 + 1.5232224e-002 + 1.1948571e-002 + 8.5669262e-003 + 5.1956310e-003 + 1.9245042e-003 + -1.2006127e-003 + -4.1571299e-003 + -6.9050857e-003 + -9.3894643e-003 + -1.1557314e-002 + -1.3388390e-002 + -1.4920249e-002 + -1.6233548e-002 + -1.7426802e-002 + -1.8579542e-002 + -1.9734957e-002 + -2.0922563e-002 + -2.2140810e-002 + -2.3346543e-002 + -2.4514873e-002 + -2.5642551e-002 + -2.6729684e-002 + -2.7799965e-002 + -2.8885655e-002 + -3.0031793e-002 + -3.1295883e-002 + -3.2711151e-002 + -3.4269741e-002 + -3.5917676e-002 + -3.7567560e-002 + -3.9131636e-002 + -4.0550032e-002 + -4.1801707e-002 + -4.2880621e-002 + -4.3777000e-002 + -4.4481208e-002 + -4.4973682e-002 + -4.5252205e-002 + -4.5359272e-002 + -4.5370506e-002 + -4.5370671e-002 + -4.5431297e-002 + -4.5624918e-002 + -4.6003389e-002 + -4.6567130e-002 + -4.7293401e-002 + -4.8159856e-002 + -4.9168862e-002 + -5.0352695e-002 + -5.1735403e-002 + -5.3320871e-002 + -5.5094743e-002 + -5.7025377e-002 + -5.9080117e-002 + -6.1220082e-002 + -6.3387836e-002 + -6.5534918e-002 + -6.7650203e-002 + -6.9754935e-002 + -7.1907077e-002 + -7.4177074e-002 + -7.6594537e-002 + -7.9139629e-002 + -8.1745729e-002 + -8.4293000e-002 + -8.6644281e-002 + -8.8699263e-002 + -9.0404731e-002 + -9.1762117e-002 + -9.2825023e-002 + -9.3660722e-002 + -9.4308654e-002 + -9.4761357e-002 + -9.4985198e-002 + -9.4949061e-002 + -9.4652192e-002 + -9.4126306e-002 + -9.3422123e-002 + -9.2590908e-002 + -9.1661389e-002 + -9.0672168e-002 + -8.9661989e-002 + -8.8618115e-002 + -8.7502012e-002 + -8.6254788e-002 + -8.4814297e-002 + -8.3174657e-002 + -8.1372177e-002 + -7.9470848e-002 + -7.7553848e-002 + -7.5684191e-002 + -7.3887222e-002 + -7.2160218e-002 + -7.0502780e-002 + -6.8941016e-002 + -6.7529133e-002 + -6.6322382e-002 + -6.5358202e-002 + -6.4663099e-002 + -6.4230165e-002 + -6.4012284e-002 + -6.3944688e-002 + -6.3937389e-002 + -6.3905112e-002 + -6.3830849e-002 + -6.3762723e-002 + -6.3785560e-002 + -6.4004184e-002 + -6.4500603e-002 + -6.5289170e-002 + -6.6318666e-002 + -6.7514440e-002 + -6.8800247e-002 + -7.0106466e-002 + -7.1391097e-002 + -7.2631601e-002 + -7.3809138e-002 + -7.4894999e-002 + -7.5832996e-002 + -7.6549643e-002 + -7.6965194e-002 + -7.7015034e-002 + -7.6679713e-002 + -7.5981837e-002 + -7.4971272e-002 + -7.3692902e-002 + -7.2147530e-002 + -7.0309735e-002 + -6.8176388e-002 + -6.5776165e-002 + -6.3158777e-002 + -6.0395114e-002 + -5.7552469e-002 + -5.4689114e-002 + -5.1875221e-002 + -4.9175084e-002 + -4.6660502e-002 + -4.4427448e-002 + -4.2571299e-002 + -4.1177454e-002 + -4.0301514e-002 + -3.9950689e-002 + -4.0094697e-002 + -4.0673423e-002 + -4.1603670e-002 + -4.2796846e-002 + -4.4156066e-002 + -4.5577331e-002 + -4.6973912e-002 + -4.8291895e-002 + -4.9519837e-002 + -5.0679642e-002 + -5.1798848e-002 + -5.2887662e-002 + -5.3929393e-002 + -5.4895724e-002 + -5.5772043e-002 + -5.6565453e-002 + -5.7314015e-002 + -5.8085175e-002 + -5.8938047e-002 + -5.9879548e-002 + -6.0847114e-002 + -6.1741534e-002 + -6.2489023e-002 + -6.3068123e-002 + -6.3511661e-002 + -6.3902393e-002 + -6.4321004e-002 + -6.4807451e-002 + -6.5365895e-002 + -6.5974590e-002 + -6.6606253e-002 + -6.7232141e-002 + -6.7821012e-002 + -6.8357192e-002 + -6.8854386e-002 + -6.9367797e-002 + -6.9976696e-002 + -7.0738336e-002 + -7.1683493e-002 + -7.2809166e-002 + -7.4056571e-002 + -7.5321652e-002 + -7.6485077e-002 + -7.7455338e-002 + -7.8195957e-002 + -7.8738363e-002 + -7.9186037e-002 + -7.9683283e-002 + -8.0346605e-002 + -8.1218908e-002 + -8.2266945e-002 + -8.3390964e-002 + -8.4467723e-002 + -8.5394274e-002 + -8.6108260e-002 + -8.6603514e-002 + -8.6917482e-002 + -8.7085144e-002 + -8.7116402e-002 + -8.7001891e-002 + -8.6714096e-002 + -8.6231052e-002 + -8.5557782e-002 + -8.4743132e-002 + -8.3872399e-002 + -8.3018891e-002 + -8.2237708e-002 + -8.1560928e-002 + -8.0971353e-002 + -8.0426249e-002 + -7.9899431e-002 + -7.9384656e-002 + -7.8883572e-002 + -7.8404407e-002 + -7.7939485e-002 + -7.7428671e-002 + -7.6765035e-002 + -7.5836851e-002 + -7.4559564e-002 + -7.2898716e-002 + -7.0880700e-002 + -6.8577172e-002 + -6.6088345e-002 + -6.3529241e-002 + -6.1003000e-002 + -5.8584689e-002 + -5.6328286e-002 + -5.4265090e-002 + -5.2403755e-002 + -5.0759401e-002 + -4.9369933e-002 + -4.8282195e-002 + -4.7542466e-002 + -4.7189590e-002 + -4.7241728e-002 + -4.7690017e-002 + -4.8490154e-002 + -4.9554650e-002 + -5.0780310e-002 + -5.2080104e-002 + -5.3384458e-002 + -5.4647692e-002 + -5.5831651e-002 + -5.6864110e-002 + -5.7655766e-002 + -5.8127636e-002 + -5.8220315e-002 + -5.7943237e-002 + -5.7371942e-002 + -5.6596898e-002 + -5.5726680e-002 + -5.4866152e-002 + -5.4076078e-002 + -5.3389886e-002 + -5.2826814e-002 + -5.2390038e-002 + -5.2093663e-002 + -5.1981826e-002 + -5.2109579e-002 + -5.2515384e-002 + -5.3197075e-002 + -5.4106621e-002 + -5.5170455e-002 + -5.6316566e-002 + -5.7498694e-002 + -5.8672024e-002 + -5.9764721e-002 + -6.0714124e-002 + -6.1477905e-002 + -6.2035694e-002 + -6.2393365e-002 + -6.2553358e-002 + -6.2515378e-002 + -6.2286139e-002 + -6.1895009e-002 + -6.1404846e-002 + -6.0890141e-002 + -6.0408611e-002 + -5.9970963e-002 + -5.9542197e-002 + -5.9051763e-002 + -5.8391480e-002 + -5.7447247e-002 + -5.6143603e-002 + -5.4466512e-002 + -5.2469135e-002 + -5.0266064e-002 + -4.8005760e-002 + -4.5823008e-002 + -4.3811018e-002 + -4.2015843e-002 + -4.0449554e-002 + -3.9118221e-002 + -3.8016690e-002 + -3.7121616e-002 + -3.6408041e-002 + -3.5850213e-002 + -3.5430509e-002 + -3.5153336e-002 + -3.5036295e-002 + -3.5087783e-002 + -3.5287680e-002 + -3.5594558e-002 + -3.5965760e-002 + -3.6374260e-002 + -3.6824658e-002 + -3.7356299e-002 + -3.8027143e-002 + -3.8883903e-002 + -3.9933969e-002 + -4.1140978e-002 + -4.2430922e-002 + -4.3694528e-002 + -4.4822893e-002 + -4.5748309e-002 + -4.6434400e-002 + -4.6855384e-002 + -4.6996864e-002 + -4.6847302e-002 + -4.6385967e-002 + -4.5603113e-002 + -4.4518969e-002 + -4.3178580e-002 + -4.1644803e-002 + -3.9988300e-002 + -3.8271683e-002 + -3.6548900e-002 + -3.4873316e-002 + -3.3290582e-002 + -3.1856104e-002 + -3.0662941e-002 + -2.9835048e-002 + -2.9510974e-002 + -2.9805716e-002 + -3.0774823e-002 + -3.2417347e-002 + -3.4670142e-002 + -3.7399858e-002 + -4.0438255e-002 + -4.3630610e-002 + -4.6846981e-002 + -4.9985297e-002 + -5.2973320e-002 + -5.5756847e-002 + -5.8312558e-002 + -6.0648715e-002 + -6.2783426e-002 + -6.4751462e-002 + -6.6614051e-002 + -6.8456348e-002 + -7.0371997e-002 + -7.2429862e-002 + -7.4656376e-002 + -7.7040236e-002 + -7.9539676e-002 + -8.2109881e-002 + -8.4742806e-002 + -8.7455609e-002 + -9.0253639e-002 + -9.3107381e-002 + -9.5937857e-002 + -9.8639280e-002 + -1.0111607e-001 + -1.0330872e-001 + -1.0520550e-001 + -1.0683283e-001 + -1.0824835e-001 + -1.0953259e-001 + -1.1075848e-001 + -1.1195538e-001 + -1.1310070e-001 + -1.1414494e-001 + -1.1504265e-001 + -1.1576581e-001 + -1.1630192e-001 + -1.1664792e-001 + -1.1680090e-001 + -1.1674395e-001 + -1.1644068e-001 + -1.1584005e-001 + -1.1488222e-001 + -1.1351482e-001 + -1.1170484e-001 + -1.0943878e-001 + -1.0673493e-001 + -1.0366345e-001 + -1.0033425e-001 + -9.6863332e-002 + -9.3358512e-002 + -8.9906111e-002 + -8.6554845e-002 + -8.3327324e-002 + -8.0257034e-002 + -7.7407242e-002 + -7.4857301e-002 + -7.2680810e-002 + -7.0918819e-002 + -6.9562143e-002 + -6.8559588e-002 + -6.7821983e-002 + -6.7244988e-002 + -6.6758086e-002 + -6.6324248e-002 + -6.5926913e-002 + -6.5587522e-002 + -6.5359215e-002 + -6.5289350e-002 + -6.5397659e-002 + -6.5678043e-002 + -6.6120325e-002 + -6.6723207e-002 + -6.7465326e-002 + -6.8295817e-002 + -6.9146401e-002 + -6.9926759e-002 + -7.0532203e-002 + -7.0858744e-002 + -7.0815227e-002 + -7.0346389e-002 + -6.9438264e-002 + -6.8107551e-002 + -6.6400350e-002 + -6.4375286e-002 + -6.2086173e-002 + -5.9582785e-002 + -5.6903252e-002 + -5.4053383e-002 + -5.1014363e-002 + -4.7764388e-002 + -4.4283180e-002 + -4.0579784e-002 + -3.6701719e-002 + -3.2716876e-002 + -2.8708213e-002 + -2.4748262e-002 + -2.0891722e-002 + -1.7186643e-002 + -1.3659533e-002 + -1.0316399e-002 + -7.1572734e-003 + -4.1878596e-003 + -1.4041656e-003 + 1.2136305e-003 + 3.6696671e-003 + 5.9546963e-003 + 8.0372360e-003 + 9.8818623e-003 + 1.1498714e-002 + 1.2921130e-002 + 1.4175287e-002 + 1.5267008e-002 + 1.6185913e-002 + 1.6932084e-002 + 1.7530142e-002 + 1.8038999e-002 + 1.8523792e-002 + 1.9006614e-002 + 1.9455518e-002 + 1.9826674e-002 + 2.0117008e-002 + 2.0368178e-002 + 2.0648691e-002 + 2.1014238e-002 + 2.1472631e-002 + 2.1979223e-002 + 2.2444450e-002 + 2.2768795e-002 + 2.2878642e-002 + 2.2746971e-002 + 2.2390196e-002 + 2.1842699e-002 + 2.1154362e-002 + 2.0393021e-002 + 1.9616838e-002 + 1.8866229e-002 + 1.8183759e-002 + 1.7605896e-002 + 1.7140332e-002 + 1.6770773e-002 + 1.6471914e-002 + 1.6225952e-002 + 1.6037280e-002 + 1.5930454e-002 + 1.5932896e-002 + 1.6028892e-002 + 1.6147497e-002 + 1.6201428e-002 + 1.6119769e-002 + 1.5866322e-002 + 1.5429646e-002 + 1.4817770e-002 + 1.4045896e-002 + 1.3106400e-002 + 1.1977423e-002 + 1.0640661e-002 + 9.0854021e-003 + 7.3168633e-003 + 5.3592942e-003 + 3.2534387e-003 + 1.0517843e-003 + -1.1811110e-003 + -3.3677757e-003 + -5.4302214e-003 + -7.3106165e-003 + -8.9852574e-003 + -1.0461166e-002 + -1.1770509e-002 + -1.2959184e-002 + -1.4081013e-002 + -1.5190393e-002 + -1.6296211e-002 + -1.7350285e-002 + -1.8277992e-002 + -1.9000724e-002 + -1.9468922e-002 + -1.9666020e-002 + -1.9593533e-002 + -1.9269668e-002 + -1.8705647e-002 + -1.7895057e-002 + -1.6840479e-002 + -1.5561638e-002 + -1.4078666e-002 + -1.2404199e-002 + -1.0556726e-002 + -8.5664334e-003 + -6.4802569e-003 + -4.3826936e-003 + -2.3680802e-003 + -5.0311850e-004 + 1.1603975e-003 + 2.5870016e-003 + 3.7689661e-003 + 4.7249890e-003 + 5.5027155e-003 + 6.1673938e-003 + 6.7851733e-003 + 7.4102913e-003 + 8.0796980e-003 + 8.8172163e-003 + 9.6299176e-003 + 1.0515421e-002 + 1.1482574e-002 + 1.2551572e-002 + 1.3749147e-002 + 1.5112749e-002 + 1.6681803e-002 + 1.8471178e-002 + 2.0465179e-002 + 2.2615939e-002 + 2.4833039e-002 + 2.7012022e-002 + 2.9050749e-002 + 3.0871148e-002 + 3.2458783e-002 + 3.3855361e-002 + 3.5128139e-002 + 3.6330488e-002 + 3.7486788e-002 + 3.8622842e-002 + 3.9800286e-002 + 4.1104719e-002 + 4.2602440e-002 + 4.4312778e-002 + 4.6181182e-002 + 4.8076010e-002 + 4.9853113e-002 + 5.1417725e-002 + 5.2728340e-002 + 5.3794729e-002 + 5.4665684e-002 + 5.5399057e-002 + 5.6048701e-002 + 5.6656944e-002 + 5.7246230e-002 + 5.7825549e-002 + 5.8402121e-002 + 5.8974603e-002 + 5.9536921e-002 + 6.0104106e-002 + 6.0711757e-002 + 6.1399195e-002 + 6.2195873e-002 + 6.3097529e-002 + 6.4052806e-002 + 6.4982277e-002 + 6.5810476e-002 + 6.6485283e-002 + 6.6996924e-002 + 6.7381949e-002 + 6.7694127e-002 + 6.7994231e-002 + 6.8333476e-002 + 6.8730469e-002 + 6.9192945e-002 + 6.9718302e-002 + 7.0284450e-002 + 7.0858602e-002 + 7.1392426e-002 + 7.1828050e-002 + 7.2113165e-002 + 7.2179605e-002 + 7.1945476e-002 + 7.1374558e-002 + 7.0485205e-002 + 6.9336965e-002 + 6.8018940e-002 + 6.6615526e-002 + 6.5193417e-002 + 6.3791304e-002 + 6.2420991e-002 + 6.1094536e-002 + 5.9835396e-002 + 5.8646146e-002 + 5.7479431e-002 + 5.6263782e-002 + 5.4932158e-002 + 5.3428342e-002 + 5.1715392e-002 + 4.9789783e-002 + 4.7694160e-002 + 4.5496784e-002 + 4.3268297e-002 + 4.1077972e-002 + 3.8985176e-002 + 3.7040805e-002 + 3.5265108e-002 + 3.3627698e-002 + 3.2093658e-002 + 3.0657214e-002 + 2.9334487e-002 + 2.8149370e-002 + 2.7124794e-002 + 2.6276581e-002 + 2.5605021e-002 + 2.5123961e-002 + 2.4853915e-002 + 2.4783083e-002 + 2.4882530e-002 + 2.5118614e-002 + 2.5455714e-002 + 2.5847928e-002 + 2.6239825e-002 + 2.6584164e-002 + 2.6829610e-002 + 2.6943547e-002 + 2.6948566e-002 + 2.6920070e-002 + 2.6963690e-002 + 2.7169266e-002 + 2.7580740e-002 + 2.8196722e-002 + 2.8992137e-002 + 2.9936489e-002 + 3.0989375e-002 + 3.2093158e-002 + 3.3170055e-002 + 3.4129036e-002 + 3.4876336e-002 + 3.5361256e-002 + 3.5602769e-002 + 3.5641158e-002 + 3.5519024e-002 + 3.5277845e-002 + 3.4958257e-002 + 3.4616620e-002 + 3.4307439e-002 + 3.4074821e-002 + 3.3957521e-002 + 3.3982453e-002 + 3.4168970e-002 + 3.4535624e-002 + 3.5093486e-002 + 3.5844535e-002 + 3.6776261e-002 + 3.7857468e-002 + 3.9055080e-002 + 4.0341954e-002 + 4.1697020e-002 + 4.3111318e-002 + 4.4599625e-002 + 4.6195975e-002 + 4.7921803e-002 + 4.9785214e-002 + 5.1778757e-002 + 5.3842468e-002 + 5.5880073e-002 + 5.7808346e-002 + 5.9567419e-002 + 6.1113568e-002 + 6.2426415e-002 + 6.3513110e-002 + 6.4394079e-002 + 6.5102786e-002 + 6.5692686e-002 + 6.6223687e-002 + 6.6746861e-002 + 6.7305569e-002 + 6.7936067e-002 + 6.8673740e-002 + 6.9557217e-002 + 7.0610510e-002 + 7.1835115e-002 + 7.3205180e-002 + 7.4681363e-002 + 7.6242517e-002 + 7.7885080e-002 + 7.9612496e-002 + 8.1417467e-002 + 8.3256565e-002 + 8.5067773e-002 + 8.6798984e-002 + 8.8415094e-002 + 8.9893805e-002 + 9.1210512e-002 + 9.2350685e-002 + 9.3322724e-002 + 9.4145214e-002 + 9.4824345e-002 + 9.5346723e-002 + 9.5695899e-002 + 9.5844158e-002 + 9.5767928e-002 + 9.5485722e-002 + 9.5046286e-002 + 9.4505623e-002 + 9.3913376e-002 + 9.3294478e-002 + 9.2648204e-002 + 9.1954037e-002 + 9.1181886e-002 + 9.0327916e-002 + 8.9418399e-002 + 8.8495455e-002 + 8.7627338e-002 + 8.6884809e-002 + 8.6307727e-002 + 8.5904773e-002 + 8.5645390e-002 + 8.5460505e-002 + 8.5281306e-002 + 8.5064530e-002 + 8.4797868e-002 + 8.4503639e-002 + 8.4227441e-002 + 8.4011537e-002 + 8.3872080e-002 + 8.3795135e-002 + 8.3725583e-002 + 8.3565639e-002 + 8.3205819e-002 + 8.2558486e-002 + 8.1583434e-002 + 8.0301837e-002 + 7.8774062e-002 + 7.7056464e-002 + 7.5192652e-002 + 7.3230060e-002 + 7.1235886e-002 + 6.9309845e-002 + 6.7571892e-002 + 6.6120850e-002 + 6.5004671e-002 + 6.4214485e-002 + 6.3679519e-002 + 6.3300155e-002 + 6.2993226e-002 + 6.2693427e-002 + 6.2353048e-002 + 6.1949001e-002 + 6.1473642e-002 + 6.0922063e-002 + 6.0302618e-002 + 5.9645425e-002 + 5.8975253e-002 + 5.8303680e-002 + 5.7642548e-002 + 5.6998170e-002 + 5.6375230e-002 + 5.5794353e-002 + 5.5308959e-002 + 5.5000771e-002 + 5.4946061e-002 + 5.5185868e-002 + 5.5710605e-002 + 5.6450407e-002 + 5.7294749e-002 + 5.8133214e-002 + 5.8869371e-002 + 5.9434623e-002 + 5.9804729e-002 + 5.9976800e-002 + 5.9945460e-002 + 5.9706655e-002 + 5.9256943e-002 + 5.8586387e-002 + 5.7683414e-002 + 5.6550787e-002 + 5.5212062e-002 + 5.3711534e-002 + 5.2114382e-002 + 5.0482663e-002 + 4.8864051e-002 + 4.7306114e-002 + 4.5841875e-002 + 4.4469656e-002 + 4.3164798e-002 + 4.1890849e-002 + 4.0617042e-002 + 3.9339416e-002 + 3.8075517e-002 + 3.6855459e-002 + 3.5708044e-002 + 3.4652713e-002 + 3.3698908e-002 + 3.2850519e-002 + 3.2114067e-002 + 3.1492948e-002 + 3.0995814e-002 + 3.0641617e-002 + 3.0456229e-002 + 3.0472171e-002 + 3.0699954e-002 + 3.1110023e-002 + 3.1659346e-002 + 3.2316035e-002 + 3.3066060e-002 + 3.3922714e-002 + 3.4925537e-002 + 3.6111793e-002 + 3.7492450e-002 + 3.9043091e-002 + 4.0702557e-002 + 4.2392422e-002 + 4.4037689e-002 + 4.5583741e-002 + 4.7005129e-002 + 4.8293376e-002 + 4.9440245e-002 + 5.0437157e-002 + 5.1289852e-002 + 5.2030067e-002 + 5.2703828e-002 + 5.3332716e-002 + 5.3892837e-002 + 5.4326626e-002 + 5.4561180e-002 + 5.4534878e-002 + 5.4222034e-002 + 5.3629949e-002 + 5.2793614e-002 + 5.1770024e-002 + 5.0615163e-002 + 4.9371111e-002 + 4.8058838e-002 + 4.6674514e-002 + 4.5197917e-002 + 4.3609157e-002 + 4.1914120e-002 + 4.0171629e-002 + 3.8486270e-002 + 3.6950737e-002 + 3.5610710e-002 + 3.4477944e-002 + 3.3538428e-002 + 3.2753501e-002 + 3.2080105e-002 + 3.1488498e-002 + 3.0953814e-002 + 3.0447660e-002 + 2.9940982e-002 + 2.9403986e-002 + 2.8801176e-002 + 2.8093773e-002 + 2.7260892e-002 + 2.6308891e-002 + 2.5263352e-002 + 2.4152397e-002 + 2.2984108e-002 + 2.1752497e-002 + 2.0447395e-002 + 1.9069984e-002 + 1.7653438e-002 + 1.6241406e-002 + 1.4872485e-002 + 1.3575201e-002 + 1.2354271e-002 + 1.1202568e-002 + 1.0103205e-002 + 9.0281691e-003 + 7.9661644e-003 + 6.9346304e-003 + 5.9669725e-003 + 5.0970228e-003 + 4.3380453e-003 + 3.6702062e-003 + 3.0510341e-003 + 2.4294664e-003 + 1.7686035e-003 + 1.0846015e-003 + 4.4616531e-004 + -7.1986336e-005 + -4.1497095e-004 + -5.5477047e-004 + -4.9553103e-004 + -2.5513329e-004 + 1.4678589e-004 + 6.8632195e-004 + 1.3309098e-003 + 2.0292502e-003 + 2.7204274e-003 + 3.3596593e-003 + 3.9419982e-003 + 4.4940109e-003 + 5.0403175e-003 + 5.5849646e-003 + 6.1093393e-003 + 6.6039335e-003 + 7.0933879e-003 + 7.6163989e-003 + 8.2105258e-003 + 8.9001915e-003 + 9.6841937e-003 + 1.0536352e-002 + 1.1421379e-002 + 1.2334263e-002 + 1.3317589e-002 + 1.4438532e-002 + 1.5754766e-002 + 1.7279928e-002 + 1.8968823e-002 + 2.0743838e-002 + 2.2530349e-002 + 2.4277054e-002 + 2.5959651e-002 + 2.7554892e-002 + 2.9022888e-002 + 3.0319701e-002 + 3.1415562e-002 + 3.2298466e-002 + 3.2976942e-002 + 3.3480420e-002 + 3.3846216e-002 + 3.4111688e-002 + 3.4302810e-002 + 3.4431900e-002 + 3.4498160e-002 + 3.4489454e-002 + 3.4399535e-002 + 3.4224705e-002 + 3.3960799e-002 + 3.3610847e-002 + 3.3186553e-002 + 3.2716774e-002 + 3.2221552e-002 + 3.1680994e-002 + 3.1056665e-002 + 3.0308459e-002 + 2.9404839e-002 + 2.8344735e-002 + 2.7164648e-002 + 2.5923284e-002 + 2.4671681e-002 + 2.3437377e-002 + 2.2221189e-002 + 2.1008152e-002 + 1.9794103e-002 + 1.8592290e-002 + 1.7424388e-002 + 1.6315547e-002 + 1.5286229e-002 + 1.4347279e-002 + 1.3490860e-002 + 1.2692007e-002 + 1.1943939e-002 + 1.1264476e-002 + 1.0662210e-002 + 1.0129856e-002 + 9.6475005e-003 + 9.1850365e-003 + 8.7318491e-003 + 8.3100336e-003 + 7.9515863e-003 + 7.6717210e-003 + 7.4522963e-003 + 7.2391046e-003 + 6.9708701e-003 + 6.6164689e-003 + 6.1872623e-003 + 5.7424250e-003 + 5.3555808e-003 + 5.0674406e-003 + 4.8872215e-003 + 4.7969721e-003 + 4.7552312e-003 + 4.7160961e-003 + 4.6492748e-003 + 4.5505773e-003 + 4.4263773e-003 + 4.2848420e-003 + 4.1413064e-003 + 4.0082538e-003 + 3.8848662e-003 + 3.7685467e-003 + 3.6657577e-003 + 3.6000762e-003 + 3.6105610e-003 + 3.7222182e-003 + 3.9364110e-003 + 4.2353906e-003 + 4.5746779e-003 + 4.9023779e-003 + 5.1907714e-003 + 5.4407489e-003 + 5.6710953e-003 + 5.8996740e-003 + 6.1281322e-003 + 6.3476573e-003 + 6.5449600e-003 + 6.7046585e-003 + 6.8207703e-003 + 6.8958920e-003 + 6.9392121e-003 + 6.9774990e-003 + 7.0493407e-003 + 7.1838670e-003 + 7.3897902e-003 + 7.6474733e-003 + 7.9025394e-003 + 8.0927918e-003 + 8.1731368e-003 + 8.1136868e-003 + 7.9044264e-003 + 7.5546958e-003 + 7.0915992e-003 + 6.5547734e-003 + 5.9989622e-003 + 5.4995681e-003 + 5.1171584e-003 + 4.8856817e-003 + 4.8341551e-003 + 4.9817390e-003 + 5.3211540e-003 + 5.8091223e-003 + 6.3545685e-003 + 6.8338943e-003 + 7.1510336e-003 + 7.2594842e-003 + 7.1497811e-003 + 6.8396166e-003 + 6.3472990e-003 + 5.6852323e-003 + 4.8685575e-003 + 3.9231988e-003 + 2.8854996e-003 + 1.7826201e-003 + 6.3237943e-004 + -5.4425982e-004 + -1.7200982e-003 + -2.8533923e-003 + -3.8859957e-003 + -4.7669666e-003 + -5.4721660e-003 + -6.0062798e-003 + -6.4023858e-003 + -6.7052819e-003 + -6.9586507e-003 + -7.1979096e-003 + -7.4336505e-003 + -7.6542279e-003 + -7.8432104e-003 + -7.9932172e-003 + -8.1070663e-003 + -8.1881357e-003 + -8.2399031e-003 + -8.2663087e-003 + -8.2673925e-003 + -8.2561682e-003 + -8.2590109e-003 + -8.2903151e-003 + -8.3518396e-003 + -8.4276119e-003 + -8.4860312e-003 + -8.5010270e-003 + -8.4586472e-003 + -8.3758169e-003 + -8.2924670e-003 + -8.2411852e-003 + -8.2481346e-003 + -8.3224637e-003 + -8.4457144e-003 + -8.5937815e-003 + -8.7514967e-003 + -8.9020323e-003 + -9.0370428e-003 + -9.1618173e-003 + -9.2818713e-003 + -9.4067719e-003 + -9.5331879e-003 + -9.6291314e-003 + -9.6340527e-003 + -9.4730504e-003 + -9.1000586e-003 + -8.5232048e-003 + -7.8077374e-003 + -7.0544796e-003 + -6.3621616e-003 + -5.7988692e-003 + -5.3803896e-003 + -5.0814559e-003 + -4.8695118e-003 + -4.7251193e-003 + -4.6379764e-003 + -4.5871778e-003 + -4.5302270e-003 + -4.4214589e-003 + -4.2364700e-003 + -3.9709156e-003 + -3.6272642e-003 + -3.2040510e-003 + -2.6937989e-003 + -2.0860340e-003 + -1.3793809e-003 + -5.8723775e-004 + 2.6484367e-004 + 1.1299475e-003 + 1.9463333e-003 + 2.6622920e-003 + 3.2503541e-003 + 3.7068434e-003 + 4.0447929e-003 + 4.2707883e-003 + 4.3651786e-003 + 4.3032217e-003 + 4.0837441e-003 + 3.7404323e-003 + 3.3372825e-003 + 2.9397997e-003 + 2.6031389e-003 + 2.3724173e-003 + 2.2731831e-003 + 2.3136204e-003 + 2.4807181e-003 + 2.7431254e-003 + 3.0647220e-003 + 3.4110009e-003 + 3.7541836e-003 + 4.0809255e-003 + 4.3908854e-003 + 4.6892088e-003 + 4.9862753e-003 + 5.2873021e-003 + 5.5938128e-003 + 5.9030207e-003 + 6.2040009e-003 + 6.4861132e-003 + 6.7139547e-003 + 6.8266427e-003 + 6.8009274e-003 + 6.6750326e-003 + 6.5160592e-003 + 6.3978088e-003 + 6.3805702e-003 + 6.4895586e-003 + 6.7224755e-003 + 7.0757852e-003 + 7.5558557e-003 + 8.1691413e-003 + 8.9118829e-003 + 9.7602271e-003 + 1.0662443e-002 + 1.1556788e-002 + 1.2401473e-002 + 1.3167303e-002 + 1.3812960e-002 + 1.4309105e-002 + 1.4658388e-002 + 1.4876709e-002 + 1.5000818e-002 + 1.5089520e-002 + 1.5202845e-002 + 1.5403658e-002 + 1.5750541e-002 + 1.6265003e-002 + 1.6910252e-002 + 1.7590843e-002 + 1.8181743e-002 + 1.8583048e-002 + 1.8749929e-002 + 1.8700472e-002 + 1.8510744e-002 + 1.8280290e-002 + 1.8080647e-002 + 1.7927499e-002 + 1.7805852e-002 + 1.7687400e-002 + 1.7535631e-002 + 1.7338513e-002 + 1.7108287e-002 + 1.6860442e-002 + 1.6609572e-002 + 1.6359766e-002 + 1.6098106e-002 + 1.5792247e-002 + 1.5408365e-002 + 1.4936496e-002 + 1.4376112e-002 + 1.3722138e-002 + 1.2979449e-002 + 1.2174126e-002 + 1.1346295e-002 + 1.0529556e-002 + 9.7450419e-003 + 9.0061345e-003 + 8.3182082e-003 + 7.6766843e-003 + 7.0591173e-003 + 6.4297419e-003 + 5.7526805e-003 + 5.0041104e-003 + 4.1917543e-003 + 3.3486367e-003 + 2.5119037e-003 + 1.7081783e-003 + 9.5156584e-004 + 2.6227258e-004 + -3.5062204e-004 + -9.1172274e-004 + -1.4650549e-003 + -2.0652348e-003 + -2.7551470e-003 + -3.5483120e-003 + -4.4452893e-003 + -5.4288278e-003 + -6.4609093e-003 + -7.5030462e-003 + -8.5213555e-003 + -9.4957499e-003 + -1.0425714e-002 + -1.1324603e-002 + -1.2214208e-002 + -1.3110396e-002 + -1.4016514e-002 + -1.4932650e-002 + -1.5851603e-002 + -1.6756319e-002 + -1.7649946e-002 + -1.8564267e-002 + -1.9538413e-002 + -2.0597058e-002 + -2.1716894e-002 + -2.2817322e-002 + -2.3791891e-002 + -2.4548981e-002 + -2.5042365e-002 + -2.5281995e-002 + -2.5324549e-002 + -2.5256283e-002 + -2.5169815e-002 + -2.5126094e-002 + -2.5126433e-002 + -2.5123132e-002 + -2.5056182e-002 + -2.4890306e-002 + -2.4631174e-002 + -2.4321440e-002 + -2.4029214e-002 + -2.3828324e-002 + -2.3758640e-002 + -2.3807396e-002 + -2.3936459e-002 + -2.4102423e-002 + -2.4278916e-002 + -2.4464244e-002 + -2.4669294e-002 + -2.4910246e-002 + -2.5189025e-002 + -2.5494349e-002 + -2.5808868e-002 + -2.6117237e-002 + -2.6422005e-002 + -2.6723980e-002 + -2.7004388e-002 + -2.7248636e-002 + -2.7453518e-002 + -2.7620635e-002 + -2.7777933e-002 + -2.7979818e-002 + -2.8280337e-002 + -2.8717470e-002 + -2.9292799e-002 + -2.9969891e-002 + -3.0699620e-002 + -3.1440515e-002 + -3.2183403e-002 + -3.2951414e-002 + -3.3771983e-002 + -3.4668433e-002 + -3.5671513e-002 + -3.6806143e-002 + -3.8061456e-002 + -3.9392800e-002 + -4.0714346e-002 + -4.1901296e-002 + -4.2838911e-002 + -4.3464607e-002 + -4.3788554e-002 + -4.3877491e-002 + -4.3818376e-002 + -4.3679385e-002 + -4.3474916e-002 + -4.3181374e-002 + -4.2769860e-002 + -4.2219883e-002 + -4.1536076e-002 + -4.0752584e-002 + -3.9913202e-002 + -3.9061650e-002 + -3.8238216e-002 + -3.7454569e-002 + -3.6702112e-002 + -3.5983535e-002 + -3.5299470e-002 + -3.4641578e-002 + -3.3993188e-002 + -3.3331720e-002 + -3.2656308e-002 + -3.1974945e-002 + -3.1283067e-002 + -3.0580773e-002 + -2.9870188e-002 + -2.9137139e-002 + -2.8357090e-002 + -2.7499837e-002 + -2.6530103e-002 + -2.5442398e-002 + -2.4281757e-002 + -2.3126097e-002 + -2.2059998e-002 + -2.1141259e-002 + -2.0389943e-002 + -1.9794216e-002 + -1.9327806e-002 + -1.8966150e-002 + -1.8683306e-002 + -1.8465353e-002 + -1.8312176e-002 + -1.8218402e-002 + -1.8174379e-002 + -1.8165278e-002 + -1.8172006e-002 + -1.8185609e-002 + -1.8202675e-002 + -1.8215773e-002 + -1.8226279e-002 + -1.8257186e-002 + -1.8339803e-002 + -1.8495179e-002 + -1.8733620e-002 + -1.9053151e-002 + -1.9435705e-002 + -1.9851564e-002 + -2.0259577e-002 + -2.0626220e-002 + -2.0947761e-002 + -2.1237895e-002 + -2.1518657e-002 + -2.1819311e-002 + -2.2166455e-002 + -2.2570001e-002 + -2.3019703e-002 + -2.3495932e-002 + -2.3967532e-002 + -2.4392735e-002 + -2.4739411e-002 + -2.4991789e-002 + -2.5151533e-002 + -2.5249090e-002 + -2.5333341e-002 + -2.5445200e-002 + -2.5596505e-002 + -2.5762846e-002 + -2.5905748e-002 + -2.5993113e-002 + -2.6008303e-002 + -2.5957181e-002 + -2.5862710e-002 + -2.5769577e-002 + -2.5731836e-002 + -2.5776586e-002 + -2.5893335e-002 + -2.6046967e-002 + -2.6196577e-002 + -2.6310886e-002 + -2.6376276e-002 + -2.6400261e-002 + -2.6402194e-002 + -2.6388666e-002 + -2.6345879e-002 + -2.6247040e-002 + -2.6056296e-002 + -2.5744188e-002 + -2.5301439e-002 + -2.4742849e-002 + -2.4101208e-002 + -2.3410846e-002 + -2.2700865e-002 + -2.1988421e-002 + -2.1265450e-002 + -2.0506874e-002 + -1.9690413e-002 + -1.8795750e-002 + -1.7805276e-002 + -1.6716517e-002 + -1.5532509e-002 + -1.4257218e-002 + -1.2921965e-002 + -1.1593730e-002 + -1.0346642e-002 + -9.2237381e-003 + -8.2299128e-003 + -7.3531995e-003 + -6.5844080e-003 + -5.9326177e-003 + -5.4217127e-003 + -5.0743318e-003 + -4.8914017e-003 + -4.8474922e-003 + -4.9107313e-003 + -5.0475599e-003 + -5.2194692e-003 + -5.3898308e-003 + -5.5333054e-003 + -5.6405640e-003 + -5.7230995e-003 + -5.8158082e-003 + -5.9566255e-003 + -6.1573143e-003 + -6.3853340e-003 + -6.5801020e-003 + -6.6885200e-003 + -6.6796384e-003 + -6.5453304e-003 + -6.2914661e-003 + -5.9333654e-003 + -5.4928128e-003 + -4.9896117e-003 + -4.4460834e-003 + -3.8858566e-003 + -3.3290933e-003 + -2.8138611e-003 + -2.3953203e-003 + -2.1115807e-003 + -1.9736699e-003 + -1.9694450e-003 + -2.0717003e-003 + -2.2673000e-003 + -2.5671189e-003 + -2.9775595e-003 + -3.4782289e-003 + -4.0174419e-003 + -4.5204305e-003 + -4.9018135e-003 + -5.0814722e-003 + -5.0122380e-003 + -4.6853076e-003 + -4.1310794e-003 + -3.4330909e-003 + -2.6977456e-003 + -2.0030862e-003 + -1.3685063e-003 + -7.5498424e-004 + -1.0820816e-004 + 5.9453432e-004 + 1.3313317e-003 + 2.0596430e-003 + 2.7334008e-003 + 3.3020694e-003 + 3.7200018e-003 + 3.9634290e-003 + 4.0496061e-003 + 4.0313751e-003 + 3.9742712e-003 + 3.9304691e-003 + 3.9130086e-003 + 3.9042642e-003 + 3.8710728e-003 + 3.7750458e-003 + 3.6087478e-003 + 3.4036186e-003 + 3.1911284e-003 + 2.9859109e-003 + 2.7875487e-003 + 2.5778752e-003 + 2.3398204e-003 + 2.0637409e-003 + 1.7254034e-003 + 1.2904447e-003 + 7.3103747e-004 + 3.2538894e-005 + -7.9136209e-004 + -1.6960740e-003 + -2.6371752e-003 + -3.5865942e-003 + -4.5150029e-003 + -5.3895110e-003 + -6.1807275e-003 + -6.8768474e-003 + -7.4897097e-003 + -8.0293273e-003 + -8.5005853e-003 + -8.9126888e-003 + -9.2702042e-003 + -9.5804222e-003 + -9.8654791e-003 + -1.0148378e-002 + -1.0436484e-002 + -1.0720459e-002 + -1.0982618e-002 + -1.1209876e-002 + -1.1405228e-002 + -1.1587224e-002 + -1.1768176e-002 + -1.1947405e-002 + -1.2127435e-002 + -1.2306706e-002 + -1.2471777e-002 + -1.2607956e-002 + -1.2698747e-002 + -1.2729605e-002 + -1.2706008e-002 + -1.2652379e-002 + -1.2592115e-002 + -1.2531345e-002 + -1.2456566e-002 + -1.2355616e-002 + -1.2233571e-002 + -1.2095833e-002 + -1.1940000e-002 + -1.1776230e-002 + -1.1630128e-002 + -1.1529730e-002 + -1.1497123e-002 + -1.1542870e-002 + -1.1670186e-002 + -1.1865064e-002 + -1.2086960e-002 + -1.2290680e-002 + -1.2442584e-002 + -1.2527659e-002 + -1.2556004e-002 + -1.2561198e-002 + -1.2598956e-002 + -1.2732160e-002 + -1.2998352e-002 + -1.3396930e-002 + -1.3918025e-002 + -1.4562011e-002 + -1.5326796e-002 + -1.6194612e-002 + -1.7123177e-002 + -1.8041476e-002 + -1.8863758e-002 + -1.9523994e-002 + -2.0006978e-002 + -2.0349438e-002 + -2.0615532e-002 + -2.0871517e-002 + -2.1162569e-002 + -2.1496771e-002 + -2.1845090e-002 + -2.2161290e-002 + -2.2411039e-002 + -2.2582476e-002 + -2.2688256e-002 + -2.2764822e-002 + -2.2858056e-002 + -2.3001644e-002 + -2.3197635e-002 + -2.3428180e-002 + -2.3684375e-002 + -2.3965460e-002 + -2.4264251e-002 + -2.4562803e-002 + -2.4843003e-002 + -2.5106420e-002 + -2.5384299e-002 + -2.5723122e-002 + -2.6156736e-002 + -2.6693823e-002 + -2.7315143e-002 + -2.7976482e-002 + -2.8625647e-002 + -2.9218927e-002 + -2.9731264e-002 + -3.0157303e-002 + -3.0498899e-002 + -3.0765719e-002 + -3.0984561e-002 + -3.1177366e-002 + -3.1339206e-002 + -3.1438559e-002 + -3.1418632e-002 + -3.1219468e-002 + -3.0815318e-002 + -3.0235201e-002 + -2.9551844e-002 + -2.8847018e-002 + -2.8174412e-002 + -2.7544067e-002 + -2.6934979e-002 + -2.6312286e-002 + -2.5657335e-002 + -2.4986536e-002 + -2.4327125e-002 + -2.3691492e-002 + -2.3073193e-002 + -2.2457158e-002 + -2.1838766e-002 + -2.1232950e-002 + -2.0662259e-002 + -2.0139682e-002 + -1.9667358e-002 + -1.9252905e-002 + -1.8917843e-002 + -1.8690047e-002 + -1.8587777e-002 + -1.8603192e-002 + -1.8704015e-002 + -1.8850872e-002 + -1.9010896e-002 + -1.9158498e-002 + -1.9281359e-002 + -1.9387797e-002 + -1.9495359e-002 + -1.9626437e-002 + -1.9806226e-002 + -2.0048449e-002 + -2.0367252e-002 + -2.0800037e-002 + -2.1393906e-002 + -2.2175206e-002 + -2.3141480e-002 + -2.4268082e-002 + -2.5512079e-002 + -2.6828536e-002 + -2.8185694e-002 + -2.9563135e-002 + -3.0949401e-002 + -3.2339482e-002 + -3.3731987e-002 + -3.5123302e-002 + -3.6507729e-002 + -3.7888121e-002 + -3.9280007e-002 + -4.0715454e-002 + -4.2238267e-002 + -4.3884811e-002 + -4.5656257e-002 + -4.7492169e-002 + -4.9286120e-002 + -5.0934968e-002 + -5.2378215e-002 + -5.3618706e-002 + -5.4713849e-002 + -5.5741087e-002 + -5.6768968e-002 + -5.7832762e-002 + -5.8918939e-002 + -5.9976790e-002 + -6.0940910e-002 + -6.1751316e-002 + -6.2371081e-002 + -6.2797410e-002 + -6.3063408e-002 + -6.3227241e-002 + -6.3350902e-002 + -6.3481484e-002 + -6.3642101e-002 + -6.3826136e-002 + -6.3997665e-002 + -6.4111830e-002 + -6.4147163e-002 + -6.4122812e-002 + -6.4090263e-002 + -6.4113183e-002 + -6.4256515e-002 + -6.4567150e-002 + -6.5037981e-002 + -6.5614733e-002 + -6.6232346e-002 + -6.6832767e-002 + -6.7376136e-002 + -6.7852091e-002 + -6.8282097e-002 + -6.8699230e-002 + -6.9129528e-002 + -6.9587737e-002 + -7.0086379e-002 + -7.0647167e-002 + -7.1289077e-002 + -7.2025220e-002 + -7.2863949e-002 + -7.3799514e-002 + -7.4817347e-002 + -7.5897140e-002 + -7.7002686e-002 + -7.8079230e-002 + -7.9064428e-002 + -7.9907503e-002 + -8.0598231e-002 + -8.1176042e-002 + -8.1709251e-002 + -8.2273254e-002 + -8.2924669e-002 + -8.3684551e-002 + -8.4536222e-002 + -8.5422741e-002 + -8.6266529e-002 + -8.7003794e-002 + -8.7598193e-002 + -8.8039092e-002 + -8.8320727e-002 + -8.8418704e-002 + -8.8304890e-002 + -8.7975440e-002 + -8.7462632e-002 + -8.6827527e-002 + -8.6131993e-002 + -8.5418078e-002 + -8.4709744e-002 + -8.4021294e-002 + -8.3358875e-002 + -8.2712002e-002 + -8.2056565e-002 + -8.1364760e-002 + -8.0603763e-002 + -7.9739047e-002 + -7.8748885e-002 + -7.7636342e-002 + -7.6421026e-002 + -7.5123851e-002 + -7.3775879e-002 + -7.2432589e-002 + -7.1155965e-002 + -6.9986038e-002 + -6.8934342e-002 + -6.7988931e-002 + -6.7125464e-002 + -6.6317568e-002 + -6.5544684e-002 + -6.4805513e-002 + -6.4114701e-002 + -6.3489437e-002 + -6.2947961e-002 + -6.2507285e-002 + -6.2182786e-002 + -6.1987779e-002 + -6.1915779e-002 + -6.1918733e-002 + -6.1917898e-002 + -6.1839646e-002 + -6.1631705e-002 + -6.1265837e-002 + -6.0745942e-002 + -6.0103621e-002 + -5.9383451e-002 + -5.8631806e-002 + -5.7875202e-002 + -5.7113306e-002 + -5.6335453e-002 + -5.5534856e-002 + -5.4720618e-002 + -5.3909653e-002 + -5.3114849e-002 + -5.2344112e-002 + -5.1595134e-002 + -5.0851860e-002 + -5.0083181e-002 + -4.9243777e-002 + -4.8283896e-002 + -4.7161538e-002 + -4.5862052e-002 + -4.4417561e-002 + -4.2894151e-002 + -4.1370653e-002 + -3.9928685e-002 + -3.8638017e-002 + -3.7537736e-002 + -3.6622054e-002 + -3.5847070e-002 + -3.5150914e-002 + -3.4478290e-002 + -3.3796788e-002 + -3.3089844e-002 + -3.2357685e-002 + -3.1614416e-002 + -3.0871933e-002 + -3.0136676e-002 + -2.9411886e-002 + -2.8697626e-002 + -2.7990599e-002 + -2.7285712e-002 + -2.6576422e-002 + -2.5860283e-002 + -2.5135615e-002 + -2.4386642e-002 + -2.3579423e-002 + -2.2678780e-002 + -2.1667603e-002 + -2.0536972e-002 + -1.9278250e-002 + -1.7897681e-002 + -1.6427917e-002 + -1.4928264e-002 + -1.3462864e-002 + -1.2066931e-002 + -1.0740195e-002 + -9.4669202e-003 + -8.2291185e-003 + -7.0113019e-003 + -5.8052478e-003 + -4.6091829e-003 + -3.4217214e-003 + -2.2346322e-003 + -1.0278912e-003 + 2.3119460e-004 + 1.5678607e-003 + 2.9823691e-003 + 4.4525922e-003 + 5.9322008e-003 + 7.3728101e-003 + 8.7629365e-003 + 1.0127100e-002 + 1.1488656e-002 + 1.2839732e-002 + 1.4138023e-002 + 1.5326139e-002 + 1.6361597e-002 + 1.7239582e-002 + 1.7988510e-002 + 1.8647922e-002 + 1.9255049e-002 + 1.9846420e-002 + 2.0458069e-002 + 2.1108289e-002 + 2.1802075e-002 + 2.2549237e-002 + 2.3359305e-002 + 2.4232957e-002 + 2.5153492e-002 + 2.6091072e-002 + 2.7010809e-002 + 2.7869044e-002 + 2.8627756e-002 + 2.9267303e-002 + 2.9771527e-002 + 3.0120827e-002 + 3.0307118e-002 + 3.0362033e-002 + 3.0367600e-002 + 3.0418017e-002 + 3.0577718e-002 + 3.0860821e-002 + 3.1234274e-002 + 3.1641741e-002 + 3.2015592e-002 + 3.2301484e-002 + 3.2483555e-002 + 3.2579397e-002 + 3.2632646e-002 + 3.2697492e-002 + 3.2822637e-002 + 3.3040534e-002 + 3.3349287e-002 + 3.3707424e-002 + 3.4048103e-002 + 3.4314655e-002 + 3.4484066e-002 + 3.4554290e-002 + 3.4549245e-002 + 3.4540265e-002 + 3.4624286e-002 + 3.4879419e-002 + 3.5334852e-002 + 3.5943188e-002 + 3.6589633e-002 + 3.7148251e-002 + 3.7537043e-002 + 3.7745741e-002 + 3.7822023e-002 + 3.7825279e-002 + 3.7791530e-002 + 3.7728548e-002 + 3.7633052e-002 + 3.7520935e-002 + 3.7409132e-002 + 3.7296224e-002 + 3.7186600e-002 + 3.7075733e-002 + 3.6949631e-002 + 3.6807388e-002 + 3.6654004e-002 + 3.6495809e-002 + 3.6336371e-002 + 3.6176007e-002 + 3.6016214e-002 + 3.5858188e-002 + 3.5690309e-002 + 3.5479902e-002 + 3.5196190e-002 + 3.4830339e-002 + 3.4392577e-002 + 3.3902100e-002 + 3.3387099e-002 + 3.2886160e-002 + 3.2420390e-002 + 3.1988494e-002 + 3.1598934e-002 + 3.1276883e-002 + 3.1061510e-002 + 3.1004795e-002 + 3.1137391e-002 + 3.1448129e-002 + 3.1898182e-002 + 3.2428221e-002 + 3.2971324e-002 + 3.3463640e-002 + 3.3860856e-002 + 3.4159281e-002 + 3.4378843e-002 + 3.4539162e-002 + 3.4658142e-002 + 3.4751860e-002 + 3.4819565e-002 + 3.4837993e-002 + 3.4786405e-002 + 3.4661970e-002 + 3.4480572e-002 + 3.4269223e-002 + 3.4031124e-002 + 3.3753877e-002 + 3.3449571e-002 + 3.3147353e-002 + 3.2888184e-002 + 3.2711853e-002 + 3.2623476e-002 + 3.2592550e-002 + 3.2569987e-002 + 3.2497536e-002 + 3.2315024e-002 + 3.1995371e-002 + 3.1560569e-002 + 3.1060858e-002 + 3.0561513e-002 + 3.0117234e-002 + 2.9735961e-002 + 2.9358226e-002 + 2.8897062e-002 + 2.8300208e-002 + 2.7573362e-002 + 2.6792048e-002 + 2.6071081e-002 + 2.5516812e-002 + 2.5210063e-002 + 2.5175531e-002 + 2.5366695e-002 + 2.5693218e-002 + 2.6044058e-002 + 2.6313589e-002 + 2.6442282e-002 + 2.6440670e-002 + 2.6374800e-002 + 2.6334905e-002 + 2.6414651e-002 + 2.6676991e-002 + 2.7131382e-002 + 2.7747550e-002 + 2.8473472e-002 + 2.9252824e-002 + 3.0055774e-002 + 3.0903006e-002 + 3.1841270e-002 + 3.2884619e-002 + 3.3982286e-002 + 3.5045708e-002 + 3.5989120e-002 + 3.6753161e-002 + 3.7328068e-002 + 3.7759749e-002 + 3.8131675e-002 + 3.8530319e-002 + 3.9003253e-002 + 3.9550364e-002 + 4.0137018e-002 + 4.0703912e-002 + 4.1197316e-002 + 4.1589468e-002 + 4.1884549e-002 + 4.2124835e-002 + 4.2370248e-002 + 4.2669658e-002 + 4.3044677e-002 + 4.3480387e-002 + 4.3930759e-002 + 4.4348082e-002 + 4.4702550e-002 + 4.4987486e-002 + 4.5235579e-002 + 4.5505878e-002 + 4.5839034e-002 + 4.6225747e-002 + 4.6601959e-002 + 4.6883093e-002 + 4.7016922e-002 + 4.7011949e-002 + 4.6931898e-002 + 4.6861104e-002 + 4.6858523e-002 + 4.6936109e-002 + 4.7076810e-002 + 4.7264506e-002 + 4.7504270e-002 + 4.7829397e-002 + 4.8268081e-002 + 4.8811499e-002 + 4.9428176e-002 + 5.0079329e-002 + 5.0725859e-002 + 5.1330114e-002 + 5.1859823e-002 + 5.2298626e-002 + 5.2641827e-002 + 5.2892601e-002 + 5.3070082e-002 + 5.3216999e-002 + 5.3397024e-002 + 5.3661620e-002 + 5.4014531e-002 + 5.4425189e-002 + 5.4856600e-002 + 5.5285886e-002 + 5.5715139e-002 + 5.6155906e-002 + 5.6618291e-002 + 5.7110713e-002 + 5.7639489e-002 + 5.8205907e-002 + 5.8801306e-002 + 5.9414253e-002 + 6.0034301e-002 + 6.0644614e-002 + 6.1219652e-002 + 6.1730256e-002 + 6.2145051e-002 + 6.2414627e-002 + 6.2468879e-002 + 6.2258554e-002 + 6.1796251e-002 + 6.1168580e-002 + 6.0518309e-002 + 5.9984944e-002 + 5.9640385e-002 + 5.9471438e-002 + 5.9408990e-002 + 5.9370355e-002 + 5.9289720e-002 + 5.9136193e-002 + 5.8917119e-002 + 5.8654998e-002 + 5.8358878e-002 + 5.8005231e-002 + 5.7548038e-002 + 5.6957728e-002 + 5.6243936e-002 + 5.5462278e-002 + 5.4698030e-002 + 5.4033015e-002 + 5.3528506e-002 + 5.3209608e-002 + 5.3072832e-002 + 5.3112130e-002 + 5.3317057e-002 + 5.3674800e-002 + 5.4182593e-002 + 5.4839372e-002 + 5.5627574e-002 + 5.6511055e-002 + 5.7450663e-002 + 5.8411372e-002 + 5.9351881e-002 + 6.0219116e-002 + 6.0959366e-002 + 6.1541885e-002 + 6.1973360e-002 + 6.2283671e-002 + 6.2512852e-002 + 6.2697079e-002 + 6.2851388e-002 + 6.2980272e-002 + 6.3084678e-002 + 6.3158942e-002 + 6.3200239e-002 + 6.3221159e-002 + 6.3267802e-002 + 6.3406512e-002 + 6.3674055e-002 + 6.4049359e-002 + 6.4460882e-002 + 6.4824589e-002 + 6.5079202e-002 + 6.5199672e-002 + 6.5208178e-002 + 6.5160050e-002 + 6.5105977e-002 + 6.5068562e-002 + 6.5033045e-002 + 6.4957967e-002 + 6.4808352e-002 + 6.4579947e-002 + 6.4301635e-002 + 6.4010676e-002 + 6.3713696e-002 + 6.3383737e-002 + 6.2981864e-002 + 6.2476165e-002 + 6.1861232e-002 + 6.1144960e-002 + 6.0337618e-002 + 5.9462088e-002 + 5.8540443e-002 + 5.7590883e-002 + 5.6639934e-002 + 5.5726156e-002 + 5.4897192e-002 + 5.4177613e-002 + 5.3551237e-002 + 5.2996786e-002 + 5.2517092e-002 + 5.2135579e-002 + 5.1868488e-002 + 5.1703813e-002 + 5.1613108e-002 + 5.1566532e-002 + 5.1539005e-002 + 5.1515884e-002 + 5.1495412e-002 + 5.1473397e-002 + 5.1435548e-002 + 5.1367425e-002 + 5.1250609e-002 + 5.1061815e-002 + 5.0791399e-002 + 5.0457006e-002 + 5.0088501e-002 + 4.9706357e-002 + 4.9302591e-002 + 4.8825598e-002 + 4.8209948e-002 + 4.7426486e-002 + 4.6503693e-002 + 4.5517691e-002 + 4.4567329e-002 + 4.3743543e-002 + 4.3096340e-002 + 4.2634369e-002 + 4.2337343e-002 + 4.2161481e-002 + 4.2065554e-002 + 4.2024107e-002 + 4.2025210e-002 + 4.2067897e-002 + 4.2145329e-002 + 4.2235516e-002 + 4.2299446e-002 + 4.2289218e-002 + 4.2176720e-002 + 4.1980608e-002 + 4.1761600e-002 + 4.1571153e-002 + 4.1410802e-002 + 4.1242350e-002 + 4.1022282e-002 + 4.0734677e-002 + 4.0395054e-002 + 4.0029170e-002 + 3.9656147e-002 + 3.9284575e-002 + 3.8908475e-002 + 3.8504344e-002 + 3.8052260e-002 + 3.7553248e-002 + 3.7013765e-002 + 3.6447876e-002 + 3.5889668e-002 + 3.5372116e-002 + 3.4918732e-002 + 3.4551304e-002 + 3.4280344e-002 + 3.4092409e-002 + 3.3944608e-002 + 3.3783036e-002 + 3.3568091e-002 + 3.3275267e-002 + 3.2893932e-002 + 3.2436513e-002 + 3.1933150e-002 + 3.1419776e-002 + 3.0932240e-002 + 3.0484704e-002 + 3.0064067e-002 + 2.9653201e-002 + 2.9235426e-002 + 2.8792052e-002 + 2.8320845e-002 + 2.7847102e-002 + 2.7416234e-002 + 2.7080152e-002 + 2.6871866e-002 + 2.6789169e-002 + 2.6801815e-002 + 2.6872556e-002 + 2.6975557e-002 + 2.7088902e-002 + 2.7184524e-002 + 2.7229478e-002 + 2.7182590e-002 + 2.6999553e-002 + 2.6652451e-002 + 2.6152722e-002 + 2.5551428e-002 + 2.4916576e-002 + 2.4310382e-002 + 2.3762222e-002 + 2.3263360e-002 + 2.2787707e-002 + 2.2302556e-002 + 2.1776866e-002 + 2.1198203e-002 + 2.0580374e-002 + 1.9949904e-002 + 1.9332952e-002 + 1.8750958e-002 + 1.8221250e-002 + 1.7780043e-002 + 1.7482757e-002 + 1.7356029e-002 + 1.7380550e-002 + 1.7500346e-002 + 1.7632939e-002 + 1.7724334e-002 + 1.7789256e-002 + 1.7886750e-002 + 1.8067053e-002 + 1.8323639e-002 + 1.8590267e-002 + 1.8771327e-002 + 1.8791411e-002 + 1.8636781e-002 + 1.8351395e-002 + 1.8016612e-002 + 1.7706065e-002 + 1.7451396e-002 + 1.7255628e-002 + 1.7100062e-002 + 1.6957810e-002 + 1.6810714e-002 + 1.6639799e-002 + 1.6424265e-002 + 1.6151622e-002 + 1.5824457e-002 + 1.5457897e-002 + 1.5061354e-002 + 1.4634943e-002 + 1.4162214e-002 + 1.3611235e-002 + 1.2969181e-002 + 1.2258937e-002 + 1.1536736e-002 + 1.0875736e-002 + 1.0345682e-002 + 9.9936118e-003 + 9.8149744e-003 + 9.7552144e-003 + 9.7419903e-003 + 9.7082526e-003 + 9.6022850e-003 + 9.3908512e-003 + 9.0673964e-003 + 8.6581493e-003 + 8.2022619e-003 + 7.7389120e-003 + 7.3095030e-003 + 6.9412230e-003 + 6.6310662e-003 + 6.3575740e-003 + 6.0900873e-003 + 5.7928985e-003 + 5.4501856e-003 + 5.0669443e-003 + 4.6509404e-003 + 4.2116443e-003 + 3.7535227e-003 + 3.2732618e-003 + 2.7761579e-003 + 2.2840970e-003 + 1.8167888e-003 + 1.3768228e-003 + 9.5266775e-004 + 5.1059851e-004 + -9.0334379e-007 + -6.0929392e-004 + -1.3026577e-003 + -2.0567265e-003 + -2.8483255e-003 + -3.6573100e-003 + -4.4727147e-003 + -5.2831103e-003 + -6.0764148e-003 + -6.8575418e-003 + -7.6391586e-003 + -8.4353943e-003 + -9.2739126e-003 + -1.0188661e-002 + -1.1194628e-002 + -1.2263056e-002 + -1.3322308e-002 + -1.4297104e-002 + -1.5141942e-002 + -1.5841908e-002 + -1.6420473e-002 + -1.6932986e-002 + -1.7433695e-002 + -1.7951404e-002 + -1.8477644e-002 + -1.8983399e-002 + -1.9434760e-002 + -1.9801545e-002 + -2.0079028e-002 + -2.0283785e-002 + -2.0443482e-002 + -2.0593247e-002 + -2.0762263e-002 + -2.0975427e-002 + -2.1250546e-002 + -2.1578176e-002 + -2.1928068e-002 + -2.2285618e-002 + -2.2662402e-002 + -2.3072198e-002 + -2.3521645e-002 + -2.4010223e-002 + -2.4518158e-002 + -2.5017418e-002 + -2.5495501e-002 + -2.5956946e-002 + -2.6418118e-002 + -2.6899396e-002 + -2.7421824e-002 + -2.7998478e-002 + -2.8622746e-002 + -2.9275499e-002 + -2.9919531e-002 + -3.0503332e-002 + -3.0991047e-002 + -3.1369120e-002 + -3.1634948e-002 + -3.1800623e-002 + -3.1901295e-002 + -3.1986423e-002 + -3.2104194e-002 + -3.2292672e-002 + -3.2564093e-002 + -3.2895932e-002 + -3.3261733e-002 + -3.3649851e-002 + -3.4061181e-002 + -3.4511894e-002 + -3.5022634e-002 + -3.5605543e-002 + -3.6245424e-002 + -3.6908742e-002 + -3.7562496e-002 + -3.8160981e-002 + -3.8660022e-002 + -3.9050851e-002 + -3.9365969e-002 + -3.9659903e-002 + -3.9979600e-002 + -4.0349247e-002 + -4.0769038e-002 + -4.1226338e-002 + -4.1716751e-002 + -4.2249143e-002 + -4.2843191e-002 + -4.3508351e-002 + -4.4228622e-002 + -4.4982174e-002 + -4.5755350e-002 + -4.6537977e-002 + -4.7320838e-002 + -4.8111409e-002 + -4.8921792e-002 + -4.9751821e-002 + -5.0598065e-002 + -5.1438095e-002 + -5.2237429e-002 + -5.2984479e-002 + -5.3689411e-002 + -5.4369880e-002 + -5.5028290e-002 + -5.5646656e-002 + -5.6221719e-002 + -5.6769036e-002 + -5.7311347e-002 + -5.7879524e-002 + -5.8495926e-002 + -5.9160383e-002 + -5.9856423e-002 + -6.0570962e-002 + -6.1301953e-002 + -6.2053383e-002 + -6.2833667e-002 + -6.3636580e-002 + -6.4439766e-002 + -6.5227035e-002 + -6.5979325e-002 + -6.6676025e-002 + -6.7320701e-002 + -6.7940341e-002 + -6.8570155e-002 + -6.9238786e-002 + -6.9952621e-002 + -7.0706049e-002 + -7.1495130e-002 + -7.2309163e-002 + -7.3145091e-002 + -7.4019924e-002 + -7.4951483e-002 + -7.5945203e-002 + -7.6986915e-002 + -7.8048061e-002 + -7.9099324e-002 + -8.0118165e-002 + -8.1100362e-002 + -8.2058869e-002 + -8.3012290e-002 + -8.3974062e-002 + -8.4952381e-002 + -8.5958825e-002 + -8.6994647e-002 + -8.8041890e-002 + -8.9074943e-002 + -9.0057923e-002 + -9.0948402e-002 + -9.1727571e-002 + -9.2425161e-002 + -9.3111530e-002 + -9.3857380e-002 + -9.4699742e-002 + -9.5638550e-002 + -9.6652396e-002 + -9.7711522e-002 + -9.8784227e-002 + -9.9843082e-002 + -1.0086997e-001 + -1.0185891e-001 + -1.0281389e-001 + -1.0375067e-001 + -1.0468343e-001 + -1.0561408e-001 + -1.0653948e-001 + -1.0745085e-001 + -1.0833365e-001 + -1.0916018e-001 + -1.0988277e-001 + -1.1044890e-001 + -1.1081826e-001 + -1.1098079e-001 + -1.1097701e-001 + -1.1086984e-001 + -1.1071223e-001 + -1.1054431e-001 + -1.1037283e-001 + -1.1018841e-001 + -1.1000099e-001 + -1.0983799e-001 + -1.0974065e-001 + -1.0974133e-001 + -1.0983361e-001 + -1.0998328e-001 + -1.1015461e-001 + -1.1032577e-001 + -1.1048742e-001 + -1.1063014e-001 + -1.1075033e-001 + -1.1085800e-001 + -1.1096911e-001 + -1.1108725e-001 + -1.1119103e-001 + -1.1124552e-001 + -1.1121247e-001 + -1.1106355e-001 + -1.1079836e-001 + -1.1043914e-001 + -1.1002340e-001 + -1.0960323e-001 + -1.0922023e-001 + -1.0888020e-001 + -1.0856281e-001 + -1.0823878e-001 + -1.0788072e-001 + -1.0748401e-001 + -1.0707486e-001 + -1.0668162e-001 + -1.0630431e-001 + -1.0591974e-001 + -1.0550914e-001 + -1.0507754e-001 + -1.0464483e-001 + -1.0422421e-001 + -1.0382085e-001 + -1.0343398e-001 + -1.0304309e-001 + -1.0260493e-001 + -1.0207304e-001 + -1.0142378e-001 + -1.0066669e-001 + -9.9845273e-002 + -9.9027003e-002 + -9.8258444e-002 + -9.7537839e-002 + -9.6836861e-002 + -9.6134860e-002 + -9.5441637e-002 + -9.4791498e-002 + -9.4217781e-002 + -9.3726521e-002 + -9.3285416e-002 + -9.2842565e-002 + -9.2350174e-002 + -9.1775284e-002 + -9.1116383e-002 + -9.0405689e-002 + -8.9690230e-002 + -8.9018319e-002 + -8.8426657e-002 + -8.7930665e-002 + -8.7524470e-002 + -8.7185296e-002 + -8.6878281e-002 + -8.6565075e-002 + -8.6223033e-002 + -8.5861911e-002 + -8.5516606e-002 + -8.5236506e-002 + -8.5075536e-002 + -8.5062678e-002 + -8.5185518e-002 + -8.5400099e-002 + -8.5647269e-002 + -8.5868773e-002 + -8.6014414e-002 + -8.6045512e-002 + -8.5945415e-002 + -8.5716777e-002 + -8.5363959e-002 + -8.4889818e-002 + -8.4304003e-002 + -8.3621474e-002 + -8.2859359e-002 + -8.2040277e-002 + -8.1193031e-002 + -8.0350211e-002 + -7.9539123e-002 + -7.8778609e-002 + -7.8082033e-002 + -7.7449383e-002 + -7.6866539e-002 + -7.6317626e-002 + -7.5782295e-002 + -7.5230797e-002 + -7.4634429e-002 + -7.3982098e-002 + -7.3280133e-002 + -7.2530800e-002 + -7.1746260e-002 + -7.0970669e-002 + -7.0259643e-002 + -6.9648389e-002 + -6.9138101e-002 + -6.8690168e-002 + -6.8222207e-002 + -6.7658664e-002 + -6.6988788e-002 + -6.6244975e-002 + -6.5465929e-002 + -6.4695373e-002 + -6.3974516e-002 + -6.3315312e-002 + -6.2692424e-002 + -6.2072032e-002 + -6.1428526e-002 + -6.0739986e-002 + -5.9998370e-002 + -5.9215638e-002 + -5.8413160e-002 + -5.7613029e-002 + -5.6831129e-002 + -5.6066676e-002 + -5.5303836e-002 + -5.4518822e-002 + -5.3691751e-002 + -5.2816264e-002 + -5.1895753e-002 + -5.0945827e-002 + -4.9984955e-002 + -4.9022563e-002 + -4.8058382e-002 + -4.7079583e-002 + -4.6069753e-002 + -4.5031865e-002 + -4.3993788e-002 + -4.2973148e-002 + -4.1963731e-002 + -4.0947219e-002 + -3.9902060e-002 + -3.8831277e-002 + -3.7772959e-002 + -3.6786639e-002 + -3.5907931e-002 + -3.5116690e-002 + -3.4367054e-002 + -3.3610158e-002 + -3.2824476e-002 + -3.2048529e-002 + -3.1351398e-002 + -3.0786767e-002 + -3.0369884e-002 + -3.0082963e-002 + -2.9895559e-002 + -2.9759820e-002 + -2.9607804e-002 + -2.9380951e-002 + -2.9041900e-002 + -2.8568265e-002 + -2.7967448e-002 + -2.7277610e-002 + -2.6546841e-002 + -2.5816992e-002 + -2.5119294e-002 + -2.4476645e-002 + -2.3884832e-002 + -2.3311488e-002 + -2.2732220e-002 + -2.2143627e-002 + -2.1571075e-002 + -2.1064011e-002 + -2.0650840e-002 + -2.0308023e-002 + -1.9964822e-002 + -1.9529324e-002 + -1.8932057e-002 + -1.8156476e-002 + -1.7235713e-002 + -1.6239496e-002 + -1.5237826e-002 + -1.4259320e-002 + -1.3302217e-002 + -1.2351319e-002 + -1.1388060e-002 + -1.0416537e-002 + -9.4454056e-003 + -8.4758247e-003 + -7.5130058e-003 + -6.5379806e-003 + -5.5050353e-003 + -4.3735011e-003 + -3.1270093e-003 + -1.7749437e-003 + -3.4392903e-004 + 1.1366318e-003 + 2.6644603e-003 + 4.2671165e-003 + 5.9721549e-003 + 7.7939125e-003 + 9.7120827e-003 + 1.1653882e-002 + 1.3545616e-002 + 1.5366756e-002 + 1.7144645e-002 + 1.8935043e-002 + 2.0785484e-002 + 2.2705101e-002 + 2.4672161e-002 + 2.6645565e-002 + 2.8576579e-002 + 3.0421715e-002 + 3.2163043e-002 + 3.3809291e-002 + 3.5376656e-002 + 3.6885390e-002 + 3.8345116e-002 + 3.9757798e-002 + 4.1140958e-002 + 4.2516450e-002 + 4.3901063e-002 + 4.5290953e-002 + 4.6657057e-002 + 4.7971217e-002 + 4.9202554e-002 + 5.0330195e-002 + 5.1365230e-002 + 5.2339391e-002 + 5.3294152e-002 + 5.4264204e-002 + 5.5264180e-002 + 5.6287778e-002 + 5.7320513e-002 + 5.8351574e-002 + 5.9370915e-002 + 6.0381204e-002 + 6.1395105e-002 + 6.2415905e-002 + 6.3440854e-002 + 6.4477385e-002 + 6.5529113e-002 + 6.6589338e-002 + 6.7666346e-002 + 6.8769664e-002 + 6.9894407e-002 + 7.1024814e-002 + 7.2140272e-002 + 7.3226587e-002 + 7.4292664e-002 + 7.5375047e-002 + 7.6496573e-002 + 7.7644641e-002 + 7.8799506e-002 + 7.9945180e-002 + 8.1059043e-002 + 8.2127728e-002 + 8.3158997e-002 + 8.4163342e-002 + 8.5140996e-002 + 8.6092952e-002 + 8.7018225e-002 + 8.7901160e-002 + 8.8745129e-002 + 8.9575979e-002 + 9.0406309e-002 + 9.1238330e-002 + 9.2070214e-002 + 9.2898675e-002 + 9.3711179e-002 + 9.4476249e-002 + 9.5169881e-002 + 9.5780880e-002 + 9.6302572e-002 + 9.6745267e-002 + 9.7122855e-002 + 9.7448328e-002 + 9.7744030e-002 + 9.8030587e-002 + 9.8316614e-002 + 9.8598757e-002 + 9.8866480e-002 + 9.9105937e-002 + 9.9312452e-002 + 9.9497789e-002 + 9.9678686e-002 + 9.9867431e-002 + 1.0005649e-001 + 1.0020586e-001 + 1.0027180e-001 + 1.0024643e-001 + 1.0015674e-001 + 1.0005185e-001 + 9.9989160e-002 + 1.0001187e-001 + 1.0014660e-001 + 1.0039448e-001 + 1.0072839e-001 + 1.0110953e-001 + 1.0149510e-001 + 1.0183594e-001 + 1.0208203e-001 + 1.0221783e-001 + 1.0224826e-001 + 1.0217529e-001 + 1.0202608e-001 + 1.0183922e-001 + 1.0164151e-001 + 1.0144632e-001 + 1.0124243e-001 + 1.0098861e-001 + 1.0064306e-001 + 1.0019588e-001 + 9.9663634e-002 + 9.9090922e-002 + 9.8530197e-002 + 9.8004535e-002 + 9.7509652e-002 + 9.7024314e-002 + 9.6520800e-002 + 9.5983046e-002 + 9.5403108e-002 + 9.4764687e-002 + 9.4054368e-002 + 9.3283442e-002 + 9.2487583e-002 + 9.1713362e-002 + 9.1006699e-002 + 9.0386676e-002 + 8.9850864e-002 + 8.9403759e-002 + 8.9046260e-002 + 8.8779962e-002 + 8.8592646e-002 + 8.8421450e-002 + 8.8187713e-002 + 8.7848121e-002 + 8.7405224e-002 + 8.6910291e-002 + 8.6450041e-002 + 8.6106286e-002 + 8.5909481e-002 + 8.5829710e-002 + 8.5819530e-002 + 8.5828103e-002 + 8.5807767e-002 + 8.5741011e-002 + 8.5627658e-002 + 8.5476819e-002 + 8.5301122e-002 + 8.5098853e-002 + 8.4869892e-002 + 8.4628783e-002 + 8.4386665e-002 + 8.4143557e-002 + 8.3879744e-002 + 8.3563896e-002 + 8.3189117e-002 + 8.2763093e-002 + 8.2306514e-002 + 8.1850082e-002 + 8.1403942e-002 + 8.0978779e-002 + 8.0593099e-002 + 8.0254583e-002 + 7.9972291e-002 + 7.9755075e-002 + 7.9595537e-002 + 7.9471395e-002 + 7.9358332e-002 + 7.9227319e-002 + 7.9031627e-002 + 7.8729727e-002 + 7.8313789e-002 + 7.7817316e-002 + 7.7297338e-002 + 7.6799369e-002 + 7.6353068e-002 + 7.5977414e-002 + 7.5672936e-002 + 7.5413511e-002 + 7.5157053e-002 + 7.4876593e-002 + 7.4581097e-002 + 7.4310187e-002 + 7.4107201e-002 + 7.4009073e-002 + 7.4035935e-002 + 7.4174863e-002 + 7.4395459e-002 + 7.4644770e-002 + 7.4844827e-002 + 7.4931946e-002 + 7.4873758e-002 + 7.4664309e-002 + 7.4340859e-002 + 7.3993351e-002 + 7.3714300e-002 + 7.3556268e-002 + 7.3534182e-002 + 7.3598808e-002 + 7.3643022e-002 + 7.3573081e-002 + 7.3343048e-002 + 7.2955051e-002 + 7.2455206e-002 + 7.1915663e-002 + 7.1411756e-002 + 7.0990322e-002 + 7.0653228e-002 + 7.0373723e-002 + 7.0119563e-002 + 6.9867076e-002 + 6.9599894e-002 + 6.9315927e-002 + 6.9026361e-002 + 6.8732552e-002 + 6.8427935e-002 + 6.8107808e-002 + 6.7760028e-002 + 6.7376885e-002 + 6.6966355e-002 + 6.6522879e-002 + 6.6032534e-002 + 6.5506517e-002 + 6.4969781e-002 + 6.4443653e-002 + 6.3947655e-002 + 6.3492966e-002 + 6.3068753e-002 + 6.2647271e-002 + 6.2202427e-002 + 6.1724330e-002 + 6.1233823e-002 + 6.0768683e-002 + 6.0341665e-002 + 5.9941807e-002 + 5.9554429e-002 + 5.9163057e-002 + 5.8770578e-002 + 5.8385527e-002 + 5.7995327e-002 + 5.7585304e-002 + 5.7144113e-002 + 5.6667614e-002 + 5.6174958e-002 + 5.5695087e-002 + 5.5241335e-002 + 5.4809717e-002 + 5.4387512e-002 + 5.3947737e-002 + 5.3468505e-002 + 5.2960119e-002 + 5.2441531e-002 + 5.1931372e-002 + 5.1449899e-002 + 5.1010295e-002 + 5.0633287e-002 + 5.0326861e-002 + 5.0072344e-002 + 4.9850348e-002 + 4.9646439e-002 + 4.9443370e-002 + 4.9220210e-002 + 4.8968522e-002 + 4.8698979e-002 + 4.8433180e-002 + 4.8192105e-002 + 4.7989082e-002 + 4.7833169e-002 + 4.7707809e-002 + 4.7564450e-002 + 4.7342198e-002 + 4.6993928e-002 + 4.6528560e-002 + 4.5995594e-002 + 4.5448679e-002 + 4.4943366e-002 + 4.4514692e-002 + 4.4164460e-002 + 4.3879430e-002 + 4.3642510e-002 + 4.3429552e-002 + 4.3213991e-002 + 4.2983625e-002 + 4.2740053e-002 + 4.2489824e-002 + 4.2236152e-002 + 4.1966751e-002 + 4.1669743e-002 + 4.1346807e-002 + 4.0995978e-002 + 4.0615506e-002 + 4.0212571e-002 + 3.9798983e-002 + 3.9399387e-002 + 3.9048239e-002 + 3.8778839e-002 + 3.8611991e-002 + 3.8541783e-002 + 3.8529570e-002 + 3.8498345e-002 + 3.8358548e-002 + 3.8052800e-002 + 3.7577380e-002 + 3.6987975e-002 + 3.6368328e-002 + 3.5778724e-002 + 3.5235587e-002 + 3.4718289e-002 + 3.4190231e-002 + 3.3615170e-002 + 3.2966685e-002 + 3.2242430e-002 + 3.1458544e-002 + 3.0647606e-002 + 2.9856508e-002 + 2.9109812e-002 + 2.8400193e-002 + 2.7694506e-002 + 2.6932772e-002 + 2.6069690e-002 + 2.5101765e-002 + 2.4058567e-002 + 2.2994857e-002 + 2.1962543e-002 + 2.0982604e-002 + 2.0055049e-002 + 1.9182589e-002 + 1.8375489e-002 + 1.7651301e-002 + 1.7020574e-002 + 1.6476811e-002 + 1.6009088e-002 + 1.5602010e-002 + 1.5244077e-002 + 1.4932947e-002 + 1.4650362e-002 + 1.4360183e-002 + 1.4040190e-002 + 1.3685579e-002 + 1.3282912e-002 + 1.2812057e-002 + 1.2256627e-002 + 1.1609813e-002 + 1.0890185e-002 + 1.0128623e-002 + 9.3481611e-003 + 8.5628190e-003 + 7.7794068e-003 + 6.9949353e-003 + 6.1969330e-003 + 5.3810998e-003 + 4.5650660e-003 + 3.7981210e-003 + 3.1458955e-003 + 2.6475164e-003 + 2.2978983e-003 + 2.0415205e-003 + 1.7803899e-003 + 1.4165825e-003 + 8.8544750e-004 + 1.6516154e-004 + -7.1348674e-004 + -1.6787014e-003 + -2.6523697e-003 + -3.5742476e-003 + -4.4187407e-003 + -5.1974211e-003 + -5.9474653e-003 + -6.7191966e-003 + -7.5572473e-003 + -8.4894357e-003 + -9.5226870e-003 + -1.0631614e-002 + -1.1763385e-002 + -1.2853713e-002 + -1.3843002e-002 + -1.4701828e-002 + -1.5430442e-002 + -1.6046790e-002 + -1.6576286e-002 + -1.7035060e-002 + -1.7440866e-002 + -1.7817502e-002 + -1.8183448e-002 + -1.8545859e-002 + -1.8903139e-002 + -1.9258250e-002 + -1.9613825e-002 + -1.9972582e-002 + -2.0334111e-002 + -2.0677145e-002 + -2.0973108e-002 + -2.1213527e-002 + -2.1393988e-002 + -2.1484247e-002 + -2.1446257e-002 + -2.1250417e-002 + -2.0877065e-002 + -2.0357191e-002 + -1.9796703e-002 + -1.9325339e-002 + -1.9047245e-002 + -1.9018753e-002 + -1.9218490e-002 + -1.9558804e-002 + -1.9940559e-002 + -2.0295099e-002 + -2.0612112e-002 + -2.0932855e-002 + -2.1307249e-002 + -2.1763009e-002 + -2.2289818e-002 + -2.2855355e-002 + -2.3425976e-002 + -2.3954278e-002 + -2.4392649e-002 + -2.4734800e-002 + -2.5020045e-002 + -2.5303155e-002 + -2.5638705e-002 + -2.6069127e-002 + -2.6600701e-002 + -2.7209610e-002 + -2.7870284e-002 + -2.8568487e-002 + -2.9296987e-002 + -3.0057724e-002 + -3.0863024e-002 + -3.1716770e-002 + -3.2614402e-002 + -3.3534293e-002 + -3.4432054e-002 + -3.5278242e-002 + -3.6066318e-002 + -3.6807325e-002 + -3.7524240e-002 + -3.8225856e-002 + -3.8917634e-002 + -3.9603666e-002 + -4.0263451e-002 + -4.0881123e-002 + -4.1461170e-002 + -4.2013331e-002 + -4.2562951e-002 + -4.3135439e-002 + -4.3728784e-002 + -4.4308264e-002 + -4.4827404e-002 + -4.5264124e-002 + -4.5626965e-002 + -4.5952553e-002 + -4.6291636e-002 + -4.6674118e-002 + -4.7098630e-002 + -4.7535889e-002 + -4.7941922e-002 + -4.8301728e-002 + -4.8643071e-002 + -4.9006893e-002 + -4.9434736e-002 + -4.9958937e-002 + -5.0590743e-002 + -5.1317141e-002 + -5.2092322e-002 + -5.2853479e-002 + -5.3554715e-002 + -5.4180422e-002 + -5.4744578e-002 + -5.5286805e-002 + -5.5866114e-002 + -5.6544808e-002 + -5.7362631e-002 + -5.8322867e-002 + -5.9372842e-002 + -6.0405148e-002 + -6.1312038e-002 + -6.2028682e-002 + -6.2551385e-002 + -6.2939195e-002 + -6.3277421e-002 + -6.3635607e-002 + -6.4063846e-002 + -6.4590457e-002 + -6.5213755e-002 + -6.5921896e-002 + -6.6700636e-002 + -6.7527390e-002 + -6.8372283e-002 + -6.9203896e-002 + -6.9991700e-002 + -7.0697097e-002 + -7.1291805e-002 + -7.1780682e-002 + -7.2180329e-002 + -7.2499270e-002 + -7.2742722e-002 + -7.2908109e-002 + -7.2983559e-002 + -7.2964563e-002 + -7.2867910e-002 + -7.2738979e-002 + -7.2647398e-002 + -7.2665094e-002 + -7.2826318e-002 + -7.3108560e-002 + -7.3460963e-002 + -7.3822866e-002 + -7.4133050e-002 + -7.4353718e-002 + -7.4476686e-002 + -7.4517470e-002 + -7.4517423e-002 + -7.4531173e-002 + -7.4599938e-002 + -7.4740368e-002 + -7.4948633e-002 + -7.5205612e-002 + -7.5481630e-002 + -7.5751547e-002 + -7.6005695e-002 + -7.6243341e-002 + -7.6469562e-002 + -7.6692230e-002 + -7.6908671e-002 + -7.7105405e-002 + -7.7274113e-002 + -7.7419179e-002 + -7.7548688e-002 + -7.7666873e-002 + -7.7775862e-002 + -7.7865449e-002 + -7.7901245e-002 + -7.7837907e-002 + -7.7638343e-002 + -7.7289850e-002 + -7.6826381e-002 + -7.6320722e-002 + -7.5845045e-002 + -7.5440706e-002 + -7.5102771e-002 + -7.4791129e-002 + -7.4454862e-002 + -7.4051736e-002 + -7.3569071e-002 + -7.3020302e-002 + -7.2422848e-002 + -7.1792299e-002 + -7.1152741e-002 + -7.0529529e-002 + -6.9941547e-002 + -6.9412327e-002 + -6.8950121e-002 + -6.8538516e-002 + -6.8161491e-002 + -6.7799251e-002 + -6.7418518e-002 + -6.6986511e-002 + -6.6482118e-002 + -6.5904759e-002 + -6.5286423e-002 + -6.4673600e-002 + -6.4098110e-002 + -6.3567007e-002 + -6.3056743e-002 + -6.2528298e-002 + -6.1952633e-002 + -6.1318131e-002 + -6.0634303e-002 + -5.9936265e-002 + -5.9272156e-002 + -5.8682084e-002 + -5.8173777e-002 + -5.7710550e-002 + -5.7237221e-002 + -5.6710474e-002 + -5.6109086e-002 + -5.5437426e-002 + -5.4722875e-002 + -5.3998437e-002 + -5.3286372e-002 + -5.2596599e-002 + -5.1929619e-002 + -5.1276286e-002 + -5.0623692e-002 + -4.9961450e-002 + -4.9276531e-002 + -4.8552952e-002 + -4.7776919e-002 + -4.6933880e-002 + -4.6009689e-002 + -4.5007523e-002 + -4.3949437e-002 + -4.2862593e-002 + -4.1767917e-002 + -4.0650890e-002 + -3.9459312e-002 + -3.8149092e-002 + -3.6705402e-002 + -3.5144979e-002 + -3.3520221e-002 + -3.1901732e-002 + -3.0352432e-002 + -2.8908852e-002 + -2.7582942e-002 + -2.6371806e-002 + -2.5262476e-002 + -2.4240268e-002 + -2.3288745e-002 + -2.2391224e-002 + -2.1535031e-002 + -2.0709088e-002 + -1.9906609e-002 + -1.9126834e-002 + -1.8378772e-002 + -1.7672631e-002 + -1.7005106e-002 + -1.6364652e-002 + -1.5735873e-002 + -1.5103692e-002 + -1.4461204e-002 + -1.3817677e-002 + -1.3194928e-002 + -1.2602168e-002 + -1.2032377e-002 + -1.1473883e-002 + -1.0903096e-002 + -1.0297135e-002 + -9.6580901e-003 + -8.9968786e-003 + -8.3193632e-003 + -7.6433933e-003 + -6.9917596e-003 + -6.3808543e-003 + -5.8274694e-003 + -5.3363284e-003 + -4.8844299e-003 + -4.4301968e-003 + -3.9414838e-003 + -3.4085075e-003 + -2.8396195e-003 + -2.2560360e-003 + -1.6720988e-003 + -1.0885561e-003 + -5.0008944e-004 + 1.0542426e-004 + 7.2907824e-004 + 1.3515794e-003 + 1.9497513e-003 + 2.5022707e-003 + 2.9999612e-003 + 3.4595144e-003 + 3.9163812e-003 + 4.4072178e-003 + 4.9522424e-003 + 5.5452165e-003 + 6.1558362e-003 + 6.7531851e-003 + 7.3267999e-003 + 7.8863210e-003 + 8.4562649e-003 + 9.0557919e-003 + 9.6841931e-003 + 1.0334984e-002 + 1.1004883e-002 + 1.1683166e-002 + 1.2354939e-002 + 1.3015715e-002 + 1.3668385e-002 + 1.4309570e-002 + 1.4910279e-002 + 1.5415207e-002 + 1.5774279e-002 + 1.5987137e-002 + 1.6123785e-002 + 1.6290332e-002 + 1.6578949e-002 + 1.7033551e-002 + 1.7639051e-002 + 1.8344342e-002 + 1.9086907e-002 + 1.9813168e-002 + 2.0499265e-002 + 2.1144963e-002 + 2.1762946e-002 + 2.2372899e-002 + 2.2980680e-002 + 2.3576284e-002 + 2.4152759e-002 + 2.4709534e-002 + 2.5248764e-002 + 2.5774199e-002 + 2.6292275e-002 + 2.6817863e-002 + 2.7369296e-002 + 2.7956236e-002 + 2.8582626e-002 + 2.9255522e-002 + 2.9978650e-002 + 3.0742176e-002 + 3.1517260e-002 + 3.2260864e-002 + 3.2925172e-002 + 3.3463975e-002 + 3.3857756e-002 + 3.4128365e-002 + 3.4331974e-002 + 3.4546054e-002 + 3.4839178e-002 + 3.5243620e-002 + 3.5738452e-002 + 3.6261786e-002 + 3.6753068e-002 + 3.7165631e-002 + 3.7462737e-002 + 3.7645010e-002 + 3.7761312e-002 + 3.7877391e-002 + 3.8044356e-002 + 3.8278580e-002 + 3.8558341e-002 + 3.8841643e-002 + 3.9086183e-002 + 3.9257889e-002 + 3.9335113e-002 + 3.9313269e-002 + 3.9201949e-002 + 3.9018397e-002 + 3.8784356e-002 + 3.8521690e-002 + 3.8249879e-002 + 3.7980600e-002 + 3.7717044e-002 + 3.7462848e-002 + 3.7214560e-002 + 3.6963641e-002 + 3.6711439e-002 + 3.6460010e-002 + 3.6201757e-002 + 3.5921191e-002 + 3.5595862e-002 + 3.5202729e-002 + 3.4736735e-002 + 3.4217490e-002 + 3.3673346e-002 + 3.3135485e-002 + 3.2632775e-002 + 3.2176116e-002 + 3.1756196e-002 + 3.1346111e-002 + 3.0913171e-002 + 3.0441045e-002 + 2.9939703e-002 + 2.9442000e-002 + 2.8978669e-002 + 2.8557590e-002 + 2.8174966e-002 + 2.7817700e-002 + 2.7459140e-002 + 2.7076269e-002 + 2.6657614e-002 + 2.6199117e-002 + 2.5703458e-002 + 2.5176305e-002 + 2.4628491e-002 + 2.4081125e-002 + 2.3561632e-002 + 2.3096260e-002 + 2.2702475e-002 + 2.2374599e-002 + 2.2068121e-002 + 2.1702733e-002 + 2.1199709e-002 + 2.0522641e-002 + 1.9695001e-002 + 1.8800178e-002 + 1.7945322e-002 + 1.7209369e-002 + 1.6620724e-002 + 1.6166938e-002 + 1.5811539e-002 + 1.5507168e-002 + 1.5208140e-002 + 1.4877450e-002 + 1.4491893e-002 + 1.4049978e-002 + 1.3575151e-002 + 1.3104786e-002 + 1.2676380e-002 + 1.2310304e-002 + 1.2003770e-002 + 1.1741964e-002 + 1.1490687e-002 + 1.1207053e-002 + 1.0874714e-002 + 1.0515356e-002 + 1.0173712e-002 + 9.8833035e-003 + 9.6437169e-003 + 9.4211946e-003 + 9.1578402e-003 + 8.7943709e-003 + 8.2956586e-003 + 7.6665994e-003 + 6.9486258e-003 + 6.1941779e-003 + 5.4516641e-003 + 4.7588717e-003 + 4.1254258e-003 + 3.5304011e-003 + 2.9466629e-003 + 2.3585533e-003 + 1.7563908e-003 + 1.1323237e-003 + 4.8071200e-004 + -2.0025500e-004 + -8.9448417e-004 + -1.5680601e-003 + -2.2000182e-003 + -2.8023388e-003 + -3.4112564e-003 + -4.0724288e-003 + -4.8185029e-003 + -5.6515106e-003 + -6.5537247e-003 + -7.5029397e-003 + -8.4715617e-003 + -9.4201067e-003 + -1.0307500e-002 + -1.1115795e-002 + -1.1855767e-002 + -1.2554710e-002 + -1.3243250e-002 + -1.3947900e-002 + -1.4692848e-002 + -1.5503900e-002 + -1.6407682e-002 + -1.7416745e-002 + -1.8512018e-002 + -1.9641765e-002 + -2.0740416e-002 + -2.1759342e-002 + -2.2689660e-002 + -2.3555075e-002 + -2.4389588e-002 + -2.5228451e-002 + -2.6090338e-002 + -2.6955925e-002 + -2.7775138e-002 + -2.8496745e-002 + -2.9095607e-002 + -2.9577829e-002 + -2.9968522e-002 + -3.0296960e-002 + -3.0593208e-002 + -3.0891522e-002 + -3.1221891e-002 + -3.1598877e-002 + -3.2022556e-002 + -3.2484465e-002 + -3.2974459e-002 + -3.3481475e-002 + -3.3991885e-002 + -3.4494423e-002 + -3.4981161e-002 + -3.5447605e-002 + -3.5889596e-002 + -3.6299180e-002 + -3.6673260e-002 + -3.7028624e-002 + -3.7416274e-002 + -3.7910479e-002 + -3.8562738e-002 + -3.9359535e-002 + -4.0216840e-002 + -4.1018229e-002 + -4.1664794e-002 + -4.2106474e-002 + -4.2355471e-002 + -4.2471998e-002 + -4.2530111e-002 + -4.2584783e-002 + -4.2653371e-002 + -4.2720896e-002 + -4.2751827e-002 + -4.2707567e-002 + -4.2574135e-002 + -4.2363443e-002 + -4.2093167e-002 + -4.1784471e-002 + -4.1461141e-002 + -4.1137766e-002 + -4.0817600e-002 + -4.0496473e-002 + -4.0154975e-002 + -3.9752272e-002 + -3.9245575e-002 + -3.8618884e-002 + -3.7895256e-002 + -3.7133417e-002 + -3.6412726e-002 + -3.5806956e-002 + -3.5356611e-002 + -3.5059418e-002 + -3.4886729e-002 + -3.4798400e-002 + -3.4750000e-002 + -3.4702705e-002 + -3.4623647e-002 + -3.4486600e-002 + -3.4275942e-002 + -3.3987033e-002 + -3.3631717e-002 + -3.3239498e-002 + -3.2848131e-002 + -3.2483785e-002 + -3.2141441e-002 + -3.1793962e-002 + -3.1416570e-002 + -3.1000428e-002 + -3.0549895e-002 + -3.0068828e-002 + -2.9557467e-002 + -2.9013600e-002 + -2.8431659e-002 + -2.7810954e-002 + -2.7162702e-002 + -2.6509092e-002 + -2.5877957e-002 + -2.5287302e-002 + -2.4727852e-002 + -2.4163089e-002 + -2.3541345e-002 + -2.2820428e-002 + -2.1999003e-002 + -2.1117554e-002 + -2.0226148e-002 + -1.9359917e-002 + -1.8536236e-002 + -1.7759528e-002 + -1.7027528e-002 + -1.6332194e-002 + -1.5661736e-002 + -1.5010895e-002 + -1.4386163e-002 + -1.3798399e-002 + -1.3252927e-002 + -1.2748871e-002 + -1.2279794e-002 + -1.1827375e-002 + -1.1367635e-002 + -1.0890518e-002 + -1.0407730e-002 + -9.9446116e-003 + -9.5225615e-003 + -9.1444364e-003 + -8.7966966e-003 + -8.4624101e-003 + -8.1269339e-003 + -7.7807827e-003 + -7.4289830e-003 + -7.0967178e-003 + -6.8214528e-003 + -6.6365586e-003 + -6.5585514e-003 + -6.5870049e-003 + -6.7172056e-003 + -6.9417374e-003 + -7.2436103e-003 + -7.5995896e-003 + -7.9914802e-003 + -8.4211391e-003 + -8.9068375e-003 + -9.4574084e-003 + -1.0053994e-002 + -1.0655140e-002 + -1.1217456e-002 + -1.1714587e-002 + -1.2145518e-002 + -1.2527627e-002 + -1.2884452e-002 + -1.3240787e-002 + -1.3613859e-002 + -1.4006807e-002 + -1.4413675e-002 + -1.4825112e-002 + -1.5233691e-002 + -1.5636640e-002 + -1.6033843e-002 + -1.6427690e-002 + -1.6821220e-002 + -1.7214613e-002 + -1.7606992e-002 + -1.7996798e-002 + -1.8382432e-002 + -1.8770153e-002 + -1.9165943e-002 + -1.9547931e-002 + -1.9870279e-002 + -2.0100846e-002 + -2.0248627e-002 + -2.0363448e-002 + -2.0506263e-002 + -2.0721604e-002 + -2.1024926e-002 + -2.1398323e-002 + -2.1808026e-002 + -2.2220843e-002 + -2.2613283e-002 + -2.2980072e-002 + -2.3327324e-002 + -2.3666027e-002 + -2.4010239e-002 + -2.4367634e-002 + -2.4733203e-002 + -2.5089245e-002 + -2.5403845e-002 + -2.5632633e-002 + -2.5737724e-002 + -2.5716278e-002 + -2.5605754e-002 + -2.5465978e-002 + -2.5355132e-002 + -2.5298137e-002 + -2.5273673e-002 + -2.5241526e-002 + -2.5172758e-002 + -2.5046341e-002 + -2.4844625e-002 + -2.4569517e-002 + -2.4241227e-002 + -2.3880390e-002 + -2.3497707e-002 + -2.3098022e-002 + -2.2681741e-002 + -2.2244417e-002 + -2.1789708e-002 + -2.1323578e-002 + -2.0843567e-002 + -2.0341502e-002 + -1.9805953e-002 + -1.9234105e-002 + -1.8638517e-002 + -1.8042835e-002 + -1.7474361e-002 + -1.6942727e-002 + -1.6432922e-002 + -1.5922831e-002 + -1.5389499e-002 + -1.4817058e-002 + -1.4209493e-002 + -1.3584423e-002 + -1.2969211e-002 + -1.2391800e-002 + -1.1858748e-002 + -1.1354544e-002 + -1.0850258e-002 + -1.0318720e-002 + -9.7474553e-003 + -9.1367473e-003 + -8.5010145e-003 + -7.8569504e-003 + -7.2181928e-003 + -6.6070087e-003 + -6.0459624e-003 + -5.5513052e-003 + -5.1354730e-003 + -4.8006543e-003 + -4.5445630e-003 + -4.3565377e-003 + -4.2122928e-003 + -4.1042464e-003 + -4.0502662e-003 + -4.0770045e-003 + -4.2018339e-003 + -4.4069886e-003 + -4.6442928e-003 + -4.8617038e-003 + -5.0160049e-003 + -5.0789617e-003 + -5.0435992e-003 + -4.9181820e-003 + -4.7113022e-003 + -4.4304481e-003 + -4.0902448e-003 + -3.7142314e-003 + -3.3347035e-003 + -2.9861877e-003 + -2.6912185e-003 + -2.4483443e-003 + -2.2111058e-003 + -1.9538537e-003 + -1.6885780e-003 + -1.4219028e-003 + -1.1666048e-003 + -9.1916554e-004 + -6.5174441e-004 + -3.2711806e-004 + 8.3674545e-005 + 5.7784885e-004 + 1.1023986e-003 + 1.5726619e-003 + 1.9201196e-003 + 2.1239461e-003 + 2.2028504e-003 + 2.1951424e-003 + 2.1421779e-003 + 2.0741585e-003 + 2.0039564e-003 + 1.9299346e-003 + 1.8408129e-003 + 1.7246445e-003 + 1.5809265e-003 + 1.4167280e-003 + 1.2433345e-003 + 1.0788719e-003 + 9.3933291e-004 + 8.3069696e-004 + 7.4602678e-004 + 6.6739056e-004 + 5.7710385e-004 + 4.7311970e-004 + 3.7746963e-004 + 3.2406010e-004 + 3.3661307e-004 + 4.1279018e-004 + 5.1835832e-004 + 6.0448325e-004 + 6.3427667e-004 + 5.9490357e-004 + 5.0279603e-004 + 3.8343880e-004 + 2.4205496e-004 + 7.2295323e-005 + -1.3858132e-004 + -4.1155233e-004 + -7.5577254e-004 + -1.1552838e-003 + -1.5683446e-003 + -1.9428685e-003 + -2.2425827e-003 + -2.4581655e-003 + -2.5964454e-003 + -2.6706195e-003 + -2.7018086e-003 + -2.7159743e-003 + -2.7407914e-003 + -2.7993674e-003 + -2.8995810e-003 + -3.0290296e-003 + -3.1534065e-003 + -3.2169084e-003 + -3.1589202e-003 + -2.9547727e-003 + -2.6290266e-003 + -2.2284084e-003 + -1.8089461e-003 + -1.4249856e-003 + -1.1080517e-003 + -8.6582067e-004 + -6.8809863e-004 + -5.4979025e-004 + -4.2136679e-004 + -2.7697464e-004 + -9.1461748e-005 + 1.6689146e-004 + 5.2874934e-004 + 1.0038346e-003 + 1.5735251e-003 + 2.1956046e-003 + 2.8164719e-003 + 3.3912547e-003 + 3.9043446e-003 + 4.3727869e-003 + 4.8328077e-003 + 5.3281450e-003 + 5.8872547e-003 + 6.5096521e-003 + 7.1767295e-003 + 7.8633857e-003 + 8.5470544e-003 + 9.2125234e-003 + 9.8587231e-003 + 1.0492278e-002 + 1.1120121e-002 + 1.1750952e-002 + 1.2388099e-002 + 1.3030671e-002 + 1.3675004e-002 + 1.4319340e-002 + 1.4974719e-002 + 1.5656123e-002 + 1.6366481e-002 + 1.7098562e-002 + 1.7851614e-002 + 1.8647835e-002 + 1.9539220e-002 + 2.0582278e-002 + 2.1789366e-002 + 2.3114145e-002 + 2.4476542e-002 + 2.5797482e-002 + 2.7026808e-002 + 2.8161387e-002 + 2.9241787e-002 + 3.0316221e-002 + 3.1410482e-002 + 3.2527419e-002 + 3.3662696e-002 + 3.4818452e-002 + 3.6001136e-002 + 3.7215977e-002 + 3.8464754e-002 + 3.9735454e-002 + 4.1003372e-002 + 4.2250421e-002 + 4.3471810e-002 + 4.4672651e-002 + 4.5852376e-002 + 4.6986745e-002 + 4.8045085e-002 + 4.9008251e-002 + 4.9867312e-002 + 5.0632613e-002 + 5.1345797e-002 + 5.2068633e-002 + 5.2853268e-002 + 5.3735494e-002 + 5.4732126e-002 + 5.5831195e-002 + 5.7005391e-002 + 5.8214411e-002 + 5.9404734e-002 + 6.0535962e-002 + 6.1595690e-002 + 6.2591137e-002 + 6.3541502e-002 + 6.4470857e-002 + 6.5388348e-002 + 6.6276272e-002 + 6.7102041e-002 + 6.7836397e-002 + 6.8467658e-002 + 6.9007937e-002 + 6.9488013e-002 + 6.9942846e-002 + 7.0399570e-002 + 7.0871885e-002 + 7.1360729e-002 + 7.1860994e-002 + 7.2358642e-002 + 7.2834683e-002 + 7.3274848e-002 + 7.3670953e-002 + 7.4032528e-002 + 7.4379936e-002 + 7.4720873e-002 + 7.5059562e-002 + 7.5409291e-002 + 7.5779508e-002 + 7.6172602e-002 + 7.6590951e-002 + 7.7029388e-002 + 7.7462365e-002 + 7.7842787e-002 + 7.8110641e-002 + 7.8217518e-002 + 7.8155177e-002 + 7.7950654e-002 + 7.7645959e-002 + 7.7281280e-002 + 7.6881122e-002 + 7.6445616e-002 + 7.5955135e-002 + 7.5402736e-002 + 7.4810049e-002 + 7.4215625e-002 + 7.3657459e-002 + 7.3152160e-002 + 7.2695711e-002 + 7.2275541e-002 + 7.1871128e-002 + 7.1453878e-002 + 7.0999398e-002 + 7.0500380e-002 + 6.9969745e-002 + 6.9439278e-002 + 6.8948833e-002 + 6.8523552e-002 + 6.8152648e-002 + 6.7794346e-002 + 6.7405149e-002 + 6.6962206e-002 + 6.6470493e-002 + 6.5960160e-002 + 6.5478258e-002 + 6.5082836e-002 + 6.4820759e-002 + 6.4700886e-002 + 6.4695503e-002 + 6.4749240e-002 + 6.4787479e-002 + 6.4740341e-002 + 6.4569262e-002 + 6.4274616e-002 + 6.3890701e-002 + 6.3475320e-002 + 6.3081336e-002 + 6.2732516e-002 + 6.2423056e-002 + 6.2125511e-002 + 6.1810109e-002 + 6.1460383e-002 + 6.1073624e-002 + 6.0660097e-002 + 6.0236859e-002 + 5.9818510e-002 + 5.9412517e-002 + 5.9017801e-002 + 5.8626184e-002 + 5.8219746e-002 + 5.7775109e-002 + 5.7281833e-002 + 5.6746382e-002 + 5.6187402e-002 + 5.5626136e-002 + 5.5071670e-002 + 5.4520661e-002 + 5.3961374e-002 + 5.3387606e-002 + 5.2812278e-002 + 5.2260804e-002 + 5.1756385e-002 + 5.1309011e-002 + 5.0912401e-002 + 5.0548402e-002 + 5.0197911e-002 + 4.9845719e-002 + 4.9482282e-002 + 4.9106532e-002 + 4.8719197e-002 + 4.8311332e-002 + 4.7867008e-002 + 4.7378919e-002 + 4.6857080e-002 + 4.6330993e-002 + 4.5830898e-002 + 4.5363199e-002 + 4.4921118e-002 + 4.4495941e-002 + 4.4076359e-002 + 4.3659094e-002 + 4.3241209e-002 + 4.2813407e-002 + 4.2375748e-002 + 4.1936430e-002 + 4.1504622e-002 + 4.1083992e-002 + 4.0665560e-002 + 4.0242566e-002 + 3.9820638e-002 + 3.9404872e-002 + 3.8991534e-002 + 3.8569947e-002 + 3.8128532e-002 + 3.7665068e-002 + 3.7187098e-002 + 3.6705193e-002 + 3.6225923e-002 + 3.5747230e-002 + 3.5258195e-002 + 3.4737854e-002 + 3.4171720e-002 + 3.3568536e-002 + 3.2950430e-002 + 3.2345170e-002 + 3.1773328e-002 + 3.1231958e-002 + 3.0704157e-002 + 3.0173505e-002 + 2.9630468e-002 + 2.9072827e-002 + 2.8501703e-002 + 2.7920429e-002 + 2.7335204e-002 + 2.6752498e-002 + 2.6174830e-002 + 2.5602701e-002 + 2.5028034e-002 + 2.4428652e-002 + 2.3781915e-002 + 2.3075918e-002 + 2.2316049e-002 + 2.1529288e-002 + 2.0755222e-002 + 2.0028808e-002 + 1.9364419e-002 + 1.8751519e-002 + 1.8159966e-002 + 1.7550066e-002 + 1.6890179e-002 + 1.6164505e-002 + 1.5371631e-002 + 1.4528561e-002 + 1.3666330e-002 + 1.2817546e-002 + 1.2003916e-002 + 1.1225197e-002 + 1.0464425e-002 + 9.7010611e-003 + 8.9183188e-003 + 8.1103307e-003 + 7.2801387e-003 + 6.4325120e-003 + 5.5755593e-003 + 4.7201997e-003 + 3.8663823e-003 + 3.0037422e-003 + 2.1354367e-003 + 1.2799938e-003 + 4.5938630e-004 + -3.0966537e-004 + -1.0276355e-003 + -1.7117549e-003 + -2.3879050e-003 + -3.0760284e-003 + -3.7802808e-003 + -4.4925686e-003 + -5.1960371e-003 + -5.8734335e-003 + -6.5169434e-003 + -7.1355560e-003 + -7.7571714e-003 + -8.4151183e-003 + -9.1262567e-003 + -9.8792493e-003 + -1.0645436e-002 + -1.1395698e-002 + -1.2107161e-002 + -1.2766354e-002 + -1.3371184e-002 + -1.3928533e-002 + -1.4447575e-002 + -1.4942107e-002 + -1.5430697e-002 + -1.5924295e-002 + -1.6429827e-002 + -1.6959923e-002 + -1.7527302e-002 + -1.8138042e-002 + -1.8780239e-002 + -1.9416865e-002 + -2.0007188e-002 + -2.0524386e-002 + -2.0957051e-002 + -2.1319388e-002 + -2.1646834e-002 + -2.1967414e-002 + -2.2287066e-002 + -2.2598835e-002 + -2.2888479e-002 + -2.3141507e-002 + -2.3355854e-002 + -2.3538847e-002 + -2.3695598e-002 + -2.3825903e-002 + -2.3934037e-002 + -2.4030311e-002 + -2.4122082e-002 + -2.4221692e-002 + -2.4351342e-002 + -2.4528718e-002 + -2.4760224e-002 + -2.5043736e-002 + -2.5367683e-002 + -2.5711588e-002 + -2.6055101e-002 + -2.6384422e-002 + -2.6692491e-002 + -2.6976809e-002 + -2.7229175e-002 + -2.7438558e-002 + -2.7605959e-002 + -2.7746171e-002 + -2.7876544e-002 + -2.8002101e-002 + -2.8113771e-002 + -2.8197141e-002 + -2.8237461e-002 + -2.8227246e-002 + -2.8174409e-002 + -2.8097452e-002 + -2.8017899e-002 + -2.7953186e-002 + -2.7902343e-002 + -2.7843057e-002 + -2.7742026e-002 + -2.7568861e-002 + -2.7315505e-002 + -2.6995171e-002 + -2.6631646e-002 + -2.6262718e-002 + -2.5925098e-002 + -2.5633206e-002 + -2.5377924e-002 + -2.5134130e-002 + -2.4880708e-002 + -2.4616753e-002 + -2.4355053e-002 + -2.4111647e-002 + -2.3898054e-002 + -2.3710475e-002 + -2.3531683e-002 + -2.3346124e-002 + -2.3141854e-002 + -2.2911793e-002 + -2.2665252e-002 + -2.2422204e-002 + -2.2206108e-002 + -2.2037752e-002 + -2.1924874e-002 + -2.1864820e-002 + -2.1841315e-002 + -2.1829109e-002 + -2.1809015e-002 + -2.1771906e-002 + -2.1723746e-002 + -2.1686491e-002 + -2.1685945e-002 + -2.1733892e-002 + -2.1820126e-002 + -2.1918647e-002 + -2.2000996e-002 + -2.2048964e-002 + -2.2055196e-002 + -2.2017248e-002 + -2.1936319e-002 + -2.1814400e-002 + -2.1658677e-002 + -2.1492659e-002 + -2.1342790e-002 + -2.1223168e-002 + -2.1139267e-002 + -2.1087406e-002 + -2.1054845e-002 + -2.1024493e-002 + -2.0980461e-002 + -2.0914113e-002 + -2.0825536e-002 + -2.0725519e-002 + -2.0628650e-002 + -2.0544042e-002 + -2.0475426e-002 + -2.0420078e-002 + -2.0372258e-002 + -2.0325587e-002 + -2.0272000e-002 + -2.0203008e-002 + -2.0114363e-002 + -2.0009319e-002 + -1.9891776e-002 + -1.9763466e-002 + -1.9626728e-002 + -1.9482815e-002 + -1.9331375e-002 + -1.9176324e-002 + -1.9031110e-002 + -1.8912478e-002 + -1.8828966e-002 + -1.8777965e-002 + -1.8748309e-002 + -1.8725163e-002 + -1.8698679e-002 + -1.8665261e-002 + -1.8624282e-002 + -1.8578143e-002 + -1.8527631e-002 + -1.8469819e-002 + -1.8404551e-002 + -1.8335185e-002 + -1.8263265e-002 + -1.8192490e-002 + -1.8133498e-002 + -1.8095138e-002 + -1.8078053e-002 + -1.8075466e-002 + -1.8073805e-002 + -1.8059770e-002 + -1.8024524e-002 + -1.7963519e-002 + -1.7882838e-002 + -1.7792513e-002 + -1.7697863e-002 + -1.7605406e-002 + -1.7518851e-002 + -1.7435920e-002 + -1.7351907e-002 + -1.7259692e-002 + -1.7155219e-002 + -1.7041879e-002 + -1.6927257e-002 + -1.6817362e-002 + -1.6716446e-002 + -1.6627966e-002 + -1.6552981e-002 + -1.6490243e-002 + -1.6435355e-002 + -1.6384209e-002 + -1.6336065e-002 + -1.6292775e-002 + -1.6258002e-002 + -1.6234530e-002 + -1.6223876e-002 + -1.6222349e-002 + -1.6218448e-002 + -1.6200119e-002 + -1.6160069e-002 + -1.6098565e-002 + -1.6023569e-002 + -1.5947720e-002 + -1.5884058e-002 + -1.5840941e-002 + -1.5822557e-002 + -1.5828911e-002 + -1.5854511e-002 + -1.5891439e-002 + -1.5931012e-002 + -1.5965284e-002 + -1.5990862e-002 + -1.6009741e-002 + -1.6026868e-002 + -1.6046377e-002 + -1.6068708e-002 + -1.6090727e-002 + -1.6105888e-002 + -1.6105719e-002 + -1.6085059e-002 + -1.6045011e-002 + -1.5990774e-002 + -1.5929119e-002 + -1.5865696e-002 + -1.5803204e-002 + -1.5740840e-002 + -1.5674728e-002 + -1.5600841e-002 + -1.5517047e-002 + -1.5425218e-002 + -1.5329208e-002 + -1.5230185e-002 + -1.5129301e-002 + -1.5029587e-002 + -1.4934088e-002 + -1.4845105e-002 + -1.4762728e-002 + -1.4685722e-002 + -1.4611765e-002 + -1.4536807e-002 + -1.4457353e-002 + -1.4370462e-002 + -1.4273750e-002 + -1.4166767e-002 + -1.4051540e-002 + -1.3933116e-002 + -1.3817411e-002 + -1.3706659e-002 + -1.3598525e-002 + -1.3489658e-002 + -1.3377427e-002 + -1.3262741e-002 + -1.3151232e-002 + -1.3049556e-002 + -1.2963140e-002 + -1.2892583e-002 + -1.2832104e-002 + -1.2772374e-002 + -1.2703879e-002 + -1.2620109e-002 + -1.2518145e-002 + -1.2399494e-002 + -1.2268782e-002 + -1.2129701e-002 + -1.1985662e-002 + -1.1841824e-002 + -1.1703167e-002 + -1.1571668e-002 + -1.1447520e-002 + -1.1330335e-002 + -1.1217193e-002 + -1.1103133e-002 + -1.0984045e-002 + -1.0858017e-002 + -1.0724107e-002 + -1.0582905e-002 + -1.0436993e-002 + -1.0288144e-002 + -1.0137057e-002 + -9.9832466e-003 + -9.8243956e-003 + -9.6586037e-003 + -9.4859779e-003 + -9.3090542e-003 + -9.1326730e-003 + -8.9609430e-003 + -8.7947831e-003 + -8.6337460e-003 + -8.4771777e-003 + -8.3241192e-003 + -8.1740716e-003 + -8.0267849e-003 + -7.8817895e-003 + -7.7387365e-003 + -7.5979061e-003 + -7.4592588e-003 + -7.3215019e-003 + -7.1829247e-003 + -7.0416048e-003 + -6.8964352e-003 + -6.7487765e-003 + -6.6009525e-003 + -6.4545874e-003 + -6.3104668e-003 + -6.1683941e-003 + -6.0276020e-003 + -5.8875214e-003 + -5.7480652e-003 + -5.6094793e-003 + -5.4721860e-003 + -5.3365358e-003 + -5.2030345e-003 + -5.0725680e-003 + -4.9455153e-003 + -4.8211924e-003 + -4.6987060e-003 + -4.5773104e-003 + -4.4567098e-003 + -4.3373485e-003 + -4.2191080e-003 + -4.1015462e-003 + -3.9850025e-003 + -3.8700935e-003 + -3.7573339e-003 + -3.6472238e-003 + -3.5401109e-003 + -3.4357524e-003 + -3.3335115e-003 + -3.2326399e-003 + -3.1320632e-003 + -3.0312102e-003 + -2.9310758e-003 + -2.8332308e-003 + -2.7387560e-003 + -2.6482800e-003 + -2.5617525e-003 + -2.4790451e-003 + -2.4002130e-003 + -2.3245700e-003 + -2.2514608e-003 + -2.1807290e-003 + -2.1115913e-003 + -2.0432817e-003 + -1.9757991e-003 + -1.9091517e-003 + -1.8431897e-003 + -1.7779036e-003 + -1.7131444e-003 + -1.6487458e-003 + -1.5850200e-003 + -1.5224999e-003 + -1.4615707e-003 + -1.4025192e-003 + -1.3455532e-003 + -1.2905337e-003 + -1.2372304e-003 + -1.1852833e-003 + -1.1338799e-003 + -1.0827394e-003 + -1.0318968e-003 + -9.8103604e-004 + -9.3014974e-004 + -8.7953617e-004 + -8.2954608e-004 + -7.8039032e-004 + -7.3189019e-004 + -6.8355363e-004 + -6.3499722e-004 + -5.8622743e-004 + -5.3733130e-004 + -4.8857885e-004 + -4.4074319e-004 + -3.9437589e-004 + -3.4947781e-004 + -3.0621726e-004 + -2.6476547e-004 + -2.2480839e-004 + -1.8600801e-004 + -1.4830449e-004 + -1.1150857e-004 + -7.5427963e-005 + -4.0193754e-005 + -5.9187905e-006 + 2.7367341e-005 + 5.9416383e-005 + 9.0015734e-005 + 1.1925092e-004 + 1.4711652e-004 + 1.7358693e-004 + 1.9874413e-004 + 2.2256918e-004 + 2.4520624e-004 + 2.6686606e-004 + 2.8757222e-004 + 3.0736835e-004 + 3.2635573e-004 + 3.4454302e-004 + 3.6186791e-004 + 3.7824376e-004 + 3.9363901e-004 + 4.0812084e-004 + 4.2167613e-004 + 4.3430238e-004 + 4.4607962e-004 + 4.5703196e-004 + 4.6722360e-004 + 4.7670788e-004 + 4.8539947e-004 + 4.9327540e-004 + 5.0040845e-004 + 5.0676316e-004 + 5.1227903e-004 + 5.1701953e-004 + 5.2106822e-004 + 5.2440728e-004 + 5.2699854e-004 + 5.2886778e-004 + 5.3005554e-004 + 5.3055995e-004 + 5.3038204e-004 + 5.2958735e-004 + 5.2822764e-004 + 5.2629855e-004 + 5.2379855e-004 + 5.2073994e-004 + 5.1712766e-004 + 5.1296566e-004 + 5.0827350e-004 + 5.0308602e-004 + 4.9741798e-004 + 4.9126515e-004 + 4.8464443e-004 + 4.7756163e-004 + 4.7001795e-004 + 4.6204393e-004 + 4.5365473e-004 + 4.4485487e-004 + 4.3567154e-004 + 4.2612228e-004 + 4.1619890e-004 + 4.0590752e-004 + 3.9526916e-004 + 3.8429372e-004 + 3.7299472e-004 + 3.6139254e-004 + 3.4949998e-004 + 3.3732648e-004 + 3.2488543e-004 + 3.1218817e-004 + 2.9924253e-004 + 2.8606219e-004 + 2.7266142e-004 + 2.5905219e-004 + 2.4524912e-004 + 2.3126308e-004 + 2.1710469e-004 + 2.0278893e-004 + 1.8832909e-004 + 1.7373625e-004 + 1.5902236e-004 + 1.4420082e-004 + 1.2928354e-004 + 1.1428143e-004 + 9.9206888e-005 + 8.4072157e-005 + 6.8889325e-005 + 5.3670940e-005 + 3.8429483e-005 + 2.3177653e-005 + 7.9281536e-006 + -7.3064518e-006 + -2.2513496e-005 diff --git a/source/user/manual/model/element.rst b/source/user/manual/model/element.rst index 6055281c..7dc4b0a7 100644 --- a/source/user/manual/model/element.rst +++ b/source/user/manual/model/element.rst @@ -172,6 +172,9 @@ The following subsections contain information about **$eleType** and the number elements/TwentyEightNodeBrickUP elements/SSPquadUP elements/SSPbrickUP + elements/Tri31UP + elements/SSPtetUP + elements/TenNodeTetrahedronUP 12. Contact diff --git a/source/user/manual/model/elements/SSPtetUP.rst b/source/user/manual/model/elements/SSPtetUP.rst new file mode 100644 index 00000000..06472856 --- /dev/null +++ b/source/user/manual/model/elements/SSPtetUP.rst @@ -0,0 +1,209 @@ +.. _SSPtetUP: + +SSPtetUP Element +^^^^^^^^^^^^^^^^ + +This command constructs an experimental four-node, single-point tetrahedral +element with a stabilized u-p formulation for fluid-saturated porous media. +Displacements and pore pressure use linear interpolation. Use with +``-ndm 3 -ndf 4`` and an ND material supporting ``ThreeDimensional`` behavior. + +.. function:: element SSPtetUP $eleTag $N1 $N2 $N3 $N4 $matTag $fBulk $fDen $k1 $k2 $k3 $e $alpha <$b1 $b2 $b3> <-lumped> + +.. csv-table:: + :header: "Argument", "Type", "Description" + :widths: 18, 12, 70 + + "$eleTag", "integer", "Unique element tag." + "$N1 ... $N4", "integer", "Four distinct corner-node tags; each node has four DOFs." + "$matTag", "integer", "Tag of an ND material supporting a six-component ThreeDimensional copy." + "$fBulk", "float", "Positive pore-fluid bulk modulus." + "$fDen", "float", "Nonnegative pore-fluid mass density." + "$k1 $k2 $k3", "float", "Nonnegative permeability mobilities in the global x; y; and z directions." + "$e", "float", "Nonnegative void ratio; porosity is e/(1+e)." + "$alpha", "float", "Nonnegative pressure-rate gradient stabilization coefficient; units are length squared divided by stress." + "$b1 $b2 $b3", "float", "Optional body accelerations in global x; y; and z; default zero. Supply all three together." + "-lumped", "string", "Optional flag to lump displacement mass only; pressure storage and stabilization remain consistent." + +.. note:: + + The registered element command is case-sensitive: use ``SSPtetUP``. + +Node and pressure conventions +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Each node has three displacement DOFs and one generalized pressure DOF: + +* DOFs 1-3 are the solid displacements. +* The velocity of DOF 4 is pore pressure. +* The acceleration of DOF 4 is the pore-pressure rate. +* The displacement of DOF 4 is the time integral of pore pressure. + +For example, ``nodeVel $nodeTag 4`` returns pore pressure. To prescribe a drained +boundary with initially zero pressure, fix DOF 4. Either tetrahedral orientation +is accepted, but a zero-volume or numerically degenerate element is rejected. + +.. figure:: figures/SSPtetUP/SSPtetUP.png + :name: SSPtetUPNodeNumbering + :alt: Four-node SSPtetUP tetrahedron in perspective with two shaded faces, a dashed rear edge, and a blue pore-water pressure circle at each numbered corner. + :width: 800px + :align: center + + SSPtetUP node numbering. The blue circle at each corner node represents + pore-water pressure. Shaded faces show the three-dimensional perspective; + the dashed edge is hidden in this view. + +Formulation and use +~~~~~~~~~~~~~~~~~~~ + +The element uses one constitutive integration point, constant solid strain, +and exact tetrahedral integrals for consistent mass and fluid storage. +The pressure stabilization matrix is + +.. math:: + + T_{ij} = \alpha V\,\nabla N_i\cdot\nabla N_j, + +where :math:`V` is element volume. It adds artificial compressibility through +the pressure rate. The pressure block of the generalized mass matrix is +:math:`-(S+T)`, where :math:`S` is the storage matrix with coefficient +:math:`n/K_f` and :math:`n=e/(1+e)`. Positive ``alpha`` enables stabilization; +zero disables it. This coefficient is not the dimensionless Biot coefficient. + +Choose ``alpha`` with consistent units and assess mesh, time-step, and parameter +sensitivity. The brick-paper estimate +:math:`\alpha=\alpha_0 h^2/(K_s+4G_s/3)` is a starting point for investigation, +not a calibrated tetrahedral prescription. Here :math:`K_s` and :math:`G_s` +denote the solid-phase bulk and shear moduli used in that estimate. + +Use a transient integrator, such as Newmark, with a general or +symmetric-indefinite solver. Static analysis alone does not assemble the +pressure equations, which are in the generalized mass and damping matrices. +The coupled generalized mass matrix is indefinite. + +The material supplies effective skeleton stresses and the mixture density used +for solid inertia and gravity. ``fDen`` enters the fluid gravity term. The +permeabilities are the mobilities in +:math:`\boldsymbol{q}=\boldsymbol{k}(-\nabla p+\rho_f\boldsymbol{b})`; +hydraulic conductivity must be converted using fluid unit weight when needed. +Rayleigh damping applies only to the displacement block. + +.. warning:: + + This is a research formulation. A linear tetrahedron has no solid hourglass + modes, so no brick hourglass stiffness is added. Pressure stabilization does + not remove bending or drained-skeleton volumetric locking, and does not + guarantee monotone pressure fields. Validate mesh and parameter sensitivity + for the intended application. + +Output and parameters +~~~~~~~~~~~~~~~~~~~~~ + +Valid :ref:`elementRecorder` queries include: + +* ``force`` or ``forces``: 16-component resisting force without inertia. +* ``stress`` or ``stress3D6``: six effective-stress components at the material point. +* ``strain`` or ``strain3D6``: six strain components at the material point. +* ``mass``, ``damping``, and ``stiffness``: the corresponding 16-by-16 matrices. +* ``material 1 ...``: a response supported by the sole material point. + +Stress and strain ordering is ``xx yy zz xy yz xz``; shear strains are engineering +shear strains. Record pore pressure with a Node recorder using ``-dof 4 vel``. +Element parameters ``xPerm``, ``yPerm``, ``zPerm``, and ``alpha`` may be updated +during analysis. Other parameter requests are forwarded to the material. +Boundary tractions and fluid fluxes require consistent nodal loads; no +tetrahedral face-load parser is provided. + +.. admonition:: Example + + These examples create the element and pressure recorder. Add boundary + conditions, loads, and transient analysis commands for a complete analysis. + Numerical values must use a consistent unit system. + + 1. **Tcl Code** + + .. code-block:: tcl + + wipe + model BasicBuilder -ndm 3 -ndf 4 + node 1 0.0 0.0 0.0 + node 2 1.0 0.0 0.0 + node 3 0.0 1.0 0.0 + node 4 0.0 0.0 1.0 + nDMaterial ElasticIsotropic 1 12000.0 0.25 2.0 + element SSPtetUP 1 1 2 3 4 1 24000.0 1.0 1.0e-6 1.0e-6 1.0e-6 0.6 2.0e-5 0.0 0.0 -9.81 + recorder Node -file SSPtetUP_pressure.out -time -node 1 2 3 4 -dof 4 vel + + 2. **Python Code** + + .. code-block:: python + + import openseespy.opensees as ops + + ops.wipe() + ops.model('basic', '-ndm', 3, '-ndf', 4) + ops.node(1, 0.0, 0.0, 0.0) + ops.node(2, 1.0, 0.0, 0.0) + ops.node(3, 0.0, 1.0, 0.0) + ops.node(4, 0.0, 0.0, 1.0) + ops.nDMaterial('ElasticIsotropic', 1, 12000.0, 0.25, 2.0) + ops.element('SSPtetUP', 1, 1, 2, 3, 4, 1, + 24000.0, 1.0, 1.0e-6, 1.0e-6, 1.0e-6, 0.6, 2.0e-5, + 0.0, 0.0, -9.81) + ops.recorder('Node', '-file', 'SSPtetUP_pressure.out', '-time', + '-node', 1, 2, 3, 4, '-dof', 4, 'vel') + +Reference: C. R. McGann, P. Arduino, and P. Mackenzie-Helnwein, +*A stabilized single-point finite element formulation for three-dimensional +dynamic analysis of saturated soils* (2013). The pressure stabilization is +adapted from the brick formulation; that paper does not validate this +tetrahedral implementation. + +Code developed by: Pedro Arduino, University of Washington and Marlio Molina Manrique, Politecnico di Torino. + +Three-dimensional free-field comparison example +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The example in :doc:`user/examples/UWExamples/freeField3D_UPcomparison <../../../examples/UWExamples/freeField3D_UPcomparison/index>` compares +the free-field response of a three-dimensional soil column modeled using +:ref:`SSPbrickUP`, :ref:`brickUP `, :ref:`TenNodeTetrahedronUP`, and +``SSPtetUP`` elements. A mixed ``SSPbrickUP`` / ``SSPtetUP`` mesh is also +included. The comparisons cover gravity-response profiles and dynamic +displacement and pore-water pressure histories. + +.. figure:: ../../../examples/UWExamples/freeField3D_UPcomparison/figures/freeField3D_schematic.png + :name: SSPtetUPFreeField3DComparison + :alt: Three-dimensional layered free-field soil column showing the water table, base motion input, and mid-column and ground-surface comparison locations. + :width: 800px + :align: center + + Three-dimensional free-field soil column used for the element comparison. + +All Tcl model files are available for download: + +* :download:`SSPbrickUP model <../../../examples/UWExamples/freeField3D_UPcomparison/freeField3D_SSPbrickUP.tcl>` +* :download:`brickUP model <../../../examples/UWExamples/freeField3D_UPcomparison/freeField3D_BrickUP.tcl>` +* :download:`TenNodeTetrahedronUP model <../../../examples/UWExamples/freeField3D_UPcomparison/freeField3D_TenNodeTetrahedronUP.tcl>` +* :download:`SSPtetUP model <../../../examples/UWExamples/freeField3D_UPcomparison/freeField3D_SSPtetUP.tcl>` +* :download:`Mixed SSPbrickUP / SSPtetUP model <../../../examples/UWExamples/freeField3D_UPcomparison/freeField3D_mixed.tcl>` + +Input velocity record used by all Tcl models: +:download:`yerbaNSvelocity.out <../../../examples/UWExamples/freeField3D_UPcomparison/yerbaNSvelocity.out>`. +Save this file in the same directory as the Tcl model files. + +Python postprocessing scripts and their shared utility are also available: + +* :download:`Gravity-response comparison <../../../examples/UWExamples/freeField3D_UPcomparison/plot_gravity_results_comparison_3D.py>` +* :download:`Dynamic-history comparison <../../../examples/UWExamples/freeField3D_UPcomparison/plot_dynamic_history_comparison_3D.py>` +* :download:`Shared plotting and result-reading utility <../../../examples/UWExamples/freeField3D_UPcomparison/freefield_plot_utils.py>` + +Keep the Python files together beside the ``results`` directory generated by +the Tcl models. The plotting scripts use NumPy and Matplotlib. Scripts for +generating the :download:`column schematic <../../../examples/UWExamples/freeField3D_UPcomparison/freeField3D_schematic.py>` +and :download:`mesh comparison <../../../examples/UWExamples/freeField3D_UPcomparison/freeField3D_meshes.py>` +are included as well. + +.. toctree:: + :hidden: + + ../../../examples/UWExamples/freeField3D_UPcomparison/index diff --git a/source/user/manual/model/elements/TenNodeTetrahedronUP.rst b/source/user/manual/model/elements/TenNodeTetrahedronUP.rst new file mode 100644 index 00000000..9593a514 --- /dev/null +++ b/source/user/manual/model/elements/TenNodeTetrahedronUP.rst @@ -0,0 +1,228 @@ +.. _TenNodeTetrahedronUP: + +TenNodeTetrahedronUP Element +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +This command constructs a ten-node displacement / four-node pressure +tetrahedral element for three-dimensional analysis of fluid-saturated porous +media. Quadratic displacement interpolation is used at all ten nodes and +linear pressure interpolation at the four corners. The element has 34 DOFs +and uses ND materials supporting ``ThreeDimensional`` behavior. + +.. function:: element TenNodeTetrahedronUP $eleTag $N1 $N2 $N3 $N4 $N5 $N6 $N7 $N8 $N9 $N10 $matTag $bulk $fDen $k1 $k2 $k3 <$b1 $b2 $b3> + +.. csv-table:: + :header: "Argument", "Type", "Description" + :widths: 18, 12, 70 + + "$eleTag", "integer", "Unique element tag." + "$N1 ... $N4", "integer", "Four corner-node tags; each node must have four DOFs." + "$N5 ... $N10", "integer", "Six midside-node tags in the edge order given below; each node must have three DOFs." + "$matTag", "integer", "Tag of an ND material supporting a six-component ThreeDimensional copy." + "$bulk", "float", "Positive combined storage bulk modulus Kc; the storage coefficient is 1/Kc." + "$fDen", "float", "Nonnegative pore-fluid mass density." + "$k1 $k2 $k3", "float", "Nonnegative permeability mobilities in the global x; y; and z directions." + "$b1 $b2 $b3", "float", "Optional body accelerations in global x; y; and z; default zero." + +Node ordering and model builders +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Create the corner nodes using ``-ndm 3 -ndf 4``, then switch to +``-ndm 3 -ndf 3`` to create the midside nodes. Both groups remain in the same +domain. Do not create all ten nodes with four DOFs: the element checks the +required DOF count for each node. + +.. csv-table:: Midside-node order + :header: "Node argument", "Edge between corner nodes" + :widths: 25, 40 + + "$N5", "$N1-$N2" + "$N6", "$N2-$N3" + "$N7", "$N3-$N1" + "$N8", "$N1-$N4" + "$N9", "$N3-$N4" + "$N10", "$N2-$N4" + +In particular, node 9 belongs to edge 3-4 and node 10 to edge 2-4. For a +straight-sided tetrahedron, place the six midside nodes at the edge midpoints. +Avoid degenerate or inverted geometry and verify the Jacobian throughout the +element for distorted meshes. + +.. figure:: figures/TenNodeTetrahedronUP/TenNodeTetrahedronUP.png + :name: TenNodeTetrahedronUPNodeNumbering + :alt: Ten-node tetrahedron in perspective with two shaded faces, corner nodes 1 through 4, midside nodes 5 through 10, and blue pore-water pressure circles only at the four corners. + :width: 800px + :align: center + + TenNodeTetrahedronUP node numbering. Blue circles represent pore-water + pressure at corner nodes 1-4. Midside nodes 5-10 have no independent + pressure DOF. Node 9 lies on edge 3-4 and node 10 on edge 2-4; + the dashed edge is hidden in this view. + +Pressure and storage conventions +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +At corner nodes, DOFs 1-3 are solid displacements and the velocity of DOF 4 is +pore pressure. Its acceleration is the pressure rate and its displacement is +the time integral of pressure. Midside nodes have displacement DOFs only and +have no independent pressure DOF. A pressure field within the element is +interpolated from the four corner pressures. + +Fix DOF 4 at a corner to impose a drained boundary with initially zero pressure. +Record pressure using a Node recorder with ``-dof 4 vel`` on corner nodes only, +or use the element's ``pressure`` response. + +.. important:: + + ``bulk`` is a combined storage bulk modulus, not automatically the pore-fluid + bulk modulus. The implementation forms + + .. math:: + + S_{ij} = \int_{\Omega} \frac{N_i^p N_j^p}{K_c}\,dV. + + Supply :math:`K_c` corresponding to the intended storage coefficient. + If the intended coefficient is :math:`n/K_f`, use :math:`K_c=K_f/n`. + The element does not accept a void ratio or compute this conversion itself. + +The element has no ``alpha`` argument, no added pressure-gradient stabilization +term, and no ``-lumped`` option. It uses quadratic displacement / linear pressure +interpolation rather than the equal-order stabilized formulation of ``SSPtetUP``. +Solid stiffness and coupled terms use four integration points; displacement +mass uses an 11-point rule. Four constitutive material copies are maintained. + +Use a transient integrator, such as Newmark, with a general or +symmetric-indefinite solver. Pressure storage and coupling are assembled in +the generalized mass and damping matrices; static analysis alone does not +assemble the coupled pressure equations. The generalized pressure-storage +mass block is negative by the shifted u-p convention. + +The material provides effective skeleton stresses and the mixture density used +for displacement inertia and gravity. ``fDen`` enters fluid gravity. Body +inputs are accelerations. The permeabilities are the mobilities in +:math:`\boldsymbol{q}=\boldsymbol{k}(-\nabla p+\rho_f\boldsymbol{b})`; +convert hydraulic conductivity using fluid unit weight when needed. +Rayleigh damping is restricted to displacement blocks. SelfWeight loads are +supported; boundary tractions and fluxes require consistent nodal loads. + +Output and parameters +~~~~~~~~~~~~~~~~~~~~~ + +Valid :ref:`elementRecorder` queries include: + +* ``force`` or ``forces``: 34-component resisting force without inertia. + Aliases are ``globalForce`` and ``globalForces``. +* ``forceIncInertia`` or ``forcesIncInertia``: resisting force including velocity + and acceleration terms. +* ``stress`` or ``stresses``: 24 effective-stress values, six per integration point. +* ``strain`` or ``strains``: 24 strain values, six per integration point. +* ``pressure`` or ``pressures``: four corner pressures in node order 1-4. + Aliases are ``porePressure`` and ``porePressures``. +* ``mass``, ``damping``, and ``stiffness``: 34-by-34 matrices. ``damp`` and + ``coupling`` alias the full damping matrix; ``stiff`` aliases stiffness. +* ``material $matNum ...``: a material response at integration point 1-4. + ``integrPoint`` and ``integrationPoint`` are aliases for ``material``. + +Stress and strain components at each integration point are ordered +``xx yy zz xy yz xz``; shear strains are engineering shear strains. Element +parameters ``xPerm``, ``yPerm``, and ``zPerm`` support permeability updates; +other parameter requests are forwarded to the material points. + +.. admonition:: Example + + These examples create a straight-sided element and pressure recorder. + Add supports, loads, and transient analysis commands for a complete analysis. + The storage example uses porosity 0.375 and fluid bulk modulus 24000.0, + giving a combined storage bulk modulus of 64000.0. Numerical values must + use a consistent unit system. + + 1. **Tcl Code** + + .. code-block:: tcl + + wipe + model BasicBuilder -ndm 3 -ndf 4 + node 1 0.0 0.0 0.0 + node 2 1.0 0.0 0.0 + node 3 0.0 1.0 0.0 + node 4 0.0 0.0 1.0 + model BasicBuilder -ndm 3 -ndf 3 + node 5 0.5 0.0 0.0 + node 6 0.5 0.5 0.0 + node 7 0.0 0.5 0.0 + node 8 0.0 0.0 0.5 + node 9 0.0 0.5 0.5 + node 10 0.5 0.0 0.5 + nDMaterial ElasticIsotropic 1 12000.0 0.25 2.0 + element TenNodeTetrahedronUP 1 1 2 3 4 5 6 7 8 9 10 1 64000.0 1.0 1.0e-6 1.0e-6 1.0e-6 0.0 0.0 -9.81 + recorder Node -file TenNodeTetrahedronUP_pressure.out -time -node 1 2 3 4 -dof 4 vel + + 2. **Python Code** + + .. code-block:: python + + import openseespy.opensees as ops + + ops.wipe() + ops.model('basic', '-ndm', 3, '-ndf', 4) + ops.node(1, 0.0, 0.0, 0.0) + ops.node(2, 1.0, 0.0, 0.0) + ops.node(3, 0.0, 1.0, 0.0) + ops.node(4, 0.0, 0.0, 1.0) + ops.model('basic', '-ndm', 3, '-ndf', 3) + ops.node(5, 0.5, 0.0, 0.0) + ops.node(6, 0.5, 0.5, 0.0) + ops.node(7, 0.0, 0.5, 0.0) + ops.node(8, 0.0, 0.0, 0.5) + ops.node(9, 0.0, 0.5, 0.5) + ops.node(10, 0.5, 0.0, 0.5) + ops.nDMaterial('ElasticIsotropic', 1, 12000.0, 0.25, 2.0) + ops.element('TenNodeTetrahedronUP', 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, + 64000.0, 1.0, 1.0e-6, 1.0e-6, 1.0e-6, 0.0, 0.0, -9.81) + ops.recorder('Node', '-file', 'TenNodeTetrahedronUP_pressure.out', '-time', + '-node', 1, 2, 3, 4, '-dof', 4, 'vel') + +Code developed by: Marlio Molina Manrique, Politecnico di Torino, and Pedro +Arduino, University of Washington. + +Three-dimensional free-field comparison example +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The example in :doc:`user/examples/UWExamples/freeField3D_UPcomparison <../../../examples/UWExamples/freeField3D_UPcomparison/index>` compares +the free-field response of a three-dimensional soil column modeled using +:ref:`SSPbrickUP`, :ref:`brickUP `, :ref:`TenNodeTetrahedronUP`, and +``SSPtetUP`` elements. A mixed ``SSPbrickUP`` / ``SSPtetUP`` mesh is also +included. The comparisons cover gravity-response profiles and dynamic +displacement and pore-water pressure histories. + +.. figure:: ../../../examples/UWExamples/freeField3D_UPcomparison/figures/freeField3D_schematic.png + :name: TenNodeTetrahedronUPFreeField3DComparison + :alt: Three-dimensional layered free-field soil column showing the water table, base motion input, and mid-column and ground-surface comparison locations. + :width: 800px + :align: center + + Three-dimensional free-field soil column used for the element comparison. + +All Tcl model files are available for download: + +* :download:`SSPbrickUP model <../../../examples/UWExamples/freeField3D_UPcomparison/freeField3D_SSPbrickUP.tcl>` +* :download:`brickUP model <../../../examples/UWExamples/freeField3D_UPcomparison/freeField3D_BrickUP.tcl>` +* :download:`TenNodeTetrahedronUP model <../../../examples/UWExamples/freeField3D_UPcomparison/freeField3D_TenNodeTetrahedronUP.tcl>` +* :download:`SSPtetUP model <../../../examples/UWExamples/freeField3D_UPcomparison/freeField3D_SSPtetUP.tcl>` +* :download:`Mixed SSPbrickUP / SSPtetUP model <../../../examples/UWExamples/freeField3D_UPcomparison/freeField3D_mixed.tcl>` + +Input velocity record used by all Tcl models: +:download:`yerbaNSvelocity.out <../../../examples/UWExamples/freeField3D_UPcomparison/yerbaNSvelocity.out>`. +Save this file in the same directory as the Tcl model files. + +Python postprocessing scripts and their shared utility are also available: + +* :download:`Gravity-response comparison <../../../examples/UWExamples/freeField3D_UPcomparison/plot_gravity_results_comparison_3D.py>` +* :download:`Dynamic-history comparison <../../../examples/UWExamples/freeField3D_UPcomparison/plot_dynamic_history_comparison_3D.py>` +* :download:`Shared plotting and result-reading utility <../../../examples/UWExamples/freeField3D_UPcomparison/freefield_plot_utils.py>` + +Keep the Python files together beside the ``results`` directory generated by +the Tcl models. The plotting scripts use NumPy and Matplotlib. Scripts for +generating the :download:`column schematic <../../../examples/UWExamples/freeField3D_UPcomparison/freeField3D_schematic.py>` +and :download:`mesh comparison <../../../examples/UWExamples/freeField3D_UPcomparison/freeField3D_meshes.py>` +are included as well. diff --git a/source/user/manual/model/elements/Tri31UP.rst b/source/user/manual/model/elements/Tri31UP.rst new file mode 100644 index 00000000..29266a3a --- /dev/null +++ b/source/user/manual/model/elements/Tri31UP.rst @@ -0,0 +1,197 @@ +.. _Tri31UP: + +Tri31UP Element +^^^^^^^^^^^^^^^ + +This command constructs an experimental three-node, single-point triangle with +a stabilized u-p formulation for plane-strain analysis of fluid-saturated porous +media. Use with ``-ndm 2 -ndf 3`` and an ND material supporting ``PlaneStrain``. + +.. function:: element Tri31UP $eleTag $N1 $N2 $N3 $matTag $thick $fBulk $fDen $k1 $k2 $e $alpha <$b1 $b2> <-lumped> + +.. csv-table:: + :header: "Argument", "Type", "Description" + :widths: 18, 12, 70 + + "$eleTag", "integer", "Unique element tag." + "$N1 $N2 $N3", "integer", "Three distinct corner-node tags; each node has three DOFs." + "$matTag", "integer", "Tag of an ND material supporting a three-component PlaneStrain copy." + "$thick", "float", "Positive out-of-plane thickness." + "$fBulk", "float", "Positive pore-fluid bulk modulus." + "$fDen", "float", "Nonnegative pore-fluid mass density." + "$k1 $k2", "float", "Nonnegative permeability mobilities in the global x and y directions." + "$e", "float", "Nonnegative void ratio; porosity is e/(1+e)." + "$alpha", "float", "Nonnegative pressure-rate gradient stabilization coefficient; units are length squared divided by stress." + "$b1 $b2", "float", "Optional body accelerations in global x and y; default zero. Supply both together." + "-lumped", "string", "Optional flag to lump displacement mass only; pressure storage and stabilization remain consistent." + +Node and pressure conventions +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +DOFs 1 and 2 are solid displacements. The velocity of DOF 3 is pore pressure, +its acceleration is the pore-pressure rate, and its displacement is the time +integral of pore pressure. For example, ``nodeVel $nodeTag 3`` returns pressure. +Fix DOF 3 to impose a drained boundary with initially zero pressure. + +.. figure:: figures/Tri31UP/Tri31UP.png + :name: Tri31UPNodeDOFs + :alt: Scalene three-node Tri31UP triangle with a blue pore-water pressure circle superimposed on each numbered node. + :width: 800px + :align: center + + Tri31UP node numbering. The blue circle at each node represents + pore-water pressure. + +Clockwise and counterclockwise connectivity are accepted; degenerate triangles +are rejected. This element supports plane strain only. Its argument order is +different from the displacement-only ``Tri31`` command. + +Formulation and use +~~~~~~~~~~~~~~~~~~~ + +The solid uses constant strain and one material point. Consistent displacement +mass and fluid storage are integrated exactly. With :math:`A` the triangle area +and :math:`t` its thickness, the pressure stabilization matrix is + +.. math:: + + T_{ij} = \alpha tA\,\nabla N_i\cdot\nabla N_j. + +It enters the pressure block of the generalized mass matrix as :math:`-(S+T)`. +The storage coefficient in :math:`S` is :math:`n/K_f`, with +:math:`n=e/(1+e)`. Positive ``alpha`` enables pressure-rate stabilization; zero +disables it. ``alpha`` is dimensional, rather than a Biot coefficient. + +The quadrilateral-paper estimate +:math:`\alpha=h^2/[4(K_s+4G_s/3)]` can guide initial experiments, but is not +calibrated here for triangles. Here :math:`K_s` and :math:`G_s` are solid-phase +bulk and shear moduli. Specify a length scale and assess mesh, time-step, and +alpha sensitivity. The stabilization adds artificial compressibility to +pressure rate and does not alter steady permeability. + +Use a transient integrator, such as Newmark, and a general or +symmetric-indefinite solver. Static analysis alone omits the pressure equations, +which reside in the generalized mass and damping matrices. The generalized +mass matrix is indefinite. Rayleigh damping affects displacement blocks only. + +The material supplies effective skeleton stresses and the mixture density used +for inertia and gravity. ``fDen`` enters fluid gravity. Body inputs are +accelerations. Permeabilities are the mobilities in +:math:`\boldsymbol{q}=\boldsymbol{k}(-\nabla p+\rho_f\boldsymbol{b})`; +convert hydraulic conductivity using fluid unit weight when needed. + +.. warning:: + + This is a research formulation. A constant-strain triangle has no solid + hourglass modes. The quadrilateral's solid hourglass and enhanced-strain + terms are not added. Pressure stabilization does not remove bending or + drained-skeleton volumetric locking, nor guarantee pressure monotonicity. + +Output and parameters +~~~~~~~~~~~~~~~~~~~~~ + +Valid :ref:`elementRecorder` queries include: + +* ``force`` or ``forces``: nine-component resisting force without inertia. +* ``dynamicForce``: resisting force including velocity and acceleration terms. +* ``stress`` or ``stress2D3``: three effective-stress components. +* ``strain`` or ``strain2D3``: three strain components. +* ``mass``, ``damping``, ``stiffness``, and ``initialStiffness``: nine-by-nine matrices. +* ``material 1 ...``: a response supported by the sole material point. + +Stress and strain ordering is ``xx yy xy``; the shear strain is engineering +shear strain. Record pressure with a Node recorder using ``-dof 3 vel``. +Element parameters ``xPerm``, ``yPerm``, and ``alpha`` support runtime updates. +Other parameter requests are forwarded to the material. + +SelfWeight loads are supported. Apply edge tractions and fluid fluxes as +consistent nodal loads. The upper/lower/left/right pressure arguments of +``SSPquadUP`` are not supported by this triangular element. + +.. admonition:: Example + + These examples create the element and pressure recorder. Add boundary + conditions, loads, and transient analysis commands for a complete analysis. + Numerical values must use a consistent unit system. + + 1. **Tcl Code** + + .. code-block:: tcl + + wipe + model BasicBuilder -ndm 2 -ndf 3 + node 1 0.0 0.0 + node 2 1.0 0.0 + node 3 0.0 1.0 + nDMaterial ElasticIsotropic 1 12000.0 0.25 2.0 + element Tri31UP 1 1 2 3 1 0.7 24000.0 1.0 1.0e-6 1.0e-6 0.6 2.0e-5 0.0 -9.81 + recorder Node -file Tri31UP_pressure.out -time -node 1 2 3 -dof 3 vel + + 2. **Python Code** + + .. code-block:: python + + import openseespy.opensees as ops + + ops.wipe() + ops.model('basic', '-ndm', 2, '-ndf', 3) + ops.node(1, 0.0, 0.0) + ops.node(2, 1.0, 0.0) + ops.node(3, 0.0, 1.0) + ops.nDMaterial('ElasticIsotropic', 1, 12000.0, 0.25, 2.0) + ops.element('Tri31UP', 1, 1, 2, 3, 1, + 0.7, 24000.0, 1.0, 1.0e-6, 1.0e-6, 0.6, 2.0e-5, + 0.0, -9.81) + ops.recorder('Node', '-file', 'Tri31UP_pressure.out', '-time', + '-node', 1, 2, 3, '-dof', 3, 'vel') + +Reference: C. R. McGann, P. Arduino, and P. Mackenzie-Helnwein, +*Stabilized single-point 4-node quadrilateral element for dynamic analysis of +fluid saturated porous media* (2011 preprint). The pressure stabilization is +adapted from the quadrilateral formulation; that paper does not validate this +triangular implementation. + +Code developed by: Pedro Arduino, University of Washington. + +Two-dimensional free-field comparison example +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The example in :doc:`user/examples/UWExamples/freeField2D_UPcomparison <../../../examples/UWExamples/freeField2D_UPcomparison/index>` +compares the plane-strain free-field response of a soil column modeled using +:ref:`SSPquadUP` and ``Tri31UP`` elements. The comparisons cover +gravity-response profiles and dynamic displacement and pore-water pressure +histories at mid-column and at the ground surface. + +.. figure:: ../../../examples/UWExamples/freeField2D_UPcomparison/figures/freeField2D_schematic.png + :name: Tri31UPFreeField2DComparison + :alt: Two-dimensional layered free-field soil column showing the water table, base motion input, and mid-column and ground-surface comparison locations. + :width: 800px + :align: center + + Two-dimensional free-field soil column used for the element comparison. + +All Tcl model files are available for download: + +* :download:`SSPquadUP model <../../../examples/UWExamples/freeField2D_UPcomparison/freeField2D_SSPquadUP.tcl>` +* :download:`Tri31UP model <../../../examples/UWExamples/freeField2D_UPcomparison/freeField2D_Tri31UP.tcl>` + +Input velocity record used by both Tcl models: +:download:`yerbaNSvelocity.out <../../../examples/UWExamples/freeField2D_UPcomparison/yerbaNSvelocity.out>`. +Save this file in the same directory as the Tcl model files. + +Python postprocessing scripts and their shared utility are also available: + +* :download:`Gravity-response comparison <../../../examples/UWExamples/freeField2D_UPcomparison/plot_gravity_results_comparison_2D.py>` +* :download:`Dynamic-history comparison <../../../examples/UWExamples/freeField2D_UPcomparison/plot_dynamic_history_comparison_2D.py>` +* :download:`Shared plotting and result-reading utility <../../../examples/UWExamples/freeField2D_UPcomparison/freefield_plot_utils.py>` + +Keep the Python files together beside the ``results`` directory generated by +the Tcl models. The plotting scripts use NumPy and Matplotlib. Scripts for +generating the :download:`column schematic <../../../examples/UWExamples/freeField2D_UPcomparison/freeField2D_schematic.py>` +and :download:`mesh comparison <../../../examples/UWExamples/freeField2D_UPcomparison/freeField2D_meshes.py>` +are included as well. + +.. toctree:: + :hidden: + + ../../../examples/UWExamples/freeField2D_UPcomparison/index diff --git a/source/user/manual/model/elements/figures/SSPtetUP/SSPtetUP.png b/source/user/manual/model/elements/figures/SSPtetUP/SSPtetUP.png new file mode 100644 index 00000000..ff3847a4 Binary files /dev/null and b/source/user/manual/model/elements/figures/SSPtetUP/SSPtetUP.png differ diff --git a/source/user/manual/model/elements/figures/TenNodeTetrahedronUP/TenNodeTetrahedronUP.png b/source/user/manual/model/elements/figures/TenNodeTetrahedronUP/TenNodeTetrahedronUP.png new file mode 100644 index 00000000..ddea4620 Binary files /dev/null and b/source/user/manual/model/elements/figures/TenNodeTetrahedronUP/TenNodeTetrahedronUP.png differ diff --git a/source/user/manual/model/elements/figures/Tri31UP/Tri31UP.png b/source/user/manual/model/elements/figures/Tri31UP/Tri31UP.png new file mode 100644 index 00000000..a7380853 Binary files /dev/null and b/source/user/manual/model/elements/figures/Tri31UP/Tri31UP.png differ