You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

468 lines
91 KiB
Plaintext

{
"metadata": {
"name": "WAFO Chapter 4"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Chapter 4 Fatigue load analysis and rain-flow cycles\n",
"=====================================================\n",
"\n",
"Section 4.3.1 Crossing intensity\n",
"--------------------------------\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import wafo.data as wd\n",
"import wafo.objects as wo\n",
"\n",
"printing=0\n",
"xx_sea = wd.sea() \n",
"ts = wo.mat2timeseries(xx_sea)\n",
"tp = ts.turning_points()\n",
"mM = tp.cycle_pairs(kind='min2max')\n",
"lc = mM.level_crossings(intensity=True)\n",
"T_sea = ts.args[-1]-ts.args[0]\n",
"\n",
"subplot(1,2,1)\n",
"lc.plot()\n",
"subplot(1,2,2)\n",
"lc.setplotter(plotmethod='step')\n",
"lc.plot()\n",
"show() \n",
" \n",
" \n",
"m_sea = ts.data.mean() \n",
"f0_sea = interp(m_sea, lc.args,lc.data)\n",
"extr_sea = len(tp.data)/(2*T_sea)\n",
"alfa_sea = f0_sea/extr_sea\n",
"print('alfa = %g ' % alfa_sea )"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n8QCAJUuWAAAWLlyodv+8vDx0
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"alfa = 0.491212 \n"
]
}
],
"prompt_number": 1
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Section 4.3.2 Extraction of rainflow cycles\n",
"-------------------------------------------\n",
"Min-max and rainflow cycle plots\n",
"---------------------------------"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"mM_rfc = tp.cycle_pairs(h=0.3)\n",
" \n",
"clf()\n",
"subplot(122), \n",
"mM.plot() \n",
"title('min-max cycle pairs')\n",
"subplot(121), \n",
"mM_rfc.plot()\n",
"title('Rainflow filtered cycles')\n",
"show()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAYkAAAEVCAYAAAAVeRmFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnXl8VNXd/z+TjRCykn0PJiRASEIUTFGWqAQlIEQtLaIS\nXMC2ivXXuuDTurRWxOXx1VZ9Sm0taHlQQauggg+oxAUIWEFRUZElEJYAhkR2QuD7++P0zD1z5947\nM3furDnv12teyczcuffcme+933O+q42ICBKJRCKRaBAR6AFIJBKJJHiRSkIikUgkukglIZFIJBJd\npJKQSCQSiS5SSUgkEolEF6kkJBKJRKKLVBIC//u//4vLL7/c7e1/+9vfIj09HTk5Odi1axciIiJw\n7tw5n43vwIEDGDVqFBITE3HXXXfh0UcfxYwZMwAALS0tPj++EU1NTcjPz/fb8YqKivDee+/57Xjh\nyO7du5GQkICeHgW/YMECjBw50u/H/fnPf44//OEPfj+up0QFegBWU1RUhIMHDyIyMhJ9+vRBXV0d\nnn32WSQmJrr87HXXXYfrrrvOrePs3r0bTz31FFpbW5GamoqWlhYvR+6a5557DhkZGThy5IjLbWtr\na3HDDTfg5ptv9vm4AoHNZoPNZgv0MEKagoICHD16NNDD6LH85S9/CfQQ3CLsVhI2mw1vvfUWjh49\nis8//xxffPGFT7T17t27kZqaitTUVMv3rceuXbswcOBAt7b19gYaqBWJRCIBuru7Az0EO2GnJEQy\nMzMxduxYfPXVV/bX5s6di5KSEiQmJqK8vBxvvPGG/T31sjMiIgJ//etfUVpaipSUFNx+++0AgHff\nfRdjx47Fvn37kJCQgJtuusnpprxv3z5MnDgRqamp6N+/P/7+978DAE6dOoXevXvj8OHDAIBHHnkE\n0dHROHbsGADg/vvvx//7f//P6VymT5+OF198EY8//jgSExPx3nvv4aGHHsINN9zgsB0R4Te/+Q0+\n+ugj3H777UhISMAdd9wBAPjmm29QV1eH1NRUDBgwAEuWLHHY/89//nPU19cjPj4eTU1N2LdvH665\n5hpkZGTgvPPOw9NPP23f/uTJk5g+fTr69u2L8vJyfPLJJ4a/xVdffWU/dlZWFubOnYu2tjb06dPH\n/l0AwMaNG5GRkYGzZ88CAP72t79h0KBB9t/rs88+c9o3Edl/17S0NPz0pz9FR0eH/fu+/vrrkZaW\nhpSUFFx44YU4ePCg4VhDmaKiIjz55JOorKxEQkICbr75Zhw4cADjxo1DUlIS6urq0NnZCcDZRFlb\nW4sHHngAI0aMQGJiIi6//HK0t7frHqu2thb3338/Lr74YiQkJGDixIn4/vvvcd111yEpKQkXXngh\ndu3aZd/+l7/8JQoKCpCUlIShQ4fi448/tr83fvx43HXXXfbnU6ZM0V0Fnzt3DnPmzLFfx0OHDsWe\nPXtw2223OewDACZOnIg//vGPAIDW1lZcffXVyMjIQFpaGmbNmqW5f6PrROs7uO+++1BTU4OkpCQ0\nNDTYZQ8AJk+ejOzsbCQnJ2P06NHYsmWL/b3p06fj/vvvB8DMtXl5eXj88ceRnZ2Nm2++Ge3t7Zgw\nYQJSUlKQmpqKUaNGBcY0SGFGUVERvfvuu0RE1NraShUVFfS73/3O/v6SJUto//79RET0yiuvUJ8+\nfaitrY2IiObPn08jRoywb2uz2ejKK6+kH374gXbv3k3p6en0zjvvEBFRU1MT5eXl2bfduXMn2Ww2\nOnv2LBERjRw5km677TY6ffo0ffbZZ5Senk7vv/8+ERGNGjWKXnvtNSIiqquro5KSElqxYoX9c2+8\n8YbmuU2fPp3uv/9++/OHHnqIrr/+es3j19bW0vPPP2/f9tixY5SXl0cLFiygs2fP0qZNmygtLY22\nbNlCRESNjY2UlJREa9euJSKiEydO0Pnnn08PP/wwnTlzhnbs2EHnnXce/d///R8REd177700atQo\n6ujooNbWViovL6f8/HzNcR85coSysrLoqaeeotOnT9PRo0dpw4YNRERUX19Pf/nLX+zb3nnnnXTH\nHXcQEdHixYspNzeX/v3vfxMR0bZt22jXrl1ExH7n9957j4iI/vjHP9Lw4cNp79691NXVRbfeeitd\ne+21REQ0b948uvLKK+nkyZN07tw52rhxIx05ckRznOFAUVERDR8+nA4ePEh79+6ljIwMqq6ups8+\n+4xOnTpFl156qf16UMvM6NGjqaSkhL777js6efIk1dbW0uzZs3WPNXr0aOrfvz/t2LGDfvjhBxo0\naBCVlJTQe++9R93d3TRt2jS68cYb7dsvXLiQDh8+TGfPnqX//u//pqysLDp16hQREbW1tVFGRga9\n//77tHDhQiouLqZjx45pHvfxxx+niooK2rp1KxERbd68mdrb22nDhg2Uk5ND586dIyKiQ4cOUVxc\nHB08eJC6u7upsrKSfvWrX9GJEyfo1KlTtGbNGiJyvO5dXSda30Fubi599dVXdPz4cbrmmmvs1yTf\n97Fjx6irq4vuvPNOGjJkiP098XpevXo1RUVF0ezZs6mrq4tOnjxJs2fPpp/97GfU3d1N3d3d9PHH\nH+v+Fr4k7JREYWEhxcfHU0JCAtlsNmpoaLBfBFoMGTKEli5dSkTaSoILEhHRT37yE5o7dy4RsR9V\nT0ns3r2bIiMjHYT8vvvuo+nTpxMR0f3330933HEHdXd3U1ZWFv35z3+m2bNn08mTJ6l37950+PBh\nzbFOnz6dfvvb39qfP/jgg4ZK4u9//7t925dffplGjhzpsL+ZM2fabxiNjY3U2Nhof6+5uZkKCgoc\ntp8zZ479ohcVBhHRc8895/B9iCxatIjOP/98zfdefvlluvjii4mI7N/HJ598QkREY8eOpT//+c+a\nnxOVxMCBA+3/ExHt27ePoqOjqbu7m/7xj3/QRRddRJs3b9bcT7hRVFREixYtsj+/5ppr6Be/+IX9\n+dNPP00NDQ1EpC0zjzzyiH3b//mf/6ErrrhC91i1tbU0Z84c+/Nf//rXVF9fb3/+5ptvOtwU1aSk\npDj8Lq+99hrl5eVRWlqaw3WnpqysjJYtW6b53sCBA2nVqlX2cx0/fjwREa1du5bS09M17wXide/q\nOlFTW1tL9913n/35li1bKCYmxq6oRDo6Oshms9knKeL1vHr1aoqJiaHTp0/bt3/ggQdo0qRJtG3b\nNu0vwk+EnbnJZrNh6dKlOHLkCJqamvD+++/j3//+t/39F198EdXV1UhJSUFKSgq+/PJLwyV1VlaW\n/f+4uDi7WciIffv2oW/fvujTp4/9tYKCAuzduxcAMHr0aDQ1NWHjxo2oqKjAmDFj8MEHH2D9+vUo\nKSlBSkqKmVN3QjSB7dq1C+vXr7efd0pKChYtWoQDBw7Yt83Ly3PYft++fQ7bP/roo3ZTzb59+xyi\nmQoKCnTH0draivPOO0/zvUmTJmHLli1oaWnBqlWr7KYIANizZw+Ki4tdnmdLSwuuuuoq+zgHDRqE\nqKgoHDx4EDfccAMuv/xyTJkyBbm5ubj33nuDyt7rCzIzM+3/9+7d2+F5bGysoQyL8t67d2/7tj/7\n2c+QkJCAhIQEzJ07V/NYsbGxyMjI0D3Wk08+iUGDBiE5ORkpKSn44Ycf8P3339vfnzBhAs6ePYsB\nAwbgoosu0h1ja2urrlxMmzYNCxcuBAAsXLjQbo5tbW1FYWEhIiKMb3murhMt1NfBmTNn8P333+Ps\n2bOYPXs2SkpKkJSUhH79+gGAwzmLpKenIyYmxv787rvvRklJCcaOHYvi4mI89thjhmP3FWGnJERG\njRqFWbNm4d577wXABGDmzJl49tlncfjwYXR0dGDw4MEe2fnccQjn5OTg8OHDDhfI7t277Tfh4cOH\n49tvv8Xrr7+O2tpaDBw4ELt378by5ctRW1tryVjU7xUUFGD06NHo6OiwP44ePYpnn31W8zMFBQXo\n16+fw/ZHjhzBW2+9BQDIzs7G
}
],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Min-max and rainflow cycle distributions\n",
"-------------------------------------------"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import wafo.misc as wm\n",
"ampmM_sea = mM.amplitudes()\n",
"ampRFC_sea = mM_rfc.amplitudes()\n",
"clf()\n",
"subplot(121) \n",
"wm.plot_histgrm(ampmM_sea,25)\n",
"ylim = gca().get_ylim()\n",
"title('min-max amplitude distribution')\n",
"subplot(122)\n",
"wm.plot_histgrm(ampRFC_sea,25)\n",
"gca().set_ylim(ylim)\n",
"title('Rainflow amplitude distribution')\n",
"show()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\nGxsb2NnZtYjp4eEhtx0TE4OR
}
],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#!#! Section 4.3.3 Simulation of rainflow cycles\n",
"#!#! Simulation of cycles in a Markov model\n",
"n=41; param_m=[-1, 1, n]; param_D=[1, n, n];\n",
"u_markov=levels(param_m);\n",
"G_markov=mktestmat(param_m,[-0.2, 0.2],0.15,1);\n",
"T_markov=5000;\n",
"#xxD_markov=mctpsim({G_markov [,]},T_markov);\n",
"#xx_markov=[(1:T_markov)' u_markov(xxD_markov)'];\n",
"#clf\n",
"#plot(xx_markov(1:50,1),xx_markov(1:50,2))\n",
"#title('Markov chain of turning points')\n",
"#wafostamp([],'(ER)')\n",
"#disp('Block 5'),pause(pstate)\n",
"#\n",
"#\n",
"##!#! Rainflow cycles in a transformed Gaussian model\n",
"##!#! Hermite transformed wave data and rainflow filtered turning points, h = 0.2.\n",
"#me = mean(xx_sea(:,2));\n",
"#sa = std(xx_sea(:,2));\n",
"#Hm0_sea = 4*sa;\n",
"#Tp_sea = 1/max(lc_sea(:,2));\n",
"#spec = jonswap([],[Hm0_sea Tp_sea]);\n",
"#\n",
"#[sk, ku] = spec2skew(spec);\n",
"#spec.tr = hermitetr([],[sa sk ku me]);\n",
"#param_h = [-1.5 2 51];\n",
"#spec_norm = spec;\n",
"#spec_norm.S = spec_norm.S/sa^2;\n",
"#xx_herm = spec2sdat(spec_norm,[2^15 1],0.1);\n",
"##! ????? PJ, JR 11-Apr-2001\n",
"##! NOTE, in the simulation program spec2sdat\n",
"##!the spectrum must be normalized to variance 1 \n",
"##! ?????\n",
"#h = 0.2;\n",
"#[dtp,u_herm,xx_herm_1]=dat2dtp(param_h,xx_herm,h);\n",
"#clf\n",
"#plot(xx_herm(:,1),xx_herm(:,2),'k','LineWidth',2); hold on;\n",
"#plot(xx_herm_1(:,1),xx_herm_1(:,2),'k--','Linewidth',2);\n",
"#axis([0 50 -1 1]), hold off;\n",
"#title('Rainflow filtered wave data')\n",
"#wafostamp([],'(ER)')\n",
"#disp('Block 6'),pause(pstate)\n",
"#\n",
"##!#! Rainflow cycles and rainflow filtered rainflow cycles in the transformed Gaussian process.\n",
"#tp_herm=dat2tp(xx_herm);\n",
"#RFC_herm=tp2rfc(tp_herm);\n",
"#mM_herm=tp2mm(tp_herm);\n",
"#h=0.2;\n",
"#[dtp,u,tp_herm_1]=dat2dtp(param_h,xx_herm,h);\n",
"#RFC_herm_1 = tp2rfc(tp_herm_1);\n",
"#clf\n",
"#subplot(121), ccplot(RFC_herm)\n",
"#title('h=0')\n",
"#subplot(122), ccplot(RFC_herm_1)\n",
"#title('h=0.2')\n",
"#if (printing==1), print -deps ../bilder/fatigue_8.eps \n",
"#end\n",
"#wafostamp([],'(ER)')\n",
"#disp('Block 7'),pause(pstate)\n",
"#\n",
"##!#! Section 4.3.4 Calculating the rainflow matrix\n",
"#\n",
"#\n",
"#Grfc_markov=mctp2rfm({G_markov []});\n",
"#clf\n",
"#subplot(121), cmatplot(u_markov,u_markov,G_markov), axis('square')\n",
"#subplot(122), cmatplot(u_markov,u_markov,Grfc_markov), axis('square')\n",
"#wafostamp([],'(ER)')\n",
"#disp('Block 8'),pause(pstate)\n",
"#\n",
"##!#! \n",
"#clf\n",
"#cmatplot(u_markov,u_markov,{G_markov Grfc_markov},3) \n",
"#wafostamp([],'(ER)')\n",
"#disp('Block 9'),pause(pstate)\t\n",
"#\n",
"##!#! Min-max-matrix and theoretical rainflow matrix for test Markov sequence.\n",
"#cmatplot(u_markov,u_markov,{G_markov Grfc_markov},4)\n",
"#subplot(121), axis('square'), title('min2max transition matrix')\n",
"#subplot(122), axis('square'), title('Rainflow matrix')\n",
"#if (printing==1), print -deps ../bilder/fatigue_9.eps \n",
"#end\n",
"#wafostamp([],'(ER)')\n",
"#disp('Block 10'),pause(pstate)\n",
"#\n",
"##!#! Observed and theoretical rainflow matrix for test Markov sequence.\n",
"#n=length(u_markov);\n",
"#Frfc_markov=dtp2rfm(xxD_markov,n);\n",
"#clf\n",
"#cmatplot(u_markov,u_markov,{Frfc_markov Grfc_markov*T_markov/2},3) \n",
"#subplot(121), axis('square'), title('Observed rainflow matrix')\n",
"#subplot(122), axis('square'), title('Theoretical rainflow matrix')\n",
"#if (printing==1), print -deps ../bilder/fatigue_10.eps \n",
"#end\n",
"#wafostamp([],'(ER)')\n",
"#disp('Block 11'),pause(pstate)\n",
"#\n",
"##!#! Smoothed observed and calculated rainflow matrix for test Markov sequence.\n",
"#tp_markov=dat2tp(xx_markov);\n",
"#RFC_markov=tp2rfc(tp_markov);\n",
"#h=1;\n",
"#Frfc_markov_smooth=cc2cmat(param_m,RFC_markov,[],1,h);\n",
"#clf\n",
"#cmatplot(u_markov,u_markov,{Frfc_markov_smooth Grfc_markov*T_markov/2},4)\n",
"#subplot(121), axis('square'), title('Smoothed observed rainflow matrix')\n",
"#subplot(122), axis('square'), title('Theoretical rainflow matrix')\n",
"#if (printing==1), print -deps ../bilder/fatigue_11.eps \n",
"#end\n",
"#wafostamp([],'(ER)')\n",
"#disp('Block 12'),pause(pstate)\n",
"#\n",
"##!#! Rainflow matrix from spectrum\n",
"#clf\n",
"##!GmM3_herm=spec2mmtpdf(spec,[],'Mm',[],[],2);\n",
"#GmM3_herm=spec2cmat(spec,[],'Mm',[],param_h,2);\n",
"#pdfplot(GmM3_herm)\n",
"#wafostamp([],'(ER)')\n",
"#disp('Block 13'),pause(pstate)\n",
"#\n",
"#\n",
"##!#! Min-max matrix and theoretical rainflow matrix for Hermite-transformed Gaussian waves.\n",
"#Grfc_herm=mctp2rfm({GmM3_herm.f []});\n",
"#u_herm=levels(param_h);\n",
"#clf\n",
"#cmatplot(u_herm,u_herm,{GmM3_herm.f Grfc_herm},4)\n",
"#subplot(121), axis('square'), title('min-max matrix')\n",
"#subplot(122), axis('square'), title('Theoretical rainflow matrix')\n",
"#if (printing==1), print -deps ../bilder/fatigue_12.eps \n",
"#end\n",
"#wafostamp([],'(ER)')\n",
"#disp('Block 14'),pause(pstate)\n",
"#\n",
"##!#!\n",
"#clf\n",
"#Grfc_direct_herm=spec2cmat(spec,[],'rfc',[],[],2);\n",
"#subplot(121), pdfplot(GmM3_herm), axis('square'), hold on\n",
"#subplot(122), pdfplot(Grfc_direct_herm), axis('square'), hold off\n",
"#if (printing==1), print -deps ../bilder/fig_mmrfcjfr.eps\n",
"#end\n",
"#wafostamp([],'(ER)')\n",
"#disp('Block 15'),pause(pstate)\n",
"#\n",
"#\n",
"##!#! Observed smoothed and theoretical min-max matrix, \n",
"##!#! (and observed smoothed and theoretical rainflow matrix for Hermite-transformed Gaussian waves).\n",
"#tp_herm=dat2tp(xx_herm);\n",
"#RFC_herm=tp2rfc(tp_herm);\n",
"#mM_herm=tp2mm(tp_herm);\n",
"#h=0.2;\n",
"#FmM_herm_smooth=cc2cmat(param_h,mM_herm,[],1,h);\n",
"#Frfc_herm_smooth=cc2cmat(param_h,RFC_herm,[],1,h);\n",
"#T_herm=xx_herm(end,1)-xx_herm(1,1);\n",
"#clf\n",
"#cmatplot(u_herm,u_herm,{FmM_herm_smooth GmM3_herm.f*length(mM_herm) ; ...\n",
"# Frfc_herm_smooth Grfc_herm*length(RFC_herm)},4)\n",
"#subplot(221), axis('square'), title('Observed smoothed min-max matrix')\n",
"#subplot(222), axis('square'), title('Theoretical min-max matrix')\n",
"#subplot(223), axis('square'), title('Observed smoothed rainflow matrix')\n",
"#subplot(224), axis('square'), title('Theoretical rainflow matrix')\n",
"#if (printing==1), print -deps ../bilder/fatigue_13.eps \n",
"#end\n",
"#wafostamp([],'(ER)')\n",
"#disp('Block 16'),pause(pstate)\n",
"# \n",
"##!#! Section 4.3.5 Simulation from crossings and rainflow structure\n",
"#\n",
"##!#! Crossing spectrum (smooth curve) and obtained spectrum (wiggled curve)\n",
"##!#! for simulated process with irregularity factor 0.25.\n",
"#clf\n",
"#cross_herm=dat2lc(xx_herm);\n",
"#alpha1=0.25;\n",
"#alpha2=0.75;\n",
"#xx_herm_sim1=lc2sdat(cross_herm,500,alpha1);\n",
"#cross_herm_sim1=dat2lc(xx_herm_sim1);\n",
"#subplot(211)\n",
"#plot(cross_herm(:,1),cross_herm(:,2)/max(cross_herm(:,2)))\n",
"#hold on\n",
"#stairs(cross_herm_sim1(:,1),...\n",
"# cross_herm_sim1(:,2)/max(cross_herm_sim1(:,2)))\n",
"#hold off\n",
"#title('Crossing intensity, \\alpha = 0.25')\n",
"#subplot(212)\n",
"#plot(xx_herm_sim1(:,1),xx_herm_sim1(:,2))\n",
"#title('Simulated load, \\alpha = 0.25')\n",
"#if (printing==1), print -deps ../bilder/fatigue_14_25.eps \n",
"#end\n",
"#wafostamp([],'(ER)')\n",
"#disp('Block 16'),pause(pstate)\n",
"#\n",
"##!#! Crossing spectrum (smooth curve) and obtained spectrum (wiggled curve)\n",
"##!#! for simulated process with irregularity factor 0.75.\n",
"#xx_herm_sim2=lc2sdat(cross_herm,500,alpha2);\n",
"#cross_herm_sim2=dat2lc(xx_herm_sim2);\n",
"#subplot(211)\n",
"#plot(cross_herm(:,1),cross_herm(:,2)/max(cross_herm(:,2)))\n",
"#hold on\n",
"#stairs(cross_herm_sim2(:,1),...\n",
"# cross_herm_sim2(:,2)/max(cross_herm_sim2(:,2)))\n",
"#hold off\n",
"#title('Crossing intensity, \\alpha = 0.75')\n",
"#subplot(212)\n",
"#plot(xx_herm_sim2(:,1),xx_herm_sim2(:,2))\n",
"#title('Simulated load, \\alpha = 0.75')\n",
"#if (printing==1), print -deps ../bilder/fatigue_14_75.eps \n",
"#end\n",
"#wafostamp([],'(ER)')\n",
"#disp('Block 17'),pause(pstate)\n",
"#\n",
"##!#! Section 4.4 Fatigue damage and fatigue life distribution\n",
"##!#! Section 4.4.1 Introduction\n",
"#beta=3.2; gam=5.5E-10; T_sea=xx_sea(end,1)-xx_sea(1,1);\n",
"#d_beta=cc2dam(RFC_sea,beta)/T_sea;\n",
"#time_fail=1/gam/d_beta/3600 #!in hours of the specific storm\n",
"#disp('Block 18'),pause(pstate)\n",
"#\n",
"##!#! Section 4.4.2 Level crossings\n",
"##!#! Crossing intensity as calculated from the Markov matrix (solid curve) and from the observed rainflow matrix (dashed curve).\n",
"#clf\n",
"#mu_markov=cmat2lc(param_m,Grfc_markov);\n",
"#muObs_markov=cmat2lc(param_m,Frfc_markov/(T_markov/2));\n",
"#clf\n",
"#plot(mu_markov(:,1),mu_markov(:,2),muObs_markov(:,1),muObs_markov(:,2),'--')\n",
"#title('Theoretical and observed crossing intensity ')\n",
"#if (printing==1), print -deps ../bilder/fatigue_15.eps \n",
"#end\n",
"#wafostamp([],'(ER)')\n",
"#disp('Block 19'),pause(pstate)\n",
"#\n",
"##!#! Section 4.4.3 Damage\n",
"##!#! Distribution of damage from different RFC cycles, from calculated theoretical and from observed rainflow matrix.\n",
"#beta = 4;\n",
"#Dam_markov = cmat2dam(param_m,Grfc_markov,beta)\n",
"#DamObs1_markov = cc2dam(RFC_markov,beta)/(T_markov/2)\n",
"#DamObs2_markov = cmat2dam(param_m,Frfc_markov,beta)/(T_markov/2)\n",
"#disp('Block 20'),pause(pstate)\n",
"#\n",
"#Dmat_markov = cmat2dmat(param_m,Grfc_markov,beta);\n",
"#DmatObs_markov = cmat2dmat(param_m,Frfc_markov,beta)/(T_markov/2); \n",
"#clf\n",
"#subplot(121), cmatplot(u_markov,u_markov,Dmat_markov,4)\n",
"#title('Theoretical damage matrix') \n",
"#subplot(122), cmatplot(u_markov,u_markov,DmatObs_markov,4)\n",
"#title('Observed damage matrix') \n",
"#if (printing==1), print -deps ../bilder/fatigue_16.eps \n",
"#end\n",
"#wafostamp([],'(ER)')\n",
"#disp('Block 21'),pause(pstate)\n",
"#\n",
"#\n",
"##!#!\n",
"##!Damplus_markov = lc2dplus(mu_markov,beta)\n",
"#pause(pstate)\n",
"#\n",
"##!#! Section 4.4.4 Estimation of S-N curve\n",
"#\n",
"##!#! Load SN-data and plot in log-log scale.\n",
"#SN = load('sn.dat');\n",
"#s = SN(:,1);\n",
"#N = SN(:,2);\n",
"#clf\n",
"#loglog(N,s,'o'), axis([0 14e5 10 30])\n",
"##!if (printing==1), print -deps ../bilder/fatigue_?.eps end\n",
"#wafostamp([],'(ER)')\n",
"#disp('Block 22'),pause(pstate)\n",
"#\n",
"#\n",
"##!#! Check of S-N-model on normal probability paper.\n",
"#\n",
"#normplot(reshape(log(N),8,5))\n",
"#if (printing==1), print -deps ../bilder/fatigue_17.eps \n",
"#end\n",
"#wafostamp([],'(ER)')\n",
"#disp('Block 23'),pause(pstate)\n",
"#\n",
"##!#! Estimation of S-N-model on linear scale.\n",
"#clf\n",
"#[e0,beta0,s20] = snplot(s,N,12);\n",
"#title('S-N-data with estimated N(s)','FontSize',20)\n",
"#set(gca,'FontSize',20)\n",
"#if (printing==1), print -deps ../bilder/fatigue_18a.eps \n",
"#end\n",
"#wafostamp([],'(ER)')\n",
"#disp('Block 24'),pause(pstate)\n",
"#\n",
"##!#! Estimation of S-N-model on log-log scale.\n",
"#clf\n",
"#[e0,beta0,s20] = snplot(s,N,14);\n",
"#title('S-N-data with estimated N(s)','FontSize',20)\n",
"#set(gca,'FontSize',20)\n",
"#if (printing==1), print -deps ../bilder/fatigue_18b.eps \n",
"#end\n",
"#wafostamp([],'(ER)')\n",
"#disp('Block 25'),pause(pstate)\n",
"#\n",
"##!#! Section 4.4.5 From S-N curve to fatigue life distribution\n",
"##!#! Damage intensity as function of $\\beta$\n",
"#beta = 3:0.1:8;\n",
"#DRFC = cc2dam(RFC_sea,beta);\n",
"#dRFC = DRFC/T_sea;\n",
"#plot(beta,dRFC), axis([3 8 0 0.25])\n",
"#title('Damage intensity as function of \\beta')\n",
"#if (printing==1), print -deps ../bilder/fatigue_19.eps \n",
"#end\n",
"#wafostamp([],'(ER)')\n",
"#disp('Block 26'),pause(pstate)\n",
"#\n",
"##!#! Fatigue life distribution with sea load.\n",
"#dam0 = cc2dam(RFC_sea,beta0)/T_sea;\n",
"#[t0,F0] = ftf(e0,dam0,s20,0.5,1);\n",
"#[t1,F1] = ftf(e0,dam0,s20,0,1);\n",
"#[t2,F2] = ftf(e0,dam0,s20,5,1);\n",
"#plot(t0,F0,t1,F1,t2,F2)\n",
"#title('Fatigue life distribution function')\n",
"#if (printing==1), print -deps ../bilder/fatigue_20.eps \n",
"#end\n",
"#wafostamp([],'(ER)')\n",
"#disp('Block 27, last block')"
],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}