// Switches between bleaching/recovery and writes concentration to file.
proc advance() { local i, cylinderVolume, FraRec, FraBasic, recoveryBleaching
    fadvance()

    FraRec = 0
    FraBasic = 0

    if (t % (iterationTime*2) == iterationTime) {
        // Recovery just started
        recoveryBleaching = 1
    } else if (t % (iterationTime*2) == 0) {
        // Bleaching just started
        recoveryBleaching = 2
    } else {
        // In process
        recoveryBleaching = 0
    }

    for i = 0, frapLineSectionsSize-1 {
        frapLineSections[i].sec {
            cylinderVolume = L*PI*diam^2/4
            FraRec += frapioni(0.5)*cylinderVolume
            FraBasic += cylinderVolume

            // Change Alpha for all sections in line
            if (recoveryBleaching == 1) {
                // Recovering every iterationTime
                Alpha_FRAP = 0
            } else if (recoveryBleaching == 2) {
                // Bleaching every other iterationTime
                Alpha_FRAP = AlphaFRAP*BasicFRAP
            }
        }
    }

    fileFrapLineConcentration.printf("%-6.5g\t%-6.5g\n", t, FraRec/FraBasic)

    if (t < tstop) {
        if (recoveryBleaching == 1) {
            fileFrapLineConcentration.printf("----- RECOVERY STARTED -----\n")
        } else if (recoveryBleaching == 2) {
            fileFrapLineConcentration.printf("----- BLEACHING STARTED -----\n")
        }
    }
}