PFC Freeze-Thaw Damage
Explicitly simulate stress-freeze-thaw coupling in PFC using a two-particle system (mineral grains
plus pore-water particles) and the particle-expansion method: cyclic temperature -> unfrozen water
content -> pore-water particle volume growth -> rock-rock bond breakage = frost-heave damage. A constant
axial stress applied by end walls before cycling gives "freeze-thaw under real-time load", as opposed to
the traditional "freeze-thaw first, mechanical test afterwards" route.
Two output tracks:
- Frost-heave deformation: axial / radial / volumetric strain versus cycle number.
- Fracture evolution: crack density banding, dip-angle distribution, tensile/shear ratio.
Parent Skill Relationship
pfc-freeze-thaw-damage is a child skill of pfc-workflow, plugging into P2 (modeling), P4 (solve) and
P5 (post-processing).
- Parent
pfc-workflow: owns the full project lifecycle and decides when freeze-thaw support is needed.
- Child
pfc-freeze-thaw-damage: owns the two-particle specimen, the three bond families, the
temperature -> unfrozen-water -> volume driver, and freeze-thaw-specific statistics.
- Complementary skill (high-temperature route): thermo-mechanical models that use the PFC thermal module
with heat conduction driving grain thermal expansion. This skill does not enable the thermal module;
temperature is assigned uniformly and mapped directly to pore-water particle volume.
- Sibling
pfc-servo-calibration / pfc-modeling-techniques: wall servo control and curve-based
parameter extraction.
- Sibling
pfc-postprocessing: generic figures and exports after solve.
When To Use
- Freeze-thaw deformation and damage assessment for cold-region tunnels, slopes and other rock masses.
- Numerical tests that need coupled "real-time load + freeze-thaw" rather than load-after-thaw.
- Meso-mechanism outputs of frost damage: crack density banding, dip-angle distribution, tensile/shear ratio.
Physical Picture -> Numerical Mapping
| Physical element |
Numerical treatment |
Key points |
| Mineral skeleton |
Mineral particles + rock-rock bonds |
density 2500 kg/m3, radius 0.8-1.0 mm; bonds carry load and may break |
| Pore water |
Pore-water particles |
density 920 kg/m3, radius 0.6-0.8 mm, randomly filling the pores |
| Volumetric expansion on freezing |
Pore-water particle radius scaled to a target volume |
volume increment controlled by rho_w/rho_i and unfrozen water content (Eqs. 1-3) |
| Water-rock / water-water interaction |
Very strong bonds (tensile strength and cohesion 100 MPa) |
transmit frost-heave force only, never allowed to fail |
| Frost-heave damage |
Rock-rock bond breakage registered as a crack |
classify by tensile/shear, radial band, dip-angle bin |
| Real-time axial stress |
Constant sigma_1 applied by top/bottom walls before cycling |
four levels: 0, 0.2 sigma_0, 0.4 sigma_0, 0.6 sigma_0 (sigma_0 = pre-freeze UCS) |
Operating Rules
- Water-rock and water-water bond strengths are set large (e.g. 100 MPa) so they only transmit force and
never break; only rock-rock bonds represent damage.
- After every pore-water volume change, cycle to mechanical equilibrium before advancing temperature
(quasi-static driving).
- Set the minimum temperature where unfrozen water content approaches zero (about -25 to -30 C).
Temperature is assigned uniformly; no hold time for full freezing/thawing is required, and the T > 0 C
branch need not be simulated.
- Apply and servo-stabilize the axial stress sigma_1 before entering the freeze-thaw loop; history
axial/radial strain and crack counts throughout.
- Calibrate UCS and E to within a few percent before any freeze-thaw run (reference case: 2.2% / 3.3%).
Required Inputs
Ask for these if missing:
- PFC version and dimensionality (the reference case is PFC3D, cylinder 50 x 100 mm).
- Rock type, dry density, porosity, target UCS and E for calibration.
- Particle sizes and densities for mineral and pore-water particles.
- Axial stress level(s) as a fraction of pre-freeze UCS, and the number of freeze-thaw cycles.
- Temperature schedule: amplitude, period, and minimum temperature.
- Required outputs: strain histories, crack-count/temperature curves, radial density banding, dip-angle
bins, tensile/shear ratio.
Pipeline
S1 two-particle specimen
-> S2 three bond families + UCS/E calibration
-> S3 end walls apply and servo constant sigma_1
-> S4 freeze-thaw main loop (temperature -> unfrozen water -> particle volume -> equilibrium)
-> S5 deformation and crack statistics (banding / dip angle / tensile-shear)
-> S6 cross-check against measured trends
SOP: Freeze-Thaw Main Loop (7 steps)
- Build the specimen: mineral particles, pore-water particles, and the rock-rock / water-rock /
water-water bond families.
- Record the initial volume V0 of every pore-water particle and assign properties per bond family.
- Read the current mechanical time and compute the current temperature from Eq. (4).
- Compute the unfrozen water content w_u at that temperature from Eq. (3).
- Compute the target volume of every pore-water particle from Eqs. (1)-(2).
- Set the pore-water particle volumes to the target and cycle to mechanical equilibrium.
- Repeat 3-6 until the target number of cycles is reached.
For stress-freeze-thaw coupling, apply and hold sigma_1 with the end walls before step 3.
Meso Parameters and Calibration Baseline
Reference case: Sichuan yellow sandstone, dry density 2.25 g/cm3, cylinder 50 x 100 mm.
| Bond family |
Tensile strength (MPa) |
Modulus (GPa) |
Cohesion (MPa) |
Friction angle (deg) |
kn/ks |
| Rock-rock |
3.10 |
1.5 |
4.5 |
40 |
1.5 |
| Water-rock |
100 |
0.56 |
100 |
0 |
1.5 |
| Water-water |
100 |
0.56 |
100 |
0 |
1.5 |
- Mineral particles: density 2500 kg/m3, radius 0.8-1.0 mm.
- Pore-water particles: density 920 kg/m3, radius 0.6-0.8 mm.
- Calibration result: numerical UCS 73.40 MPa and E 8.72 GPa against test values 75.05 MPa and 9.02 GPa
(about 2.2% and 3.3% error). Match the pre-freeze stress-strain curve before starting freeze-thaw runs.
Post-Processing Recipe (P5)
- Deformation: axial/radial strain histories; volumetric strain versus cycle number. In the companion
laboratory test, strain gauges use quartz-glass temperature compensation to remove gauge-resistance
drift while retaining rock thermal deformation.
- Crack-temperature curve: within a single cycle, crack count rises quickly during cooling and
flattens below about -25 C (where w_u -> 0).
- Radial crack density banding: Eqs. (5)-(6) with a 5 mm sampling interval; verify "surface > interior".
- Dip-angle distribution: angle between crack and specimen axis, binned every 5 degrees.
- Tensile/shear classification: fraction of tensile bond-failure cracks (analogous to AE mechanism statistics).
Canonical Script Map
| Topic |
File |
Purpose |
| Specimen generation |
scripts/gen_ftc_specimen.p3dat |
Two-particle specimen, three bond families, staged save chain. |
| Freeze-thaw driver |
scripts/ftc_cycle.p3fis |
temperature -> unfrozen water -> pore-particle volume -> equilibrium. |
| Axial servo |
scripts/axial_servo.p3fis |
End-wall constant-sigma_1 servo (compute_gain -> servo_walls -> stop_me). |
| Crack statistics |
scripts/crack_stats.py |
Radial density banding, dip-angle bins, tensile/shear classification. |
| Case parameters |
templates/params.yaml |
Meso parameters and cases (sigma_1 levels, cycles, temperature amplitude). |
Staged save chain: ftc_ini -> ftc_bonded -> ftc_state1 -> ftc_cycle_n.
Result-Verification Checklist
- No axial stress: axial and radial strain grow then stabilize after roughly 10 cycles; radial strain
exceeds axial strain (the axial dimension is longer and more constrained); their difference grows then
shrinks and oscillates near 100e-6 after 30 cycles.
- With axial stress: radial strain grows with cycles and accelerates nonlinearly beyond 30 cycles;
axial strain is negative and decreases with cycles (damage accumulation); volumetric strain keeps growing.
In the 0.6 sigma_0 case the specimen fails at about 45 cycles.
- Spatial distribution: crack density near the surface clearly exceeds the interior. For 0.6 sigma_0,
the 0-20 mm band from the axis holds 0.90e7 to 1.17e7 cracks/m3, while the 20-25 mm edge band jumps to
2.45e7 cracks/m3 (interior is triaxially constrained, the surface is nearly free).
- Directionality: low dip angles (0-20 deg) dominate and 80-90 deg is rare. Increasing axial stress
raises the low-angle share (0-5 deg: 10.86% -> 15.01%, +38.21%) and lowers the high-angle share
(85-90 deg: 0.52% -> 0.24%, -85.85%): axial compression suppresses radial crack initiation.
- Mechanism: freeze-thaw failure is tension-dominated (tensile crack fraction > 50% in all cases).
As sigma_1 goes from 0 to 0.6 sigma_0, the tensile share falls 68.76% -> 58.97% (compression induces
some shear).
Limitations and Improvements
- Specimen temperature is uniform and heat conduction is ignored. Improvement: impose a cyclic temperature
boundary on the specimen surface with the PFC thermal module and compute ice-particle volume from the
local real-time temperature.
- Migration of pore water to the freezing front is ignored. Improvement: add a moisture-migration equation
during freezing and scale ice-particle volume by local water content.
Output Contract
A complete handoff back to pfc-workflow should include:
- Calibrated meso parameters and the pre-freeze UCS/E match.
- Bond-family assignment and the justification for unbreakable water bonds.
- Temperature schedule, minimum temperature and the unfrozen-water form used.
- Volume-increment convention actually implemented (see
references/unfrozen-water.md).
- Axial stress level, servo tolerance, cycle count, and the staged save chain.
- Strain histories plus crack banding / dip-angle / tensile-shear statistics.
- Explicit statement of the uniform-temperature and no-migration assumptions.
Local Contents
references/unfrozen-water.md: governing equations, temperature schedule, minimum-temperature choice,
and the volume-increment consistency check.
references/bond-scheme.md: three bond families and how to assign them.
references/findings.md: measured-trend quick reference for result verification.
scripts/: specimen generation, freeze-thaw driver, axial servo, crack statistics.
templates/params.yaml: meso parameters and case matrix.
examples/README.md: how to validate the bundled workflow.
1---2name: pfc-freeze-thaw-damage3description: Simulate stress-freeze-thaw coupling of porous rock in PFC with a two-particle system (mineral grains + pore-water particles): drive pore-particle expansion from temperature via an unfrozen-water-content equation, keep a constant axial stress with an end-wall servo, and post-process frost-heave strains and crack statistics (radial density banding, dip-angle bins, tensile/shear ratio). Use when the user mentions freeze-thaw cycles, frost heave or frost damage, cold-region tunnels or slopes, or coupled stress and freeze-thaw loading.4---56# PFC Freeze-Thaw Damage78Explicitly simulate **stress-freeze-thaw coupling** in PFC using a two-particle system (mineral grains9plus pore-water particles) and the **particle-expansion method**: cyclic temperature -> unfrozen water10content -> pore-water particle volume growth -> rock-rock bond breakage = frost-heave damage. A constant11axial stress applied by end walls before cycling gives "freeze-thaw under real-time load", as opposed to12the traditional "freeze-thaw first, mechanical test afterwards" route.1314Two output tracks:1516- **Frost-heave deformation**: axial / radial / volumetric strain versus cycle number.17- **Fracture evolution**: crack density banding, dip-angle distribution, tensile/shear ratio.1819## Parent Skill Relationship2021`pfc-freeze-thaw-damage` is a child skill of `pfc-workflow`, plugging into P2 (modeling), P4 (solve) and22P5 (post-processing).2324- Parent `pfc-workflow`: owns the full project lifecycle and decides when freeze-thaw support is needed.25- Child `pfc-freeze-thaw-damage`: owns the two-particle specimen, the three bond families, the26 temperature -> unfrozen-water -> volume driver, and freeze-thaw-specific statistics.27- Complementary skill (high-temperature route): thermo-mechanical models that use the PFC thermal module28 with heat conduction driving grain thermal expansion. **This skill does not enable the thermal module**;29 temperature is assigned uniformly and mapped directly to pore-water particle volume.30- Sibling `pfc-servo-calibration` / `pfc-modeling-techniques`: wall servo control and curve-based31 parameter extraction.32- Sibling `pfc-postprocessing`: generic figures and exports after solve.3334## When To Use3536- Freeze-thaw deformation and damage assessment for cold-region tunnels, slopes and other rock masses.37- Numerical tests that need coupled "real-time load + freeze-thaw" rather than load-after-thaw.38- Meso-mechanism outputs of frost damage: crack density banding, dip-angle distribution, tensile/shear ratio.3940## Physical Picture -> Numerical Mapping4142| Physical element | Numerical treatment | Key points |43| --- | --- | --- |44| Mineral skeleton | Mineral particles + rock-rock bonds | density 2500 kg/m3, radius 0.8-1.0 mm; bonds carry load and may break |45| Pore water | Pore-water particles | density 920 kg/m3, radius 0.6-0.8 mm, randomly filling the pores |46| Volumetric expansion on freezing | Pore-water particle radius scaled to a target volume | volume increment controlled by rho_w/rho_i and unfrozen water content (Eqs. 1-3) |47| Water-rock / water-water interaction | Very strong bonds (tensile strength and cohesion 100 MPa) | transmit frost-heave force only, never allowed to fail |48| Frost-heave damage | Rock-rock bond breakage registered as a crack | classify by tensile/shear, radial band, dip-angle bin |49| Real-time axial stress | Constant sigma_1 applied by top/bottom walls before cycling | four levels: 0, 0.2 sigma_0, 0.4 sigma_0, 0.6 sigma_0 (sigma_0 = pre-freeze UCS) |5051## Operating Rules52531. Water-rock and water-water bond strengths are set large (e.g. 100 MPa) so they only transmit force and54 never break; only rock-rock bonds represent damage.552. After every pore-water volume change, cycle to mechanical equilibrium before advancing temperature56 (quasi-static driving).573. Set the minimum temperature where unfrozen water content approaches zero (about -25 to -30 C).58 Temperature is assigned uniformly; no hold time for full freezing/thawing is required, and the T > 0 C59 branch need not be simulated.604. Apply and servo-stabilize the axial stress sigma_1 **before** entering the freeze-thaw loop; history61 axial/radial strain and crack counts throughout.625. Calibrate UCS and E to within a few percent before any freeze-thaw run (reference case: 2.2% / 3.3%).6364## Required Inputs6566Ask for these if missing:6768- PFC version and dimensionality (the reference case is PFC3D, cylinder 50 x 100 mm).69- Rock type, dry density, porosity, target UCS and E for calibration.70- Particle sizes and densities for mineral and pore-water particles.71- Axial stress level(s) as a fraction of pre-freeze UCS, and the number of freeze-thaw cycles.72- Temperature schedule: amplitude, period, and minimum temperature.73- Required outputs: strain histories, crack-count/temperature curves, radial density banding, dip-angle74 bins, tensile/shear ratio.7576## Pipeline7778```79S1 two-particle specimen80 -> S2 three bond families + UCS/E calibration81 -> S3 end walls apply and servo constant sigma_182 -> S4 freeze-thaw main loop (temperature -> unfrozen water -> particle volume -> equilibrium)83 -> S5 deformation and crack statistics (banding / dip angle / tensile-shear)84 -> S6 cross-check against measured trends85```8687## SOP: Freeze-Thaw Main Loop (7 steps)88891. Build the specimen: mineral particles, pore-water particles, and the rock-rock / water-rock /90 water-water bond families.912. Record the initial volume V0 of every pore-water particle and assign properties per bond family.923. Read the current mechanical time and compute the current temperature from Eq. (4).934. Compute the unfrozen water content w_u at that temperature from Eq. (3).945. Compute the target volume of every pore-water particle from Eqs. (1)-(2).956. Set the pore-water particle volumes to the target and cycle to mechanical equilibrium.967. Repeat 3-6 until the target number of cycles is reached.9798For stress-freeze-thaw coupling, apply and hold sigma_1 with the end walls **before** step 3.99100## Meso Parameters and Calibration Baseline101102Reference case: Sichuan yellow sandstone, dry density 2.25 g/cm3, cylinder 50 x 100 mm.103104| Bond family | Tensile strength (MPa) | Modulus (GPa) | Cohesion (MPa) | Friction angle (deg) | kn/ks |105| --- | --- | --- | --- | --- | --- |106| Rock-rock | 3.10 | 1.5 | 4.5 | 40 | 1.5 |107| Water-rock | 100 | 0.56 | 100 | 0 | 1.5 |108| Water-water | 100 | 0.56 | 100 | 0 | 1.5 |109110- Mineral particles: density 2500 kg/m3, radius 0.8-1.0 mm.111- Pore-water particles: density 920 kg/m3, radius 0.6-0.8 mm.112- Calibration result: numerical UCS 73.40 MPa and E 8.72 GPa against test values 75.05 MPa and 9.02 GPa113 (about 2.2% and 3.3% error). Match the pre-freeze stress-strain curve before starting freeze-thaw runs.114115## Post-Processing Recipe (P5)116117- **Deformation**: axial/radial strain histories; volumetric strain versus cycle number. In the companion118 laboratory test, strain gauges use quartz-glass temperature compensation to remove gauge-resistance119 drift while retaining rock thermal deformation.120- **Crack-temperature curve**: within a single cycle, crack count rises quickly during cooling and121 flattens below about -25 C (where w_u -> 0).122- **Radial crack density banding**: Eqs. (5)-(6) with a 5 mm sampling interval; verify "surface > interior".123- **Dip-angle distribution**: angle between crack and specimen axis, binned every 5 degrees.124- **Tensile/shear classification**: fraction of tensile bond-failure cracks (analogous to AE mechanism statistics).125126## Canonical Script Map127128| Topic | File | Purpose |129| --- | --- | --- |130| Specimen generation | `scripts/gen_ftc_specimen.p3dat` | Two-particle specimen, three bond families, staged save chain. |131| Freeze-thaw driver | `scripts/ftc_cycle.p3fis` | temperature -> unfrozen water -> pore-particle volume -> equilibrium. |132| Axial servo | `scripts/axial_servo.p3fis` | End-wall constant-sigma_1 servo (compute_gain -> servo_walls -> stop_me). |133| Crack statistics | `scripts/crack_stats.py` | Radial density banding, dip-angle bins, tensile/shear classification. |134| Case parameters | `templates/params.yaml` | Meso parameters and cases (sigma_1 levels, cycles, temperature amplitude). |135136Staged save chain: `ftc_ini` -> `ftc_bonded` -> `ftc_state1` -> `ftc_cycle_n`.137138## Result-Verification Checklist139140- **No axial stress**: axial and radial strain grow then stabilize after roughly 10 cycles; radial strain141 exceeds axial strain (the axial dimension is longer and more constrained); their difference grows then142 shrinks and oscillates near 100e-6 after 30 cycles.143- **With axial stress**: radial strain grows with cycles and accelerates nonlinearly beyond 30 cycles;144 axial strain is negative and decreases with cycles (damage accumulation); volumetric strain keeps growing.145 In the 0.6 sigma_0 case the specimen fails at about 45 cycles.146- **Spatial distribution**: crack density near the surface clearly exceeds the interior. For 0.6 sigma_0,147 the 0-20 mm band from the axis holds 0.90e7 to 1.17e7 cracks/m3, while the 20-25 mm edge band jumps to148 2.45e7 cracks/m3 (interior is triaxially constrained, the surface is nearly free).149- **Directionality**: low dip angles (0-20 deg) dominate and 80-90 deg is rare. Increasing axial stress150 raises the low-angle share (0-5 deg: 10.86% -> 15.01%, +38.21%) and lowers the high-angle share151 (85-90 deg: 0.52% -> 0.24%, -85.85%): axial compression suppresses radial crack initiation.152- **Mechanism**: freeze-thaw failure is tension-dominated (tensile crack fraction > 50% in all cases).153 As sigma_1 goes from 0 to 0.6 sigma_0, the tensile share falls 68.76% -> 58.97% (compression induces154 some shear).155156## Limitations and Improvements157158- Specimen temperature is uniform and heat conduction is ignored. Improvement: impose a cyclic temperature159 boundary on the specimen surface with the PFC thermal module and compute ice-particle volume from the160 local real-time temperature.161- Migration of pore water to the freezing front is ignored. Improvement: add a moisture-migration equation162 during freezing and scale ice-particle volume by local water content.163164## Output Contract165166A complete handoff back to `pfc-workflow` should include:167168- Calibrated meso parameters and the pre-freeze UCS/E match.169- Bond-family assignment and the justification for unbreakable water bonds.170- Temperature schedule, minimum temperature and the unfrozen-water form used.171- Volume-increment convention actually implemented (see `references/unfrozen-water.md`).172- Axial stress level, servo tolerance, cycle count, and the staged save chain.173- Strain histories plus crack banding / dip-angle / tensile-shear statistics.174- Explicit statement of the uniform-temperature and no-migration assumptions.175176## Local Contents177178- `references/unfrozen-water.md`: governing equations, temperature schedule, minimum-temperature choice,179 and the volume-increment consistency check.180- `references/bond-scheme.md`: three bond families and how to assign them.181- `references/findings.md`: measured-trend quick reference for result verification.182- `scripts/`: specimen generation, freeze-thaw driver, axial servo, crack statistics.183- `templates/params.yaml`: meso parameters and case matrix.184- `examples/README.md`: how to validate the bundled workflow.