Galperin vs Orthogonal Seismometer Configurations: What’s the Difference and Why It Matters?

In seismic monitoring, triaxial seismometers are essential tools that capture ground motion in three dimensions. But not all triaxial sensors are designed the same way. Two dominant configurations exist: the orthogonal layout and the Galperin symmetric design. Understanding the difference between them is key when deciding how to choose a broadband seismometer or designing your seismic network.

Orthogonal Configuration: The Traditional Layout

Orthogonal seismometers use three sensing elements aligned at right angles:

  • X-axis (East-West)
  • Y-axis (North-South)
  • Z-axis (Vertical)

This configuration provides direct and intuitive measurements of ground motion along geographic axes. It is commonly found in strong-motion sensors and legacy seismic stations.

Pros:

  • Simple and direct mapping to geographic directions
  • Standard format for data processing
  • Useful in structural monitoring when orientation is controlled

Cons:

  • Requires precise alignment to true North and level installation
  • Uneven horizontal sensitivity
  • Prone to increased cross-axis coupling due to asymmetry

Galperin Configuration: The Modern Symmetric Design

First introduced by Evgeny Galperin, this configuration uses three identical sensors, each spaced 120° apart and tilted equally from vertical (typically ~35.26°). Rather than directly measuring along X, Y, and Z, these sensors capture intermediate components. Standard vertical and horizontal motion is then reconstructed through a simple mathematical transformation.

Galperin geometry forms the basis of modern broadband seismometers, including all broadband seismometers offered by QuakeLogic.

Pros:

  • Isotropic azimuthal sensitivity for uniform horizontal response
  • Mechanically balanced and compact design
  • Easier installation — no need for precise geographic orientation
  • Ideal for low-noise, high-fidelity broadband recording
  • Often includes self-leveling mechanisms

Cons:

  • Requires post-processing to derive standard components (Z, N, E)
  • May be unfamiliar to users expecting direct XYZ outputs

Coordinate Transformation in Galperin Systems

The raw sensor outputs (V1, V2, V3) from a Galperin layout are converted into vertical (Z) and orthogonal horizontal (X, Y or N, E) components through a transformation matrix. The result is functionally identical to orthogonal output — but with superior mechanical and dynamic performance.

To obtain standard seismic components — vertical (Z), north (N), and east (E) — from a Galperin-configured broadband seismometer, a mathematical transformation is applied to the raw outputs of the three equally tilted sensors.

Galperin sensors are mounted 120° apart in azimuth and tilted at approximately 35.26° from vertical. This symmetric geometry ensures equal sensitivity in all horizontal directions, making it ideal for high-fidelity broadband seismic recording.

The transformation to orthogonal components is handled by a fixed matrix derived from the Galperin geometry. Here’s a practical example in Python that demonstrates how to convert the raw Galperin outputs (V1, V2, V3) into Z, N, and E components:

import numpy as np

def galperin_to_orthogonal(V1, V2, V3):
    """
    Transforms Galperin outputs (V1, V2, V3) into orthogonal components (Z, N, E).
    
    Assumes Galperin sensors are tilted 35.26 degrees from vertical and 120 degrees apart in azimuth.
    """

    # Galperin angle in degrees and radians
    alpha_deg = 35.2643897  # approximately arccos(1/sqrt(3))
    alpha_rad = np.radians(alpha_deg)

    # Transformation matrix based on Galperin geometry
    # Source: Galperin 1985; commonly used form
    T = np.array([
        [np.cos(alpha_rad), np.cos(alpha_rad), np.cos(alpha_rad)],  # Z (vertical)
        [np.sin(alpha_rad), -0.5 * np.sin(alpha_rad), -0.5 * np.sin(alpha_rad)],  # N (North)
        [0, np.sqrt(3)/2 * np.sin(alpha_rad), -np.sqrt(3)/2 * np.sin(alpha_rad)]  # E (East)
    ])

    # Stack Galperin outputs into column vector
    V = np.array([V1, V2, V3])

    # Perform transformation
    Z, N, E = T @ V

    return Z, N, E

# Example usage
V1, V2, V3 = 0.1, 0.2, 0.15  # Example raw sensor outputs
Z, N, E = galperin_to_orthogonal(V1, V2, V3)

print("Vertical (Z):", Z)
print("North (N):", N)
print("East (E):", E)

This code is useful for researchers, engineers, or software developers integrating Galperin seismometers into their own data acquisition systems or post-processing pipelines.

Why Galperin Excels in Broadband Performance

Galperin-configured sensors offer lower cross-axis sensitivity, reduced internal noise, and azimuthal symmetry. This makes them particularly suited for high-precision seismological research.

Optimizing Your Network Design

Because Galperin-based instruments don’t require precise geographic orientation, they simplify field deployments and reduce installation error. This is especially helpful in large-scale projects and remote installations.

✅ QuakeLogic’s Seismometer Solution

At QuakeLogic, we exclusively offer Galperin-type broadband seismometers, engineered for superior sensitivity, symmetrical mechanical design, and fast, easy deployment. Our systems are:

  • Fully turnkey, with no licensing or calibration fees
  • Designed for broadband performance with low self-noise
  • Delivered with user-friendly software and optional remote monitoring tools
  • Compatible with standard seismic analysis workflows

Whether you’re deploying a temporary station or building out a national seismic network, Galperin configuration delivers the performance you need with the reliability you trust.

📞 Contact Us

Ready to upgrade your monitoring system? Reach out to our team at sales@quakelogic.net or browse our product line at products.quakelogic.net to explore QuakeLogic’s advanced broadband solutions.

Generating Fragility Curves for Seismic Risk Assessment

In the field of performance-based earthquake engineering, fragility curves are indispensable tools. These probabilistic functions describe the likelihood that a structure or component will exceed a certain damage state when subjected to varying levels of seismic intensity—typically measured using Spectral Acceleration (Sa) or Peak Ground Acceleration (PGA).

At QuakeLogic, we help researchers, engineers, and emergency planners develop and automate fragility analysis as part of seismic resilience studies. This blog post introduces a fully open-source Python script developed by our team that reads structural response data and generates fragility curves for multiple damage states.

What Are Fragility Curves?

A fragility curve is a cumulative distribution function (CDF) that defines the conditional probability:

P(Damage ≥ State | Intensity Measure)

This means that, for a given level of shaking (e.g., 0.3g Sa), the curve tells you the probability that a structure will exceed a limit-state such as Moderate or Complete damage.

We typically use lognormal distributions to model fragility because they capture the exponential rise in damage probability with increasing shaking intensity.

Engineering Demand Parameters (EDPs) and Intensity Measures (IMs)

In seismic fragility analysis, the relationship is between:

  • EDP (Engineering Demand Parameter): A measurable response of the structure.
  • IM (Intensity Measure): A scalar value representing the strength of ground shaking.

Common EDPs:

  • Maximum interstory drift ratio (MIDR) – most widely used for buildings
  • Peak floor acceleration
  • Residual drift
  • Relative displacement
  • Roof displacement
  • Member strains or rotations (for local component fragility)

Common IMs:

  • PGA (Peak Ground Acceleration)
  • Sa(T1) – Spectral acceleration at fundamental period (T1)
  • PGV (Peak Ground Velocity)
  • Arias Intensity
  • CAV (Cumulative Absolute Velocity)

Choosing the right IM and EDP depends on the structure type, the available data, and the analysis objective.

Understanding the Fragility Curve Plot

The plot generated by the code shows the fragility curves for multiple damage states. Here’s how to read it:

  • X-axis: Intensity Measure (IM)
    In our example, this is Sa(T1) (spectral acceleration), but it can be PGA, PGV, or any other meaningful measure of shaking intensity.
  • Y-axis: Probability of Exceedance
    This is the probability that the structure’s response (EDP) will exceed the defined threshold for each damage state.

Interpretation:

A steeper curve implies a rapid transition from low to high damage probability — common for brittle systems or clearly defined performance thresholds.Methodology Overview

As the intensity of shaking (IM) increases, the probability of damage naturally increases.

Fragility curves slope upwards — from 0 to 1 — showing this increasing probability.

Robust structures have curves that shift rightward, indicating a lower probability of damage at a given IM.

  1. Input Data: Simulated or observed structural responses (e.g., drift ratios) vs. seismic intensities.
  2. Damage States: Thresholds for damage classification (e.g., 1%, 3%, 4%, 5% drift).
  3. Binning: The Sa values are grouped and used to calculate the fraction of samples exceeding each damage threshold.
  4. Curve Fitting: We fit a lognormal CDF to the exceedance probabilities using non-linear regression.
  5. Visualization: Fragility curves are plotted for each damage state.

Example Output

Input Format (input.txt)

A simple tab-separated file with the following columns:

Sa_T1_g    MaxDrift_ratio
0.1        0.0043
0.15       0.0098
...        ...

You can download an example file here.

Python Code: Fragility Curve Generator

################################################################################
# Fragility Curve Generator for Seismic Risk Analysis
#
# This script calculates and visualizes fragility curves for structural
# components or systems based on nonlinear response data from a suite of
# ground motions.
#
# Fragility curves represent the conditional probability that a structure
# will exceed a predefined damage state for a given ground motion intensity
# measure (IM), typically spectral acceleration (Sa). These curves are
# essential tools for probabilistic seismic risk assessment and
# performance-based earthquake engineering.
#
# The script uses a lognormal cumulative distribution function (CDF) to fit
# observed probabilities of exceedance derived from drift thresholds and
# structural response data. Drift ratios are compared against damage state
# thresholds to calculate these probabilities at various IM bins.
#
# Generated by: QuakeLogic Inc.
# Contact: support@quakelogic.net
################################################################################

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import lognorm
from scipy.optimize import curve_fit

def run():
    try:
        df = pd.read_csv("input.txt", sep='\t')
    except FileNotFoundError:
        print("❌ input.txt not found. Please ensure it exists in the working directory.")
        return

    IMs = df['Sa_T1_g'].values
    EDPs = df['MaxDrift_ratio'].values

    damage_states = {
        'Slight': 0.01,
        'Moderate': 0.03,
        'Extensive': 0.04,
        'Complete': 0.05
    }

    fragility_results = {}
    unique_IMs = np.linspace(min(IMs), max(IMs), 20)
    tolerance = 0.05

    for ds, threshold in damage_states.items():
        prob_exceed = []
        for im in unique_IMs:
            edp_subset = EDPs[np.abs(IMs - im) < tolerance]
            if len(edp_subset) > 0:
                prob = np.mean(edp_subset >= threshold)
            else:
                prob = 0
            prob_exceed.append(prob)

        def lognorm_cdf(x, mu, sigma):
            return lognorm.cdf(x, s=sigma, scale=np.exp(mu))

        prob_array = np.array(prob_exceed)
        if np.all(prob_array == 0) or np.all(prob_array == 1):
            print(f"⚠️ Skipping '{ds}' — flat probability distribution (all 0s or all 1s)")
            fragility_results[ds] = (np.nan, np.nan)
            continue

        try:
            popt, _ = curve_fit(lognorm_cdf, unique_IMs, prob_exceed, p0=[np.log(np.mean(unique_IMs)), 0.5])
            mu, sigma = popt
            fragility_results[ds] = (mu, sigma)
            print(f"✔️ Fitted '{ds}': mu = {mu:.3f}, sigma = {sigma:.3f}")
        except Exception as e:
            print(f"❌ Failed to fit for '{ds}': {e}")
            fragility_results[ds] = (np.nan, np.nan)

    plt.figure(figsize=(10, 6))
    x_vals = np.linspace(min(IMs), max(IMs), 300)
    for ds, (mu, sigma) in fragility_results.items():
        if np.isnan(mu): continue
        plt.plot(x_vals, lognorm.cdf(x_vals, s=sigma, scale=np.exp(mu)), label=ds)

    plt.ylim(0, 1)
    plt.xlabel("Spectral Acceleration Sa(T1) [g]", fontsize=12)
    plt.ylabel("Probability of Exceedance", fontsize=12)
    plt.title("Seismic Fragility Curves by Damage State", fontsize=14)
    plt.grid(True, linestyle='--', alpha=0.7)
    plt.legend(title="Damage State")
    plt.tight_layout()
    plt.savefig("fragility_curves_combined.png", dpi=300)
    plt.show()
    print("📈 Fragility plot saved as 'fragility_curves_combined.png'")

if __name__ == '__main__':
    run()

Summary

This fragility analysis tool allows engineers and researchers to:

  • Automate fragility curve generation from drift or response data
  • Visualize performance thresholds for multiple damage states
  • Incorporate results into risk models or decision-making tools

Need Help?

QuakeLogic Inc. provides advanced tools and consulting for:

  • Earthquake early warning systems
  • Structural health monitoring (SHM)
  • Fragility model development
  • Shake table testing and seismic instrumentation

📧 Reach out to us anytime: support@quakelogic.net

🌍 Understanding P-Waves and S-Waves: Earth’s Early Earthquake Messengers

When the Earth rumbles, seismic waves are the carriers of its message — rippling through the ground, shaking buildings, and providing valuable insight into the structure of our planet. Among these waves, P-waves and S-waves are the first responders. But what are they, how do they differ, and why do they matter so much in earthquake monitoring and early warning systems?

Let’s break it down.

🔹 What is a P-Wave?

P-wave stands for Primary wave — and true to the name, it’s the first seismic wave to arrive at a recording station after an earthquake occurs.

⚙️ Key Characteristics:

  • Type: Compressional (Longitudinal) wave
  • Motion: Particles move back and forth in the same direction as the wave travels
  • Speed: Fastest seismic wave (~5–8 km/s in the crust)
  • Medium: Travels through solids, liquids, and gases
  • Damage Potential: Generally low — it’s more of an early signal than a shaker

🎧 Analogy:

Think of how sound travels in air: the molecules compress and expand. P-waves do the same in rock — they compress and dilate the material as they pass.

🔹 What is an S-Wave?

S-wave stands for Secondary wave, because it arrives after the P-wave.

⚙️ Key Characteristics:

  • Type: Shear (Transverse) wave
  • Motion: Particles move perpendicular to the direction the wave is traveling — like side-to-side or up-and-down
  • Speed: Slower than P-waves (~3–4.5 km/s)
  • Medium: Only travels through solids — blocked by fluids like water or molten rock
  • Damage Potential: Higher shaking intensity, causes most of the ground motion we feel

🎧 Analogy:

Imagine shaking a rope up and down — the wave moves forward, but the rope oscillates vertically. That’s how S-waves move through the ground.

📊 Side-by-Side Comparison

FeatureP-WaveS-Wave
Full NamePrimary WaveSecondary Wave
TypeCompressional / LongitudinalShear / Transverse
Particle MotionBack-and-forth (in wave direction)Side-to-side or up-and-down
SpeedFastest (~5–8 km/s)Slower (~3–4.5 km/s)
MediumSolids, liquids, gasesSolids only
Arrival TimeFirstSecond
DamageMinimalSignificant shaking

🛰️ Why Are These Waves Important?

Both waves play critical roles in earthquake science and early warning systems:

  • P-waves act as an early warning signal. Systems like Taiwan’s P-Alert and algorithms like Prof. Y.M. Wu’s Pd method use the first few seconds of the P-wave to estimate earthquake magnitude and issue warnings before the damaging S-wave arrives.
  • S-waves are typically responsible for the actual shaking people feel and the structural damage during an earthquake.

With each second of early warning, we gain the opportunity to save lives, pause critical infrastructure, and reduce casualties.

📉 How Do They Look on a Seismogram?

On a typical seismogram:

  • P-waves appear as small, fast, high-frequency wiggles.
  • S-waves follow with larger amplitude and lower frequency, marking the start of strong shaking.

🔚 Final Thoughts

Understanding P-waves and S-waves isn’t just a scientific curiosity — it’s the foundation of modern earthquake early warning (EEW) systems. These waves help us detect earthquakes in real time, reduce risk, and save lives before the most damaging ground motions arrive.

If you’re looking for a reliable and cost-effective solution, we highly recommend the P-Alert sensor. Engineered for rapid P-wave detection and early warning, P-Alert offers real-time alerts, easy deployment, and proven performance in high-seismic-risk regions like Taiwan and beyond.

Protect your people and infrastructure — choose P-Alert.