Hello!
I've discovered an issue with the RFEM6 API (I think) when retrieving surface-related results. While node deformation results work correctly, all surface-related results (global deformations, local deformations, contact stresses) return empty DataFrames with incorrect column structures.
Environment:
- RFEM6 Version: 6.11.0001
- Python Version: 3.11.9
- dlubal-api Version: 2.11.1
Issue Details:
- Working Correctly:
# This works as expected, returns proper node deformation results
rfem.results.STATIC_ANALYSIS_NODES_GLOBAL_DEFORMATIONS # value 1
- Not Working (All Return Empty DataFrames):
# All of these return empty DataFrames with incorrect column structure
rfem.results.STATIC_ANALYSIS_SURFACES_GLOBAL_DEFORMATIONS_TABLE # value 28
rfem.results.STATIC_ANALYSIS_SURFACES_LOCAL_DEFORMATIONS_TABLE # value 29
rfem.results.STATIC_ANALYSIS_SURFACES_CONTACT_STRESSES_TABLE # value 55
- API Response Issues:
- When I ran for STATIC_ANALYSIS_SURFACES_GLOBAL_DEFORMATIONS_TABLE I got:
- Empty DataFrame (0 rows)
- Incorrect column structure (stress-related instead of deformation-related):
['loading', 'envelope', 'direction', 'mode_no', 'solid_no', 'surface_no', 'grid_point_no', 'location_x', 'location_y', 'location_z', 'tag', 'sigma_x', 'sigma_y', 'sigma_z', 'tau_yz', 'tau_xz', 'tau_xy']
Minimal Reproducible Example:
import logging
from dlubal.api import rfem
import dlubal.api
logger = logging.getLogger(__name__)
logger.info(f"dlubal.api version: {dlubal.api.__version__}")
# Initialize RFEM application
rfem_app = rfem.Application(api_key_value=YOUR_API_KEY)
rfem_app.open_model(path=MODEL_PATH)
# Test different surface result types
result_types = [
rfem.results.STATIC_ANALYSIS_SURFACES_GLOBAL_DEFORMATIONS_TABLE,
rfem.results.STATIC_ANALYSIS_SURFACES_LOCAL_DEFORMATIONS_TABLE,
rfem.results.STATIC_ANALYSIS_SURFACES_CONTACT_STRESSES_TABLE
]
for result_type in result_types:
logger.info(f"\nTesting: {result_type}")
result_df = rfem_app.get_results(results_type=result_type).data
logger.info(f"Shape: {result_df.shape}")
logger.info(f"Columns: {list(result_df.columns)}")
logger.info(f"Data:\n{result_df.head(1).to_string()}")
Expected Behavior:
- Surface result types should return populated DataFrames like the node results do
- Columns should match the result type (deformation columns for deformation results, etc.)
- Loading cases should match those in the model
Current Status:
- Node results work perfectly (STATIC_ANALYSIS_NODES_GLOBAL_DEFORMATIONS)
- All surface-related results return empty DataFrames
- Column schemas don't match the requested result type (what I see in the RFEM6 UI)
- Results are definitely present in the model (visible in RFEM UI)
Questions:
- Is there something I am doing wrong and have misinterpreted the issue, or do you get the same thing?
- Is this a known issue with surface-related results in the API?
- Are there alternative result types we should be using for surface results?
- Is there a workaround available to access surface deformation data via the API?
Any assistance would be greatly appreciated. Let me know if you need any additional information or test cases.