Mercurial > hg > kwantix
changeset 6:188facdd5a60
Still buggy. Need a better way to precompute RBFs.
author | Jordi Guitérrez Hermoso <jordigh@gmail.com> |
---|---|
date | Sun, 29 Jun 2008 05:00:15 -0500 |
parents | 22523575ef22 |
children | 1c73d93a7366 |
files | Makefile data/circ_bdry.matrix data/circ_intr.matrix data/circ_nrml.matrix data/h_init.map include/interpolator.hpp interpolator.cpp main-linear-wave-eq.cpp main.cpp |
diffstat | 9 files changed, 1152 insertions(+), 854 deletions(-) [+] |
line wrap: on
line diff
--- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ CPP = g++ -LINKING = -lgsl -lgslcblas -CFLAGS = -g +LINKING = -lgsl -lgslcblas -pg +CFLAGS = -pg OPTIONS = -Wall -pedantic -W -Werror -Wconversion -Wshadow \ -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings \ -fshort-enums -fno-common -Wfatal-errors
--- a/data/circ_bdry.matrix +++ b/data/circ_bdry.matrix @@ -1,89 +1,115 @@ -# Created by Octave 3.0.1, Sun Jun 29 04:02:42 2008 CDT <jordi@Iris> +# Created by Octave 3.0.1, Sun Jun 29 04:50:49 2008 CDT <jordi@Iris> # name: bdry # type: matrix -# rows: 84 +# rows: 110 # columns: 2 - 1 0 - 0.9972037971811801 0.07473009358642425 - 0.9888308262251285 0.1490422661761744 - 0.9749279121818236 0.2225209339563144 - 0.9555728057861407 0.2947551744109042 - 0.9308737486442042 0.365341024366395 - 0.9009688679024191 0.4338837391175581 - 0.8660254037844386 0.5 - 0.8262387743159949 0.5633200580636221 - 0.7818314824680298 0.6234898018587335 - 0.7330518718298263 0.6801727377709195 - 0.6801727377709194 0.7330518718298263 - 0.6234898018587336 0.7818314824680298 - 0.563320058063622 0.8262387743159949 - 0.4999999999999999 0.8660254037844387 - 0.4338837391175582 0.9009688679024191 - 0.365341024366395 0.9308737486442042 - 0.2947551744109041 0.9555728057861408 - 0.2225209339563144 0.9749279121818236 - 0.1490422661761744 0.9888308262251285 - 0.07473009358642417 0.9972037971811801 - 6.123233995736766e-17 1 - -0.07473009358642427 0.9972037971811801 - -0.1490422661761745 0.9888308262251285 - -0.2225209339563143 0.9749279121818236 - -0.2947551744109042 0.9555728057861407 - -0.3653410243663951 0.9308737486442042 - -0.4338837391175581 0.9009688679024191 - -0.5000000000000002 0.8660254037844385 - -0.5633200580636221 0.8262387743159948 - -0.6234898018587335 0.7818314824680299 - -0.6801727377709196 0.7330518718298262 - -0.7330518718298263 0.6801727377709194 - -0.7818314824680298 0.6234898018587336 - -0.826238774315995 0.5633200580636218 - -0.8660254037844387 0.4999999999999999 - -0.900968867902419 0.4338837391175582 - -0.9308737486442044 0.3653410243663948 - -0.9555728057861408 0.2947551744109042 - -0.9749279121818236 0.2225209339563145 - -0.9888308262251285 0.1490422661761743 - -0.9972037971811801 0.07473009358642423 - -1 1.224646799147353e-16 - -0.9972037971811801 -0.07473009358642442 - -0.9888308262251285 -0.1490422661761745 - -0.9749279121818236 -0.2225209339563143 - -0.9555728057861407 -0.2947551744109044 - -0.9308737486442042 -0.365341024366395 - -0.9009688679024191 -0.433883739117558 - -0.8660254037844386 -0.5000000000000001 - -0.8262387743159949 -0.5633200580636221 - -0.7818314824680296 -0.6234898018587338 - -0.7330518718298262 -0.6801727377709195 - -0.6801727377709194 -0.7330518718298263 - -0.6234898018587337 -0.7818314824680297 - -0.563320058063622 -0.8262387743159949 - -0.4999999999999996 -0.8660254037844388 - -0.4338837391175583 -0.900968867902419 - -0.3653410243663949 -0.9308737486442044 - -0.2947551744109038 -0.9555728057861409 - -0.2225209339563146 -0.9749279121818236 - -0.1490422661761743 -0.9888308262251285 - -0.07473009358642384 -0.9972037971811801 - -1.83697019872103e-16 -1 - 0.07473009358642436 -0.9972037971811801 - 0.1490422661761748 -0.9888308262251285 - 0.2225209339563142 -0.9749279121818236 - 0.2947551744109043 -0.9555728057861407 - 0.3653410243663954 -0.9308737486442041 - 0.433883739117558 -0.9009688679024193 - 0.5000000000000001 -0.8660254037844386 - 0.5633200580636224 -0.8262387743159947 - 0.6234898018587334 -0.7818314824680299 - 0.6801727377709195 -0.7330518718298262 - 0.7330518718298266 -0.6801727377709191 - 0.7818314824680297 -0.6234898018587337 - 0.8262387743159949 -0.563320058063622 - 0.8660254037844388 -0.4999999999999997 - 0.900968867902419 -0.4338837391175583 - 0.9308737486442042 -0.3653410243663949 - 0.9555728057861408 -0.2947551744109039 - 0.9749279121818235 -0.2225209339563146 - 0.9888308262251285 -0.1490422661761744 - 0.9972037971811801 -0.07473009358642391 + 0.9998766324816606 -0.01570731731182068 + 0.9991426496745736 0.041400067648161 + 0.9951496712183173 0.09837241419257248 + 0.9879107213786663 0.1550238903688175 + 0.9774494121053654 0.2111697108367472 + 0.9637998660148573 0.2666267396000314 + 0.9470066050894002 0.3212140873577138 + 0.927124405455615 0.374753701527513 + 0.9042181187161473 0.4270709470163375 + 0.8783624604172172 0.477995175843661 + 0.8496417663420387 0.5273602837597655 + 0.8181497174250234 0.5750052520432786 + 0.7839890341840449 0.620774672710774 + 0.7472711416674593 0.6645192554253126 + 0.7081158060087587 0.7060963144504906 + 0.6666507437743361 0.7453702340616537 + 0.623011205378593 0.7822129108962039 + 0.577339533925199 0.8165041718001409 + 0.5297847009134744 0.8481321658079125 + 0.4805018203243236 0.8769937289770158 + 0.4296516426706695 0.9029947208873346 + 0.3774000306626937 0.9260503317076226 + 0.3239174181981495 0.9460853588275453 + 0.2693782544424143 0.9630344521529631 + 0.2139604348115697 0.9768423272643565 + 0.1578447207145324 0.9874639457431098 + 0.1012141499469077 0.9948646620774731 + 0.04425343965974749 0.9990203366690195 + -0.01285161614940513 0.9999174145709976 + -0.06991475265791579 0.997552969701751 + -0.1267498417751967 0.9919347143889877 + -0.1831714992538492 0.9830809742137711 + -0.238995689374548 0.9710206282362824 + -0.2940403252323039 0.9557930147983302 + -0.3481258626661013 0.9374478032098549 + -0.4010758858946333 0.9160448317379641 + -0.452717682947911 0.891653912426943 + -0.502882809017811 0.8643546033858764 + -0.5514076358900291 0.8342359492866327 + -0.5981338856653033 0.8013961909186528 + -0.6429091470290245 0.7659424447479145 + -0.6855873723852631 0.7279903535252857 + -0.7260293542336737 0.6876637090839059 + -0.7641031792354241 0.6450940485559584 + -0.7996846584870905 0.6004202253258841 + -0.8326577325990443 0.5537879561195048 + -0.8629148502570608 0.5053493457063482 + -0.8903573190323506 0.4552623907655068 + -0.914895627295748 0.4036904645333099 + -0.9364497361860409 0.3508017839137857 + -0.9549493406800994 0.2967688607900824 + -0.9703340989132492 0.2417679393265632 + -0.9825538290018901 0.1859784210969765 + -0.9915686727263722 0.1295822799138087 + -0.9973492255402215 0.07276346826753322 + -0.9998766324816606 0.0157073173118208 + -0.9991426496745736 -0.04140006764816076 + -0.9951496712183173 -0.09837241419257212 + -0.9879107213786663 -0.1550238903688171 + -0.9774494121053655 -0.211169710836747 + -0.9637998660148575 -0.2666267396000311 + -0.9470066050894003 -0.3212140873577135 + -0.9271244054556153 -0.3747537015275125 + -0.9042181187161474 -0.4270709470163373 + -0.8783624604172174 -0.4779951758436607 + -0.8496417663420389 -0.5273602837597652 + -0.8181497174250235 -0.5750052520432785 + -0.783989034184045 -0.6207746727107738 + -0.7472711416674596 -0.6645192554253124 + -0.7081158060087589 -0.7060963144504903 + -0.6666507437743362 -0.7453702340616536 + -0.6230112053785932 -0.7822129108962037 + -0.5773395339251989 -0.816504171800141 + -0.5297847009134748 -0.8481321658079123 + -0.4805018203243237 -0.8769937289770157 + -0.4296516426706702 -0.9029947208873342 + -0.377400030662694 -0.9260503317076225 + -0.3239174181981496 -0.9460853588275453 + -0.2693782544424148 -0.963034452152963 + -0.21396043481157 -0.9768423272643564 + -0.1578447207145323 -0.9874639457431098 + -0.1012141499469083 -0.9948646620774731 + -0.04425343965974761 -0.9990203366690195 + 0.01285161614940523 -0.9999174145709976 + 0.06991475265791544 -0.997552969701751 + 0.1267498417751965 -0.9919347143889877 + 0.1831714992538486 -0.9830809742137711 + 0.2389956893745477 -0.9710206282362824 + 0.2940403252323038 -0.9557930147983302 + 0.3481258626661007 -0.9374478032098551 + 0.4010758858946331 -0.9160448317379642 + 0.4527176829479109 -0.8916539124269431 + 0.5028828090178106 -0.8643546033858768 + 0.5514076358900289 -0.8342359492866327 + 0.5981338856653029 -0.8013961909186531 + 0.642909147029024 -0.765942444747915 + 0.685587372385263 -0.7279903535252857 + 0.7260293542336733 -0.6876637090839064 + 0.7641031792354241 -0.6450940485559585 + 0.7996846584870905 -0.6004202253258842 + 0.832657732599044 -0.5537879561195053 + 0.8629148502570607 -0.5053493457063483 + 0.8903573190323507 -0.4552623907655065 + 0.9148956272957478 -0.4036904645333105 + 0.9364497361860408 -0.3508017839137859 + 0.9549493406800993 -0.296768860790083 + 0.9703340989132491 -0.2417679393265637 + 0.9825538290018901 -0.1859784210969766 + 0.9915686727263721 -0.1295822799138092 + 0.9973492255402215 -0.07276346826753334
--- a/data/circ_intr.matrix +++ b/data/circ_intr.matrix @@ -1,551 +1,556 @@ -# Created by Octave 3.0.1, Sun Jun 29 04:02:42 2008 CDT <jordi@Iris> +# Created by Octave 3.0.1, Sun Jun 29 04:50:49 2008 CDT <jordi@Iris> # name: intr # type: matrix -# rows: 546 +# rows: 551 # columns: 2 - 0.07142857142857142 0 - 0.03571428571428572 0.06185895741317418 - -0.0357142857142857 0.06185895741317419 - -0.07142857142857142 8.747477136766808e-18 - -0.03571428571428575 -0.06185895741317417 - 0.03571428571428566 -0.06185895741317422 - 0.1428571428571428 0 - 0.1237179148263484 0.07142857142857141 - 0.07142857142857144 0.1237179148263484 - 8.747477136766808e-18 0.1428571428571428 - -0.0714285714285714 0.1237179148263484 - -0.1237179148263483 0.07142857142857147 - -0.1428571428571428 1.749495427353362e-17 - -0.1237179148263484 -0.07142857142857138 - -0.07142857142857149 -0.1237179148263483 - -2.624243141030042e-17 -0.1428571428571428 - 0.07142857142857133 -0.1237179148263484 - 0.1237179148263483 -0.07142857142857149 - 0.2142857142857143 0 - 0.2013627044541232 0.0732900307126433 - 0.1641523806683524 0.137740202075687 - 0.1071428571428572 0.1855768722395225 - 0.0372103237857708 0.2110302327883303 - -0.03721032378577078 0.2110302327883303 - -0.1071428571428571 0.1855768722395226 - -0.1641523806683524 0.137740202075687 - -0.2013627044541232 0.07329003071264333 - -0.2142857142857143 2.624243141030042e-17 - -0.2013627044541232 -0.07329003071264328 - -0.1641523806683524 -0.137740202075687 - -0.1071428571428572 -0.1855768722395225 - -0.03721032378577079 -0.2110302327883303 - 0.03721032378577071 -0.2110302327883303 - 0.1071428571428572 -0.1855768722395225 - 0.1641523806683524 -0.137740202075687 - 0.2013627044541232 -0.07329003071264345 - 0.2857142857142857 0 - 0.2759788075111624 0.07394829860072021 - 0.2474358296526968 0.1428571428571428 - 0.2020305089104422 0.2020305089104421 - 0.1428571428571429 0.2474358296526967 - 0.07394829860072027 0.2759788075111623 - 1.749495427353362e-17 0.2857142857142857 - -0.07394829860072018 0.2759788075111624 - -0.1428571428571428 0.2474358296526968 - -0.2020305089104421 0.2020305089104422 - -0.2474358296526967 0.1428571428571429 - -0.2759788075111623 0.07394829860072029 - -0.2857142857142857 3.498990854706723e-17 - -0.2759788075111624 -0.07394829860072009 - -0.2474358296526968 -0.1428571428571428 - -0.2020305089104422 -0.202030508910442 - -0.142857142857143 -0.2474358296526967 - -0.07394829860072043 -0.2759788075111623 - -5.248486282060085e-17 -0.2857142857142857 - 0.07394829860072008 -0.2759788075111624 - 0.1428571428571427 -0.2474358296526969 - 0.2020305089104421 -0.2020305089104422 - 0.2474358296526967 -0.142857142857143 - 0.2759788075111623 -0.07394829860072044 - 0.3571428571428571 0 - 0.349338428833502 0.07425417529205688 - 0.3262662348723574 0.1452630868127857 - 0.2889346408481955 0.209923304390169 - 0.2389752165567351 0.2654088662419264 - 0.1785714285714286 0.3092947870658709 - 0.1103632122767669 0.3396630415339834 - 0.03733159402416202 0.3551863912029547 - -0.0373315940241619 0.3551863912029548 - -0.1103632122767669 0.3396630415339834 - -0.1785714285714285 0.3092947870658709 - -0.2389752165567349 0.2654088662419266 - -0.2889346408481954 0.209923304390169 - -0.3262662348723574 0.1452630868127859 - -0.349338428833502 0.07425417529205704 - -0.3571428571428571 4.373738568383403e-17 - -0.349338428833502 -0.0742541752920568 - -0.3262662348723575 -0.1452630868127856 - -0.2889346408481955 -0.2099233043901689 - -0.2389752165567351 -0.2654088662419264 - -0.1785714285714287 -0.3092947870658708 - -0.110363212276767 -0.3396630415339834 - -0.03733159402416222 -0.3551863912029547 - 0.03733159402416177 -0.3551863912029548 - 0.1103632122767668 -0.3396630415339834 - 0.1785714285714283 -0.309294787065871 - 0.2389752165567349 -0.2654088662419266 - 0.2889346408481954 -0.209923304390169 - 0.3262662348723573 -0.145263086812786 - 0.349338428833502 -0.07425417529205709 - 0.4285714285714285 0 - 0.4220604655766605 0.07442064757154157 - 0.4027254089082464 0.1465800614252866 - 0.3711537444790451 0.2142857142857142 - 0.3283047613367048 0.2754804041513739 - 0.275480404151374 0.3283047613367048 - 0.2142857142857143 0.3711537444790451 - 0.1465800614252866 0.4027254089082464 - 0.0744206475715416 0.4220604655766605 - 2.624243141030042e-17 0.4285714285714285 - -0.07442064757154156 0.4220604655766605 - -0.1465800614252866 0.4027254089082464 - -0.2142857142857142 0.3711537444790451 - -0.275480404151374 0.3283047613367048 - -0.3283047613367048 0.275480404151374 - -0.3711537444790451 0.2142857142857142 - -0.4027254089082464 0.1465800614252867 - -0.4220604655766605 0.07442064757154172 - -0.4285714285714285 5.248486282060085e-17 - -0.4220604655766606 -0.07442064757154143 - -0.4027254089082464 -0.1465800614252866 - -0.3711537444790452 -0.2142857142857142 - -0.3283047613367048 -0.2754804041513739 - -0.275480404151374 -0.3283047613367048 - -0.2142857142857145 -0.371153744479045 - -0.1465800614252869 -0.4027254089082464 - -0.07442064757154157 -0.4220604655766605 - -7.872729423090127e-17 -0.4285714285714285 - 0.07442064757154142 -0.4220604655766606 - 0.1465800614252863 -0.4027254089082465 - 0.2142857142857143 -0.3711537444790451 - 0.2754804041513739 -0.3283047613367049 - 0.3283047613367048 -0.2754804041513741 - 0.371153744479045 -0.2142857142857145 - 0.4027254089082463 -0.1465800614252869 - 0.4220604655766605 -0.07442064757154158 - 0.5 0 - 0.4944154131125643 0.07452113308808722 - 0.4777864028930703 0.1473775872054521 - 0.4504844339512096 0.2169418695587791 - 0.4131193871579975 0.281660029031811 - 0.3665259359149132 0.3400863688854597 - 0.3117449009293668 0.3909157412340149 - 0.2499999999999999 0.4330127018922194 - 0.1826705121831975 0.4654368743221021 - 0.1112604669781572 0.4874639560909118 - 0.03736504679321209 0.4986018985905901 - -0.03736504679321213 0.4986018985905901 - -0.1112604669781572 0.4874639560909118 - -0.1826705121831975 0.4654368743221021 - -0.2500000000000001 0.4330127018922192 - -0.3117449009293667 0.390915741234015 - -0.3665259359149132 0.3400863688854597 - -0.4131193871579975 0.2816600290318109 - -0.4504844339512095 0.2169418695587791 - -0.4777864028930704 0.1473775872054521 - -0.4944154131125643 0.07452113308808714 - -0.5 6.123233995736766e-17 - -0.4944154131125643 -0.07452113308808724 - -0.4777864028930703 -0.1473775872054522 - -0.4504844339512096 -0.216941869558779 - -0.4131193871579975 -0.281660029031811 - -0.3665259359149131 -0.3400863688854597 - -0.3117449009293669 -0.3909157412340148 - -0.2499999999999998 -0.4330127018922194 - -0.1826705121831974 -0.4654368743221022 - -0.1112604669781573 -0.4874639560909118 - -0.03736504679321192 -0.4986018985905901 - 0.03736504679321218 -0.4986018985905901 - 0.1112604669781571 -0.4874639560909118 - 0.1826705121831977 -0.4654368743221021 - 0.2500000000000001 -0.4330127018922193 - 0.3117449009293667 -0.390915741234015 - 0.3665259359149133 -0.3400863688854596 - 0.4131193871579975 -0.281660029031811 - 0.4504844339512095 -0.2169418695587792 - 0.4777864028930704 -0.1473775872054519 - 0.4944154131125642 -0.07452113308808764 - 0.5714285714285714 0 - 0.5665399207850345 0.07458639555431518 - 0.5519576150223248 0.1478965972014404 - 0.5279311614350209 0.2186762470657656 - 0.4948716593053935 0.2857142857142856 - 0.4533447658807058 0.3478636737192689 - 0.4040610178208843 0.4040610178208842 - 0.3478636737192689 0.4533447658807058 - 0.2857142857142858 0.4948716593053935 - 0.2186762470657656 0.5279311614350209 - 0.1478965972014405 0.5519576150223247 - 0.07458639555431526 0.5665399207850345 - 3.498990854706723e-17 0.5714285714285714 - -0.07458639555431507 0.5665399207850346 - -0.1478965972014404 0.5519576150223248 - -0.2186762470657654 0.5279311614350211 - -0.2857142857142856 0.4948716593053935 - -0.3478636737192687 0.4533447658807059 - -0.4040610178208842 0.4040610178208843 - -0.4533447658807057 0.3478636737192691 - -0.4948716593053934 0.2857142857142859 - -0.5279311614350209 0.2186762470657656 - -0.5519576150223247 0.1478965972014406 - -0.5665399207850345 0.07458639555431541 - -0.5714285714285714 6.997981709413447e-17 - -0.5665399207850346 -0.07458639555431504 - -0.5519576150223248 -0.1478965972014402 - -0.5279311614350211 -0.2186762470657653 - -0.4948716593053936 -0.2857142857142855 - -0.4533447658807059 -0.3478636737192687 - -0.4040610178208845 -0.404061017820884 - -0.3478636737192691 -0.4533447658807057 - -0.285714285714286 -0.4948716593053933 - -0.2186762470657659 -0.5279311614350208 - -0.1478965972014409 -0.5519576150223245 - -0.0745863955543157 -0.5665399207850345 - -1.049697256412017e-16 -0.5714285714285714 - 0.07458639555431501 -0.5665399207850346 - 0.1478965972014402 -0.5519576150223248 - 0.2186762470657652 -0.5279311614350211 - 0.2857142857142853 -0.4948716593053937 - 0.3478636737192685 -0.4533447658807061 - 0.4040610178208842 -0.4040610178208844 - 0.4533447658807057 -0.3478636737192691 - 0.4948716593053933 -0.285714285714286 - 0.5279311614350208 -0.2186762470657659 - 0.5519576150223245 -0.1478965972014409 - 0.5665399207850345 -0.07458639555431575 - 0.6428571428571428 0 - 0.6385103728341062 0.07463115908050515 - 0.6255288453727438 0.1482530597629972 - 0.6040881133623697 0.2198700921379299 - 0.5744781259221935 0.2885137587002971 - 0.5370993073368877 0.3532557716169467 - 0.4924571420050572 0.4132206062270609 - 0.4411553386299001 0.4675973410112455 - 0.3838876660946482 0.5156506239139567 - 0.3214285714285715 0.5567306167185676 - 0.254622706739458 0.5902817829944618 - 0.1843735067428438 0.6158504007742428 - 0.1116309713573124 0.6330906983649908 - 0.03737881858530593 0.6417695303172438 - -0.03737881858530585 0.6417695303172438 - -0.1116309713573123 0.6330906983649908 - -0.1843735067428437 0.6158504007742428 - -0.2546227067394579 0.5902817829944618 - -0.3214285714285712 0.5567306167185677 - -0.3838876660946481 0.5156506239139568 - -0.4411553386299001 0.4675973410112456 - -0.4924571420050572 0.413220606227061 - -0.5370993073368876 0.3532557716169468 - -0.5744781259221935 0.2885137587002972 - -0.6040881133623696 0.21987009213793 - -0.6255288453727438 0.1482530597629974 - -0.6385103728341062 0.07463115908050523 - -0.6428571428571428 7.872729423090127e-17 - -0.6385103728341062 -0.07463115908050508 - -0.6255288453727438 -0.1482530597629972 - -0.6040881133623697 -0.2198700921379298 - -0.5744781259221935 -0.2885137587002971 - -0.5370993073368877 -0.3532557716169467 - -0.4924571420050572 -0.4132206062270609 - -0.4411553386299001 -0.4675973410112455 - -0.3838876660946482 -0.5156506239139567 - -0.3214285714285717 -0.5567306167185675 - -0.254622706739458 -0.5902817829944618 - -0.184373506742844 -0.6158504007742427 - -0.1116309713573123 -0.6330906983649908 - -0.03737881858530615 -0.6417695303172438 - 0.03737881858530592 -0.6417695303172438 - 0.1116309713573121 -0.6330906983649909 - 0.1843735067428438 -0.6158504007742428 - 0.2546227067394577 -0.5902817829944619 - 0.3214285714285715 -0.5567306167185676 - 0.383887666094648 -0.5156506239139568 - 0.4411553386299002 -0.4675973410112455 - 0.4924571420050571 -0.4132206062270611 - 0.5370993073368877 -0.3532557716169466 - 0.5744781259221935 -0.2885137587002973 - 0.6040881133623697 -0.2198700921379298 - 0.6255288453727438 -0.1482530597629974 - 0.6385103728341062 -0.07463115908050502 - 0.7142857142857142 0 - 0.7103727824059094 0.07466318804832389 - 0.6986768576670039 0.1485083505841138 - 0.6793260830679667 0.2207264245535338 - 0.6525324697447148 0.2905261736255715 - 0.6185895741317419 0.357142857142857 - 0.577869281696391 0.4198466087803379 - 0.530817732483853 0.47795043311347 - 0.4779504331134701 0.5308177324838529 - 0.4198466087803379 0.577869281696391 - 0.3571428571428572 0.6185895741317418 - 0.2905261736255716 0.6525324697447148 - 0.2207264245535339 0.6793260830679667 - 0.1485083505841139 0.6986768576670039 - 0.07466318804832404 0.7103727824059094 - 4.373738568383403e-17 0.7142857142857142 - -0.07466318804832379 0.7103727824059095 - -0.1485083505841136 0.6986768576670039 - -0.2207264245535338 0.6793260830679668 - -0.2905261736255714 0.6525324697447149 - -0.3571428571428569 0.6185895741317419 - -0.4198466087803378 0.577869281696391 - -0.4779504331134699 0.5308177324838531 - -0.5308177324838528 0.4779504331134702 - -0.5778692816963908 0.419846608780338 - -0.6185895741317416 0.3571428571428573 - -0.6525324697447148 0.2905261736255717 - -0.6793260830679667 0.2207264245535339 - -0.6986768576670039 0.1485083505841141 - -0.7103727824059094 0.07466318804832409 - -0.7142857142857142 8.747477136766807e-17 - -0.7103727824059095 -0.0746631880483236 - -0.6986768576670039 -0.1485083505841136 - -0.6793260830679668 -0.2207264245535338 - -0.652532469744715 -0.2905261736255713 - -0.618589574131742 -0.3571428571428569 - -0.5778692816963911 -0.4198466087803378 - -0.5308177324838532 -0.4779504331134699 - -0.4779504331134702 -0.5308177324838528 - -0.419846608780338 -0.5778692816963908 - -0.3571428571428574 -0.6185895741317416 - -0.290526173625572 -0.6525324697447146 - -0.2207264245535339 -0.6793260830679667 - -0.1485083505841141 -0.6986768576670039 - -0.07466318804832445 -0.7103727824059094 - -1.312121570515021e-16 -0.7142857142857142 - 0.07466318804832354 -0.7103727824059095 - 0.1485083505841132 -0.698676857667004 - 0.2207264245535337 -0.6793260830679668 - 0.2905261736255712 -0.652532469744715 - 0.3571428571428566 -0.6185895741317421 - 0.4198466087803377 -0.5778692816963911 - 0.4779504331134698 -0.5308177324838532 - 0.5308177324838526 -0.4779504331134705 - 0.5778692816963908 -0.4198466087803381 - 0.6185895741317416 -0.3571428571428574 - 0.6525324697447146 -0.290526173625572 - 0.6793260830679667 -0.220726424553534 - 0.6986768576670039 -0.1485083505841142 - 0.7103727824059094 -0.07466318804832449 - 0.7857142857142857 0 - 0.7821565105931378 0.07468689116757209 - 0.7715154049921267 0.1486974062831794 - 0.7538873364113908 0.2213612946611233 - 0.7294319473697712 0.2920205008759716 - 0.6983707096574399 0.3600351242143938 - 0.660984918653071 0.4247892137151124 - 0.617613145869333 0.4856963463161897 - 0.5686481727968409 0.542204937593088 - 0.5145334338141526 0.5938032369926315 - 0.45575900037737 0.6400239623252637 - 0.392857142857143 0.680448531544916 - 0.3263975102157679 0.7147108534928358 - 0.2569819711779742 0.7425006432758109 - 0.18523916361455 0.7635662322542113 - 0.1118188015004385 0.7777168471921614 - 0.03738579100436903 0.7848243379295062 - -0.03738579100436893 0.7848243379295062 - -0.1118188015004382 0.7777168471921615 - -0.1852391636145499 0.7635662322542113 - -0.256981971177974 0.742500643275811 - -0.3263975102157678 0.7147108534928359 - -0.3928571428571427 0.6804485315449161 - -0.4557590003773699 0.6400239623252638 - -0.5145334338141525 0.5938032369926315 - -0.5686481727968409 0.542204937593088 - -0.6176131458693328 0.48569634631619 - -0.6609849186530709 0.4247892137151125 - -0.6983707096574397 0.360035124214394 - -0.7294319473697712 0.2920205008759716 - -0.7538873364113907 0.2213612946611236 - -0.7715154049921266 0.1486974062831797 - -0.7821565105931378 0.07468689116757227 - -0.7857142857142857 9.622224850443489e-17 - -0.7821565105931378 -0.07468689116757206 - -0.7715154049921268 -0.1486974062831792 - -0.7538873364113908 -0.2213612946611231 - -0.7294319473697713 -0.2920205008759715 - -0.6983707096574399 -0.3600351242143938 - -0.6609849186530711 -0.4247892137151121 - -0.6176131458693332 -0.4856963463161896 - -0.568648172796841 -0.5422049375930879 - -0.5145334338141526 -0.5938032369926314 - -0.45575900037737 -0.6400239623252637 - -0.3928571428571432 -0.6804485315449158 - -0.3263975102157678 -0.7147108534928359 - -0.2569819711779743 -0.7425006432758108 - -0.1852391636145505 -0.7635662322542112 - -0.1118188015004384 -0.7777168471921614 - -0.03738579100436931 -0.7848243379295062 - 0.03738579100436901 -0.7848243379295062 - 0.1118188015004381 -0.7777168471921615 - 0.1852391636145495 -0.7635662322542115 - 0.2569819711779741 -0.742500643275811 - 0.3263975102157676 -0.714710853492836 - 0.3928571428571423 -0.6804485315449164 - 0.4557590003773698 -0.6400239623252638 - 0.5145334338141522 -0.5938032369926318 - 0.5686481727968408 -0.542204937593088 - 0.6176131458693328 -0.48569634631619 - 0.6609849186530706 -0.4247892137151129 - 0.6983707096574397 -0.360035124214394 - 0.7294319473697711 -0.292020500875972 - 0.7538873364113908 -0.2213612946611234 - 0.7715154049921266 -0.1486974062831798 - 0.7821565105931378 -0.0746868911675727 - 0.8571428571428571 0 - 0.8538811697929247 0.07470492235513557 - 0.8441209311533211 0.1488412951430831 - 0.8279364225334871 0.2218448958021606 - 0.8054508178164929 0.2931601228505732 - 0.7768352460314142 0.3622442243491709 - 0.7423074889580903 0.4285714285714285 - 0.7021303236762787 0.4916369454437537 - 0.6566095226734097 0.5509608083027479 - 0.6060915267313265 0.6060915267313264 - 0.550960808302748 0.6566095226734097 - 0.4916369454437538 0.7021303236762787 - 0.4285714285714287 0.7423074889580902 - 0.3622442243491709 0.7768352460314142 - 0.2931601228505732 0.8054508178164927 - 0.2218448958021606 0.8279364225334871 - 0.1488412951430832 0.8441209311533211 - 0.07470492235513573 0.8538811697929247 - 5.248486282060085e-17 0.8571428571428571 - -0.07470492235513544 0.8538811697929247 - -0.1488412951430831 0.8441209311533211 - -0.2218448958021605 0.8279364225334871 - -0.2931601228505732 0.8054508178164929 - -0.3622442243491708 0.7768352460314143 - -0.4285714285714284 0.7423074889580903 - -0.4916369454437535 0.7021303236762788 - -0.550960808302748 0.6566095226734097 - -0.6060915267313264 0.6060915267313265 - -0.6566095226734096 0.5509608083027481 - -0.7021303236762785 0.491636945443754 - -0.7423074889580903 0.4285714285714285 - -0.7768352460314142 0.362244224349171 - -0.8054508178164927 0.2931601228505733 - -0.827936422533487 0.2218448958021609 - -0.8441209311533211 0.1488412951430834 - -0.8538811697929247 0.07470492235513559 - -0.8571428571428571 1.049697256412017e-16 - -0.8538811697929247 -0.07470492235513537 - -0.8441209311533212 -0.1488412951430829 - -0.8279364225334871 -0.2218448958021607 - -0.8054508178164929 -0.2931601228505731 - -0.7768352460314143 -0.3622442243491708 - -0.7423074889580904 -0.4285714285714283 - -0.7021303236762788 -0.4916369454437535 - -0.6566095226734097 -0.5509608083027479 - -0.6060915267313266 -0.6060915267313264 - -0.5509608083027481 -0.6566095226734096 - -0.491636945443754 -0.7021303236762785 - -0.4285714285714289 -0.74230748895809 - -0.3622442243491714 -0.776835246031414 - -0.2931601228505737 -0.8054508178164927 - -0.2218448958021605 -0.8279364225334871 - -0.1488412951430831 -0.8441209311533211 - -0.07470492235513564 -0.8538811697929247 - -1.574545884618025e-16 -0.8571428571428571 - 0.07470492235513533 -0.8538811697929247 - 0.1488412951430828 -0.8441209311533212 - 0.2218448958021602 -0.8279364225334872 - 0.2931601228505727 -0.805450817816493 - 0.3622442243491704 -0.7768352460314145 - 0.4285714285714287 -0.7423074889580902 - 0.4916369454437537 -0.7021303236762787 - 0.5509608083027479 -0.6566095226734098 - 0.6060915267313263 -0.6060915267313266 - 0.6566095226734096 -0.5509608083027482 - 0.7021303236762785 -0.4916369454437541 - 0.74230748895809 -0.4285714285714289 - 0.776835246031414 -0.3622442243491714 - 0.8054508178164926 -0.2931601228505738 - 0.8279364225334871 -0.2218448958021606 - 0.8441209311533211 -0.1488412951430832 - 0.8538811697929247 -0.07470492235513569 - 0.9285714285714285 0 - 0.925560357553195 0.07471895666553116 - 0.9165466724494904 0.148953332225063 - 0.9015888304670482 0.2222216882670179 - 0.8807838389509207 0.2940488513870816 - 0.8542666262546225 0.3639689948700696 - 0.8222091666779806 0.4315286597549279 - 0.7848193651478093 0.4962896956901009 - 0.7423397088746796 0.5578321025066946 - 0.6950456947303082 0.6157567540807383 - 0.6432440425446281 0.6696879868192562 - 0.5872707059099931 0.7192760359828221 - 0.5274886933932161 0.7641993040441094 - 0.4642857142857144 0.8041664463712643 - 0.3980716641599789 0.8389182607096406 - 0.3292759665394975 0.868229368207885 - 0.2583447879224204 0.8919096750862742 - 0.1857381442206127 0.9098056054678199 - 0.111926917379943 0.9218010973767643 - 0.03738980153017129 0.9278183554450288 - -0.03738980153017098 0.9278183554450289 - -0.1119269173799427 0.9218010973767643 - -0.1857381442206126 0.9098056054678199 - -0.25834478792242 0.8919096750862743 - -0.3292759665394972 0.8682293682078851 - -0.3980716641599786 0.8389182607096407 - -0.464285714285714 0.8041664463712644 - -0.5274886933932159 0.7641993040441095 - -0.5872707059099931 0.7192760359828221 - -0.643244042544628 0.6696879868192563 - -0.6950456947303079 0.6157567540807386 - -0.7423397088746794 0.5578321025066949 - -0.7848193651478093 0.4962896956901011 - -0.8222091666779805 0.431528659754928 - -0.8542666262546225 0.3639689948700697 - -0.8807838389509206 0.294048851387082 - -0.9015888304670481 0.2222216882670182 - -0.9165466724494904 0.1489533322250633 - -0.9255603575531949 0.07471895666553136 - -0.9285714285714285 1.137172027779685e-16 - -0.925560357553195 -0.07471895666553072 - -0.9165466724494905 -0.1489533322250627 - -0.9015888304670483 -0.2222216882670176 - -0.8807838389509208 -0.2940488513870814 - -0.8542666262546225 -0.3639689948700696 - -0.8222091666779806 -0.4315286597549278 - -0.7848193651478096 -0.4962896956901006 - -0.7423397088746798 -0.5578321025066943 - -0.6950456947303083 -0.6157567540807382 - -0.6432440425446282 -0.6696879868192561 - -0.5872707059099935 -0.7192760359828216 - -0.5274886933932161 -0.7641993040441094 - -0.4642857142857146 -0.8041664463712641 - -0.3980716641599788 -0.8389182607096407 - -0.3292759665394976 -0.868229368207885 - -0.2583447879224209 -0.8919096750862741 - -0.1857381442206128 -0.9098056054678199 - -0.1119269173799433 -0.9218010973767643 - -0.0373898015301712 -0.9278183554450288 - 0.03738980153017086 -0.9278183554450289 - 0.1119269173799421 -0.9218010973767644 - 0.1857381442206125 -0.90980560546782 - 0.2583447879224198 -0.8919096750862744 - 0.3292759665394973 -0.8682293682078851 - 0.3980716641599785 -0.8389182607096407 - 0.4642857142857136 -0.8041664463712648 - 0.5274886933932159 -0.7641993040441096 - 0.5872707059099926 -0.7192760359828225 - 0.6432440425446279 -0.6696879868192565 - 0.6950456947303078 -0.6157567540807386 - 0.742339708874679 -0.5578321025066953 - 0.7848193651478093 -0.4962896956901012 - 0.8222091666779803 -0.4315286597549285 - 0.8542666262546224 -0.3639689948700698 - 0.8807838389509206 -0.2940488513870821 - 0.901588830467048 -0.2222216882670187 - 0.9165466724494904 -0.1489533322250634 - 0.9255603575531949 -0.07471895666553187 + 0 0 + 0.09090909090909091 0 + 0.0735469994886316 0.05343502293567938 + 0.02809245403408613 0.08645968329955941 + -0.02809245403408612 0.08645968329955943 + -0.07354699948863158 0.05343502293567939 + -0.09090909090909091 1.113315271952139e-17 + -0.0735469994886316 -0.05343502293567937 + -0.02809245403408614 -0.08645968329955941 + 0.02809245403408611 -0.08645968329955943 + 0.07354699948863158 -0.0534350229356794 + 0.1818181818181818 0 + 0.1729193665991188 0.05618490806817226 + 0.1470939989772632 0.1068700458713588 + 0.1068700458713588 0.1470939989772632 + 0.05618490806817227 0.1729193665991188 + 1.113315271952139e-17 0.1818181818181818 + -0.05618490806817224 0.1729193665991189 + -0.1068700458713587 0.1470939989772632 + -0.1470939989772632 0.1068700458713588 + -0.1729193665991188 0.05618490806817227 + -0.1818181818181818 2.226630543904279e-17 + -0.1729193665991189 -0.05618490806817224 + -0.1470939989772632 -0.1068700458713587 + -0.1068700458713588 -0.1470939989772632 + -0.05618490806817229 -0.1729193665991188 + -3.339945815856418e-17 -0.1818181818181818 + 0.05618490806817222 -0.1729193665991189 + 0.1068700458713587 -0.1470939989772632 + 0.1470939989772632 -0.1068700458713588 + 0.1729193665991188 -0.05618490806817229 + 0.2727272727272727 0 + 0.2667675274728561 0.05670318840484345 + 0.2491487611752548 0.1109281753843091 + 0.2206409984658947 0.1603050688070381 + 0.1824901653705977 0.2026758614938347 + 0.1363636363636364 0.236188746486665 + 0.08427736210225839 0.2593790498986782 + 0.02850776270936009 0.2712332441913473 + -0.02850776270936 0.2712332441913473 + -0.08427736210225836 0.2593790498986783 + -0.1363636363636363 0.2361887464866651 + -0.1824901653705976 0.2026758614938348 + -0.2206409984658947 0.1603050688070382 + -0.2491487611752547 0.1109281753843092 + -0.266767527472856 0.05670318840484356 + -0.2727272727272727 3.339945815856417e-17 + -0.2667675274728561 -0.05670318840484338 + -0.2491487611752548 -0.110928175384309 + -0.2206409984658948 -0.1603050688070381 + -0.1824901653705978 -0.2026758614938347 + -0.1363636363636365 -0.236188746486665 + -0.08427736210225842 -0.2593790498986782 + -0.02850776270936024 -0.2712332441913473 + 0.0285077627093599 -0.2712332441913473 + 0.08427736210225834 -0.2593790498986783 + 0.1363636363636362 -0.2361887464866652 + 0.1824901653705976 -0.2026758614938349 + 0.2206409984658947 -0.1603050688070382 + 0.2491487611752547 -0.1109281753843093 + 0.266767527472856 -0.0567031884048436 + 0.3636363636363636 0 + 0.3591593965800501 0.05688526001462941 + 0.3458387331982377 0.1123698161363445 + 0.3240023724321338 0.1650874544507443 + 0.2941879979545264 0.2137400917427175 + 0.25712973861329 0.25712973861329 + 0.2137400917427175 0.2941879979545264 + 0.1650874544507443 0.3240023724321338 + 0.1123698161363445 0.3458387331982377 + 0.05688526001462943 0.3591593965800501 + 2.226630543904279e-17 0.3636363636363636 + -0.05688526001462939 0.3591593965800501 + -0.1123698161363445 0.3458387331982377 + -0.1650874544507443 0.3240023724321338 + -0.2137400917427175 0.2941879979545264 + -0.25712973861329 0.25712973861329 + -0.2941879979545263 0.2137400917427175 + -0.3240023724321338 0.1650874544507443 + -0.3458387331982377 0.1123698161363445 + -0.3591593965800501 0.05688526001462945 + -0.3636363636363636 4.453261087808557e-17 + -0.3591593965800501 -0.05688526001462936 + -0.3458387331982377 -0.1123698161363445 + -0.3240023724321338 -0.1650874544507443 + -0.2941879979545264 -0.2137400917427175 + -0.2571297386132901 -0.25712973861329 + -0.2137400917427175 -0.2941879979545263 + -0.1650874544507443 -0.3240023724321338 + -0.1123698161363446 -0.3458387331982377 + -0.05688526001462947 -0.3591593965800501 + -6.679891631712836e-17 -0.3636363636363636 + 0.05688526001462934 -0.3591593965800501 + 0.1123698161363444 -0.3458387331982377 + 0.1650874544507442 -0.3240023724321338 + 0.2137400917427174 -0.2941879979545264 + 0.25712973861329 -0.2571297386132901 + 0.2941879979545263 -0.2137400917427176 + 0.3240023724321338 -0.1650874544507444 + 0.3458387331982377 -0.1123698161363446 + 0.3591593965800501 -0.05688526001462949 + 0.4545454545454546 0 + 0.4509612278702173 0.0569696516201383 + 0.4402650732402869 0.1130408578022067 + 0.4226256754037506 0.1673293421293991 + 0.3983212182017562 0.218978942773507 + 0.367734997443158 0.2671751146783969 + 0.3313493761006416 0.3111577754221312 + 0.2897381771584953 0.3502332921708133 + 0.2435576340813621 0.3837854206827341 + 0.1935360416204876 0.4112850238481908 + 0.1404622701704307 0.4322984164977971 + 0.08517332481169297 0.4464942048766767 + 0.02854114524059696 0.4536485129219416 + -0.028541145240597 0.4536485129219416 + -0.08517332481169311 0.4464942048766767 + -0.1404622701704307 0.4322984164977971 + -0.1935360416204876 0.4112850238481907 + -0.2435576340813622 0.3837854206827341 + -0.2897381771584954 0.3502332921708133 + -0.3313493761006417 0.3111577754221312 + -0.3677349974431579 0.2671751146783969 + -0.3983212182017562 0.2189789427735069 + -0.4226256754037507 0.167329342129399 + -0.4402650732402869 0.1130408578022068 + -0.4509612278702173 0.05696965162013823 + -0.4545454545454546 -1.461929681524215e-16 + -0.4509612278702173 -0.05696965162013832 + -0.4402650732402869 -0.1130408578022068 + -0.4226256754037506 -0.1673293421293992 + -0.3983212182017561 -0.218978942773507 + -0.3677349974431579 -0.267175114678397 + -0.3313493761006416 -0.3111577754221312 + -0.2897381771584953 -0.3502332921708134 + -0.243557634081362 -0.3837854206827342 + -0.1935360416204874 -0.4112850238481909 + -0.1404622701704307 -0.4322984164977971 + -0.08517332481169303 -0.4464942048766767 + -0.02854114524059691 -0.4536485129219416 + 0.02854114524059715 -0.4536485129219416 + 0.08517332481169325 -0.4464942048766767 + 0.1404622701704306 -0.4322984164977972 + 0.1935360416204876 -0.4112850238481908 + 0.2435576340813622 -0.3837854206827341 + 0.2897381771584955 -0.3502332921708132 + 0.3313493761006418 -0.3111577754221311 + 0.3677349974431581 -0.2671751146783967 + 0.3983212182017562 -0.218978942773507 + 0.4226256754037507 -0.167329342129399 + 0.440265073240287 -0.1130408578022066 + 0.4509612278702172 -0.05696965162013848 + 0.5454545454545454 0 + 0.5424664883826945 0.05701552541872006 + 0.5335350549457122 0.1134063768096869 + 0.5187580997973564 0.1685547242045168 + 0.4982975223505095 0.2218563507686183 + 0.4723774929733301 0.2727272727272727 + 0.4412819969317895 0.3206101376140763 + 0.4053517229876696 0.3649803307411953 + 0.3649803307411954 0.4053517229876695 + 0.3206101376140763 0.4412819969317895 + 0.2727272727272728 0.4723774929733301 + 0.2218563507686184 0.4982975223505095 + 0.1685547242045168 0.5187580997973564 + 0.113406376809687 0.5335350549457121 + 0.05701552541872018 0.5424664883826945 + 3.339945815856417e-17 0.5454545454545454 + -0.05701552541871999 0.5424664883826945 + -0.1134063768096868 0.5335350549457122 + -0.1685547242045167 0.5187580997973565 + -0.2218563507686182 0.4982975223505096 + -0.2727272727272726 0.4723774929733301 + -0.3206101376140762 0.4412819969317895 + -0.3649803307411952 0.4053517229876697 + -0.4053517229876694 0.3649803307411955 + -0.4412819969317894 0.3206101376140763 + -0.47237749297333 0.2727272727272729 + -0.4982975223505094 0.2218563507686184 + -0.5187580997973564 0.1685547242045168 + -0.5335350549457121 0.1134063768096871 + -0.5424664883826945 0.05701552541872022 + -0.5454545454545454 6.679891631712835e-17 + -0.5424664883826945 -0.05701552541871984 + -0.5335350549457122 -0.1134063768096868 + -0.5187580997973565 -0.1685547242045167 + -0.4982975223505097 -0.2218563507686181 + -0.4723774929733302 -0.2727272727272725 + -0.4412819969317895 -0.3206101376140762 + -0.4053517229876697 -0.3649803307411952 + -0.3649803307411955 -0.4053517229876694 + -0.3206101376140763 -0.4412819969317894 + -0.2727272727272729 -0.47237749297333 + -0.2218563507686186 -0.4982975223505093 + -0.1685547242045168 -0.5187580997973564 + -0.1134063768096872 -0.5335350549457121 + -0.05701552541872049 -0.5424664883826945 + -1.001983744756925e-16 -0.5454545454545454 + 0.05701552541871981 -0.5424664883826945 + 0.1134063768096865 -0.5335350549457122 + 0.1685547242045167 -0.5187580997973565 + 0.221856350768618 -0.4982975223505097 + 0.2727272727272723 -0.4723774929733304 + 0.3206101376140761 -0.4412819969317895 + 0.3649803307411951 -0.4053517229876697 + 0.4053517229876692 -0.3649803307411957 + 0.4412819969317894 -0.3206101376140764 + 0.47237749297333 -0.2727272727272729 + 0.4982975223505093 -0.2218563507686187 + 0.5187580997973564 -0.1685547242045169 + 0.5335350549457121 -0.1134063768096872 + 0.5424664883826945 -0.05701552541872053 + 0.6363636363636364 0 + 0.6338018234515158 0.05704319657491223 + 0.6261370109264007 0.1136271148718597 + 0.6134309113519066 0.1692961744515205 + 0.5957858267707419 0.2236021607790362 + 0.5733438250288122 0.2761078339839006 + 0.5462855959284603 0.3263904492583039 + 0.5148289964204211 0.3740451605497556 + 0.4792272965477524 0.4186882801434534 + 0.4397671402643684 0.4599603678901583 + 0.3967662375464668 0.497529125206928 + 0.3505708063786107 0.5310920705499198 + 0.30155278521009 0.5603789748179242 + 0.2501068383252241 0.5851540370781958 + 0.1966471782386029 0.6052177830969159 + 0.1416042306994728 0.6204086713884333 + 0.08542116915668989 0.630604393852322 + 0.02855034658669136 0.6357228605262911 + -0.02855034658669128 0.6357228605262911 + -0.08542116915668981 0.6306043938523221 + -0.1416042306994728 0.6204086713884333 + -0.1966471782386028 0.605217783096916 + -0.2501068383252241 0.5851540370781959 + -0.30155278521009 0.5603789748179242 + -0.3505708063786106 0.5310920705499198 + -0.3967662375464668 0.4975291252069281 + -0.4397671402643684 0.4599603678901583 + -0.4792272965477524 0.4186882801434536 + -0.514828996420421 0.3740451605497557 + -0.5462855959284603 0.326390449258304 + -0.5733438250288121 0.2761078339839007 + -0.5957858267707419 0.2236021607790363 + -0.6134309113519066 0.1692961744515206 + -0.6261370109264007 0.1136271148718598 + -0.6338018234515158 0.0570431965749123 + -0.6363636363636364 7.793206903664974e-17 + -0.6338018234515158 -0.05704319657491214 + -0.6261370109264007 -0.1136271148718596 + -0.6134309113519066 -0.1692961744515205 + -0.5957858267707419 -0.2236021607790362 + -0.5733438250288122 -0.2761078339839005 + -0.5462855959284603 -0.3263904492583038 + -0.5148289964204211 -0.3740451605497556 + -0.4792272965477525 -0.4186882801434534 + -0.4397671402643685 -0.4599603678901582 + -0.3967662375464669 -0.497529125206928 + -0.3505708063786108 -0.5310920705499198 + -0.3015527852100902 -0.5603789748179241 + -0.2501068383252242 -0.5851540370781958 + -0.196647178238603 -0.6052177830969159 + -0.1416042306994729 -0.6204086713884333 + -0.08542116915668996 -0.630604393852322 + -0.02855034658669143 -0.6357228605262911 + 0.0285503465866912 -0.6357228605262911 + 0.08542116915668974 -0.6306043938523221 + 0.1416042306994727 -0.6204086713884333 + 0.1966471782386028 -0.605217783096916 + 0.250106838325224 -0.5851540370781959 + 0.3015527852100899 -0.5603789748179242 + 0.3505708063786105 -0.5310920705499199 + 0.3967662375464667 -0.4975291252069281 + 0.4397671402643684 -0.4599603678901583 + 0.4792272965477523 -0.4186882801434536 + 0.514828996420421 -0.3740451605497558 + 0.5462855959284602 -0.326390449258304 + 0.5733438250288121 -0.2761078339839008 + 0.5957858267707418 -0.2236021607790364 + 0.6134309113519066 -0.1692961744515207 + 0.6261370109264007 -0.1136271148718598 + 0.6338018234515157 -0.05704319657491239 + 0.7272727272727273 0 + 0.7250307881695476 0.05706116052934178 + 0.7183187931601002 0.1137705200292588 + 0.707178123925583 0.1697784464406585 + 0.6916774663964753 0.224739632272689 + 0.6719123872809358 0.2783152235382471 + 0.6480047448642676 0.3301749089014885 + 0.620101937712067 0.3799989561570537 + 0.5883759959090528 0.427480183485435 + 0.5530225204363861 0.4723258533310427 + 0.5142594772265801 0.5142594772265799 + 0.4723258533310427 0.5530225204363861 + 0.427480183485435 0.5883759959090528 + 0.3799989561570538 0.620101937712067 + 0.3301749089014886 0.6480047448642675 + 0.2783152235382472 0.6719123872809358 + 0.2247396322726891 0.6916774663964753 + 0.1697784464406585 0.707178123925583 + 0.1137705200292589 0.7183187931601002 + 0.05706116052934182 0.7250307881695476 + 4.453261087808557e-17 0.7272727272727273 + -0.05706116052934173 0.7250307881695476 + -0.1137705200292588 0.7183187931601002 + -0.1697784464406584 0.7071781239255831 + -0.224739632272689 0.6916774663964754 + -0.2783152235382471 0.6719123872809358 + -0.3301749089014885 0.6480047448642676 + -0.3799989561570537 0.6201019377120671 + -0.4274801834854349 0.5883759959090528 + -0.4723258533310426 0.5530225204363862 + -0.5142594772265799 0.5142594772265801 + -0.5530225204363861 0.4723258533310428 + -0.5883759959090527 0.4274801834854351 + -0.620101937712067 0.3799989561570538 + -0.6480047448642675 0.3301749089014887 + -0.6719123872809358 0.2783152235382472 + -0.6916774663964753 0.2247396322726891 + -0.707178123925583 0.1697784464406586 + -0.7183187931601002 0.1137705200292589 + -0.7250307881695476 0.05706116052934187 + -0.7272727272727273 8.906522175617114e-17 + -0.7250307881695476 -0.05706116052934169 + -0.7183187931601002 -0.1137705200292587 + -0.7071781239255831 -0.1697784464406584 + -0.6916774663964754 -0.2247396322726889 + -0.6719123872809359 -0.2783152235382471 + -0.6480047448642676 -0.3301749089014885 + -0.6201019377120671 -0.3799989561570536 + -0.5883759959090528 -0.4274801834854349 + -0.5530225204363862 -0.4723258533310426 + -0.5142594772265802 -0.5142594772265799 + -0.472325853331043 -0.5530225204363859 + -0.4274801834854351 -0.5883759959090527 + -0.3799989561570535 -0.6201019377120672 + -0.3301749089014887 -0.6480047448642675 + -0.2783152235382475 -0.6719123872809357 + -0.2247396322726891 -0.6916774663964753 + -0.1697784464406583 -0.7071781239255831 + -0.1137705200292589 -0.7183187931601002 + -0.05706116052934224 -0.7250307881695476 + -1.335978326342567e-16 -0.7272727272727273 + 0.05706116052934197 -0.7250307881695476 + 0.1137705200292587 -0.7183187931601002 + 0.169778446440658 -0.7071781239255831 + 0.2247396322726889 -0.6916774663964754 + 0.2783152235382473 -0.6719123872809357 + 0.3301749089014885 -0.6480047448642676 + 0.3799989561570534 -0.6201019377120673 + 0.4274801834854349 -0.5883759959090528 + 0.4723258533310428 -0.5530225204363861 + 0.5142594772265799 -0.5142594772265802 + 0.5530225204363858 -0.4723258533310431 + 0.5883759959090527 -0.4274801834854352 + 0.6201019377120671 -0.3799989561570536 + 0.6480047448642675 -0.3301749089014887 + 0.6719123872809357 -0.2783152235382476 + 0.6916774663964753 -0.2247396322726892 + 0.7071781239255831 -0.1697784464406583 + 0.7183187931601002 -0.113770520029259 + 0.7250307881695476 -0.05706116052934227 + 0.8181818181818182 0 + 0.8161887683944017 0.0570734785179207 + 0.8102193289703759 0.1138689007855081 + 0.8003025824185683 0.1701095652145304 + 0.7864868421313519 0.2255214729411812 + 0.7688394170066524 0.2798346627210017 + 0.7474462835257644 0.3327845261529275 + 0.7224116668845767 0.3841130968248198 + 0.693857533218894 0.433570307099895 + 0.6619229953976843 0.4809152064211144 + 0.6267636352791639 0.5259171351980776 + 0.5885507457316237 0.5683568485573615 + 0.5474704961117931 0.6080275844815044 + 0.5037230252664477 0.6447360711327726 + 0.4575214664760656 0.6783034684541251 + 0.4090909090909092 0.7085662394599953 + 0.3586673019183361 0.7353769469720458 + 0.306496303703928 0.7586049719182807 + 0.2528320863067752 0.7781371496960348 + 0.1979360963997281 0.7938783214985426 + 0.1420757817274885 0.8057517979190794 + 0.0855232881280801 0.8136997325740418 + 0.0285541336656827 0.8176834039247147 + -0.0285541336656826 0.8176834039247147 + -0.08552328812808019 0.8136997325740418 + -0.1420757817274884 0.8057517979190794 + -0.1979360963997282 0.7938783214985426 + -0.2528320863067751 0.7781371496960349 + -0.3064963037039281 0.7586049719182807 + -0.3586673019183362 0.7353769469720457 + -0.4090909090909089 0.7085662394599953 + -0.4575214664760655 0.6783034684541251 + -0.5037230252664477 0.6447360711327726 + -0.5474704961117931 0.6080275844815044 + -0.5885507457316237 0.5683568485573613 + -0.6267636352791638 0.5259171351980778 + -0.6619229953976842 0.4809152064211145 + -0.693857533218894 0.433570307099895 + -0.7224116668845767 0.3841130968248197 + -0.7474462835257643 0.3327845261529276 + -0.7688394170066523 0.2798346627210018 + -0.7864868421313519 0.2255214729411812 + -0.8003025824185683 0.1701095652145304 + -0.8102193289703759 0.113868900785508 + -0.8161887683944017 0.05707347851792089 + -0.8181818181818182 1.001983744756925e-16 + -0.8161887683944017 -0.05707347851792068 + -0.8102193289703757 -0.1138689007855082 + -0.8003025824185682 -0.1701095652145305 + -0.7864868421313519 -0.225521472941181 + -0.7688394170066524 -0.2798346627210017 + -0.7474462835257644 -0.3327845261529275 + -0.7224116668845766 -0.3841130968248198 + -0.6938575332188941 -0.4335703070998949 + -0.6619229953976844 -0.4809152064211143 + -0.6267636352791639 -0.5259171351980776 + -0.5885507457316237 -0.5683568485573615 + -0.547470496111793 -0.6080275844815045 + -0.5037230252664475 -0.6447360711327726 + -0.4575214664760654 -0.6783034684541251 + -0.4090909090909095 -0.7085662394599951 + -0.3586673019183363 -0.7353769469720456 + -0.3064963037039283 -0.7586049719182806 + -0.2528320863067753 -0.7781371496960348 + -0.1979360963997282 -0.7938783214985426 + -0.1420757817274885 -0.8057517979190794 + -0.08552328812808002 -0.8136997325740419 + -0.02855413366568244 -0.8176834039247147 + 0.02855413366568287 -0.8176834039247147 + 0.08552328812807972 -0.8136997325740419 + 0.1420757817274882 -0.8057517979190795 + 0.1979360963997279 -0.7938783214985428 + 0.252832086306775 -0.7781371496960349 + 0.306496303703928 -0.7586049719182807 + 0.3586673019183361 -0.7353769469720458 + 0.4090909090909092 -0.7085662394599953 + 0.4575214664760658 -0.678303468454125 + 0.5037230252664479 -0.6447360711327724 + 0.5474704961117928 -0.6080275844815047 + 0.5885507457316235 -0.5683568485573617 + 0.6267636352791637 -0.5259171351980779 + 0.6619229953976842 -0.4809152064211146 + 0.693857533218894 -0.433570307099895 + 0.7224116668845766 -0.3841130968248198 + 0.7474462835257645 -0.3327845261529274 + 0.7688394170066524 -0.2798346627210016 + 0.7864868421313519 -0.225521472941181 + 0.8003025824185682 -0.1701095652145308 + 0.8102193289703757 -0.1138689007855085 + 0.8161887683944017 -0.05707347851792098 + 0.9090909090909092 0 + 0.9072970258438833 0.05708229048119398 + 0.9019224557404345 0.1139393032402766 + 0.8929884097533535 0.1703466496233861 + 0.8805301464805738 0.2260817156044135 + 0.8645968329955942 0.2809245403408613 + 0.8452513508075012 0.3346586842587982 + 0.8225700476963814 0.3870720832409753 + 0.7966424364035124 0.437957885547014 + 0.7675708413654683 0.4871152681627243 + 0.7354699948863159 0.5343502293567938 + 0.7004665843416266 0.5794763543169907 + 0.6626987522012833 0.6223155508442625 + 0.6223155508442624 0.6626987522012833 + 0.5794763543169906 0.7004665843416267 + 0.5343502293567937 0.7354699948863159 + 0.4871152681627242 0.7675708413654683 + 0.4379578855470138 0.7966424364035125 + 0.3870720832409752 0.8225700476963815 + 0.3346586842587981 0.8452513508075014 + 0.2809245403408613 0.8645968329955942 + 0.2260817156044134 0.8805301464805738 + 0.1703466496233859 0.8929884097533535 + 0.1139393032402766 0.9019224557404345 + 0.05708229048119392 0.9072970258438833 + -1.461929681524215e-16 0.9090909090909092 + -0.05708229048119401 0.9072970258438833 + -0.1139393032402767 0.9019224557404344 + -0.1703466496233862 0.8929884097533534 + -0.2260817156044135 0.8805301464805738 + -0.2809245403408615 0.8645968329955942 + -0.3346586842587982 0.8452513508075012 + -0.3870720832409753 0.8225700476963814 + -0.4379578855470141 0.7966424364035123 + -0.4871152681627245 0.7675708413654683 + -0.5343502293567937 0.7354699948863159 + -0.5794763543169907 0.7004665843416267 + -0.6223155508442625 0.6626987522012832 + -0.6626987522012834 0.6223155508442624 + -0.7004665843416268 0.5794763543169905 + -0.7354699948863158 0.5343502293567939 + -0.7675708413654683 0.4871152681627243 + -0.7966424364035124 0.4379578855470139 + -0.8225700476963815 0.387072083240975 + -0.8452513508075014 0.334658684258798 + -0.8645968329955943 0.2809245403408611 + -0.8805301464805738 0.2260817156044135 + -0.8929884097533535 0.170346649623386 + -0.9019224557404345 0.1139393032402765 + -0.9072970258438833 0.05708229048119377 + -0.9090909090909092 -2.92385936304843e-16 + -0.9072970258438833 -0.05708229048119395 + -0.9019224557404345 -0.1139393032402766 + -0.8929884097533534 -0.1703466496233862 + -0.8805301464805738 -0.2260817156044137 + -0.8645968329955942 -0.2809245403408616 + -0.8452513508075012 -0.3346586842587985 + -0.8225700476963814 -0.3870720832409752 + -0.7966424364035123 -0.437957885547014 + -0.7675708413654683 -0.4871152681627244 + -0.7354699948863157 -0.534350229356794 + -0.7004665843416265 -0.579476354316991 + -0.6626987522012833 -0.6223155508442625 + -0.6223155508442624 -0.6626987522012833 + -0.5794763543169905 -0.7004665843416268 + -0.5343502293567939 -0.7354699948863158 + -0.487115268162724 -0.7675708413654685 + -0.4379578855470139 -0.7966424364035124 + -0.3870720832409748 -0.8225700476963818 + -0.334658684258798 -0.8452513508075014 + -0.2809245403408615 -0.8645968329955942 + -0.2260817156044131 -0.8805301464805739 + -0.1703466496233861 -0.8929884097533535 + -0.1139393032402761 -0.9019224557404345 + -0.05708229048119383 -0.9072970258438833 + -1.669972907928209e-16 -0.9090909090909092 + 0.05708229048119429 -0.9072970258438833 + 0.1139393032402766 -0.9019224557404345 + 0.1703466496233865 -0.8929884097533534 + 0.2260817156044136 -0.8805301464805738 + 0.2809245403408611 -0.8645968329955943 + 0.3346586842587985 -0.8452513508075012 + 0.3870720832409751 -0.8225700476963815 + 0.4379578855470143 -0.7966424364035122 + 0.4871152681627244 -0.7675708413654683 + 0.5343502293567943 -0.7354699948863155 + 0.579476354316991 -0.7004665843416265 + 0.6223155508442624 -0.6626987522012833 + 0.6626987522012836 -0.6223155508442622 + 0.7004665843416268 -0.5794763543169906 + 0.7354699948863163 -0.5343502293567933 + 0.7675708413654685 -0.487115268162724 + 0.7966424364035124 -0.437957885547014 + 0.8225700476963816 -0.3870720832409748 + 0.8452513508075014 -0.3346586842587981 + 0.8645968329955944 -0.2809245403408607 + 0.8805301464805739 -0.2260817156044132 + 0.8929884097533535 -0.1703466496233861 + 0.9019224557404345 -0.1139393032402762 + 0.9072970258438833 -0.05708229048119388
--- a/data/circ_nrml.matrix +++ b/data/circ_nrml.matrix @@ -1,89 +1,115 @@ -# Created by Octave 3.0.1, Sun Jun 29 04:02:42 2008 CDT <jordi@Iris> +# Created by Octave 3.0.1, Sun Jun 29 04:50:49 2008 CDT <jordi@Iris> # name: nrml # type: matrix -# rows: 84 +# rows: 110 # columns: 4 - 1 0 1 0 - 0.9972037971811801 0.07473009358642425 0.9972037971811801 0.07473009358642425 - 0.9888308262251285 0.1490422661761744 0.9888308262251285 0.1490422661761744 - 0.9749279121818236 0.2225209339563144 0.9749279121818236 0.2225209339563144 - 0.9555728057861407 0.2947551744109042 0.9555728057861407 0.2947551744109042 - 0.9308737486442042 0.365341024366395 0.9308737486442042 0.365341024366395 - 0.9009688679024191 0.4338837391175581 0.9009688679024191 0.4338837391175581 - 0.8660254037844386 0.5 0.8660254037844386 0.5 - 0.8262387743159949 0.5633200580636221 0.8262387743159949 0.5633200580636221 - 0.7818314824680298 0.6234898018587335 0.7818314824680298 0.6234898018587335 - 0.7330518718298263 0.6801727377709195 0.7330518718298263 0.6801727377709195 - 0.6801727377709194 0.7330518718298263 0.6801727377709194 0.7330518718298263 - 0.6234898018587336 0.7818314824680298 0.6234898018587336 0.7818314824680298 - 0.563320058063622 0.8262387743159949 0.563320058063622 0.8262387743159949 - 0.4999999999999999 0.8660254037844387 0.4999999999999999 0.8660254037844387 - 0.4338837391175582 0.9009688679024191 0.4338837391175582 0.9009688679024191 - 0.365341024366395 0.9308737486442042 0.365341024366395 0.9308737486442042 - 0.2947551744109041 0.9555728057861408 0.2947551744109041 0.9555728057861408 - 0.2225209339563144 0.9749279121818236 0.2225209339563144 0.9749279121818236 - 0.1490422661761744 0.9888308262251285 0.1490422661761744 0.9888308262251285 - 0.07473009358642417 0.9972037971811801 0.07473009358642417 0.9972037971811801 - 6.123233995736766e-17 1 6.123233995736766e-17 1 - -0.07473009358642427 0.9972037971811801 -0.07473009358642427 0.9972037971811801 - -0.1490422661761745 0.9888308262251285 -0.1490422661761745 0.9888308262251285 - -0.2225209339563143 0.9749279121818236 -0.2225209339563143 0.9749279121818236 - -0.2947551744109042 0.9555728057861407 -0.2947551744109042 0.9555728057861407 - -0.3653410243663951 0.9308737486442042 -0.3653410243663951 0.9308737486442042 - -0.4338837391175581 0.9009688679024191 -0.4338837391175581 0.9009688679024191 - -0.5000000000000002 0.8660254037844385 -0.5000000000000002 0.8660254037844385 - -0.5633200580636221 0.8262387743159948 -0.5633200580636221 0.8262387743159948 - -0.6234898018587335 0.7818314824680299 -0.6234898018587335 0.7818314824680299 - -0.6801727377709196 0.7330518718298262 -0.6801727377709196 0.7330518718298262 - -0.7330518718298263 0.6801727377709194 -0.7330518718298263 0.6801727377709194 - -0.7818314824680298 0.6234898018587336 -0.7818314824680298 0.6234898018587336 - -0.826238774315995 0.5633200580636218 -0.826238774315995 0.5633200580636218 - -0.8660254037844387 0.4999999999999999 -0.8660254037844387 0.4999999999999999 - -0.900968867902419 0.4338837391175582 -0.900968867902419 0.4338837391175582 - -0.9308737486442044 0.3653410243663948 -0.9308737486442044 0.3653410243663948 - -0.9555728057861408 0.2947551744109042 -0.9555728057861408 0.2947551744109042 - -0.9749279121818236 0.2225209339563145 -0.9749279121818236 0.2225209339563145 - -0.9888308262251285 0.1490422661761743 -0.9888308262251285 0.1490422661761743 - -0.9972037971811801 0.07473009358642423 -0.9972037971811801 0.07473009358642423 - -1 1.224646799147353e-16 -1 1.224646799147353e-16 - -0.9972037971811801 -0.07473009358642442 -0.9972037971811801 -0.07473009358642442 - -0.9888308262251285 -0.1490422661761745 -0.9888308262251285 -0.1490422661761745 - -0.9749279121818236 -0.2225209339563143 -0.9749279121818236 -0.2225209339563143 - -0.9555728057861407 -0.2947551744109044 -0.9555728057861407 -0.2947551744109044 - -0.9308737486442042 -0.365341024366395 -0.9308737486442042 -0.365341024366395 - -0.9009688679024191 -0.433883739117558 -0.9009688679024191 -0.433883739117558 - -0.8660254037844386 -0.5000000000000001 -0.8660254037844386 -0.5000000000000001 - -0.8262387743159949 -0.5633200580636221 -0.8262387743159949 -0.5633200580636221 - -0.7818314824680296 -0.6234898018587338 -0.7818314824680296 -0.6234898018587338 - -0.7330518718298262 -0.6801727377709195 -0.7330518718298262 -0.6801727377709195 - -0.6801727377709194 -0.7330518718298263 -0.6801727377709194 -0.7330518718298263 - -0.6234898018587337 -0.7818314824680297 -0.6234898018587337 -0.7818314824680297 - -0.563320058063622 -0.8262387743159949 -0.563320058063622 -0.8262387743159949 - -0.4999999999999996 -0.8660254037844388 -0.4999999999999996 -0.8660254037844388 - -0.4338837391175583 -0.900968867902419 -0.4338837391175583 -0.900968867902419 - -0.3653410243663949 -0.9308737486442044 -0.3653410243663949 -0.9308737486442044 - -0.2947551744109038 -0.9555728057861409 -0.2947551744109038 -0.9555728057861409 - -0.2225209339563146 -0.9749279121818236 -0.2225209339563146 -0.9749279121818236 - -0.1490422661761743 -0.9888308262251285 -0.1490422661761743 -0.9888308262251285 - -0.07473009358642384 -0.9972037971811801 -0.07473009358642384 -0.9972037971811801 - -1.83697019872103e-16 -1 -1.83697019872103e-16 -1 - 0.07473009358642436 -0.9972037971811801 0.07473009358642436 -0.9972037971811801 - 0.1490422661761748 -0.9888308262251285 0.1490422661761748 -0.9888308262251285 - 0.2225209339563142 -0.9749279121818236 0.2225209339563142 -0.9749279121818236 - 0.2947551744109043 -0.9555728057861407 0.2947551744109043 -0.9555728057861407 - 0.3653410243663954 -0.9308737486442041 0.3653410243663954 -0.9308737486442041 - 0.433883739117558 -0.9009688679024193 0.433883739117558 -0.9009688679024193 - 0.5000000000000001 -0.8660254037844386 0.5000000000000001 -0.8660254037844386 - 0.5633200580636224 -0.8262387743159947 0.5633200580636224 -0.8262387743159947 - 0.6234898018587334 -0.7818314824680299 0.6234898018587334 -0.7818314824680299 - 0.6801727377709195 -0.7330518718298262 0.6801727377709195 -0.7330518718298262 - 0.7330518718298266 -0.6801727377709191 0.7330518718298266 -0.6801727377709191 - 0.7818314824680297 -0.6234898018587337 0.7818314824680297 -0.6234898018587337 - 0.8262387743159949 -0.563320058063622 0.8262387743159949 -0.563320058063622 - 0.8660254037844388 -0.4999999999999997 0.8660254037844388 -0.4999999999999997 - 0.900968867902419 -0.4338837391175583 0.900968867902419 -0.4338837391175583 - 0.9308737486442042 -0.3653410243663949 0.9308737486442042 -0.3653410243663949 - 0.9555728057861408 -0.2947551744109039 0.9555728057861408 -0.2947551744109039 - 0.9749279121818235 -0.2225209339563146 0.9749279121818235 -0.2225209339563146 - 0.9888308262251285 -0.1490422661761744 0.9888308262251285 -0.1490422661761744 - 0.9972037971811801 -0.07473009358642391 0.9972037971811801 -0.07473009358642391 + 0.9998766324816606 -0.01570731731182068 0.9998766324816606 -0.01570731731182068 + 0.9991426496745736 0.041400067648161 0.9991426496745736 0.041400067648161 + 0.9951496712183173 0.09837241419257248 0.9951496712183173 0.09837241419257248 + 0.9879107213786663 0.1550238903688175 0.9879107213786663 0.1550238903688175 + 0.9774494121053654 0.2111697108367472 0.9774494121053654 0.2111697108367472 + 0.9637998660148573 0.2666267396000314 0.9637998660148573 0.2666267396000314 + 0.9470066050894002 0.3212140873577138 0.9470066050894002 0.3212140873577138 + 0.927124405455615 0.374753701527513 0.927124405455615 0.374753701527513 + 0.9042181187161473 0.4270709470163375 0.9042181187161473 0.4270709470163375 + 0.8783624604172172 0.477995175843661 0.8783624604172172 0.477995175843661 + 0.8496417663420387 0.5273602837597655 0.8496417663420387 0.5273602837597655 + 0.8181497174250234 0.5750052520432786 0.8181497174250234 0.5750052520432786 + 0.7839890341840449 0.620774672710774 0.7839890341840449 0.620774672710774 + 0.7472711416674593 0.6645192554253126 0.7472711416674593 0.6645192554253126 + 0.7081158060087587 0.7060963144504906 0.7081158060087587 0.7060963144504906 + 0.6666507437743361 0.7453702340616537 0.6666507437743361 0.7453702340616537 + 0.623011205378593 0.7822129108962039 0.623011205378593 0.7822129108962039 + 0.577339533925199 0.8165041718001409 0.577339533925199 0.8165041718001409 + 0.5297847009134744 0.8481321658079125 0.5297847009134744 0.8481321658079125 + 0.4805018203243236 0.8769937289770158 0.4805018203243236 0.8769937289770158 + 0.4296516426706695 0.9029947208873346 0.4296516426706695 0.9029947208873346 + 0.3774000306626937 0.9260503317076226 0.3774000306626937 0.9260503317076226 + 0.3239174181981495 0.9460853588275453 0.3239174181981495 0.9460853588275453 + 0.2693782544424143 0.9630344521529631 0.2693782544424143 0.9630344521529631 + 0.2139604348115697 0.9768423272643565 0.2139604348115697 0.9768423272643565 + 0.1578447207145324 0.9874639457431098 0.1578447207145324 0.9874639457431098 + 0.1012141499469077 0.9948646620774731 0.1012141499469077 0.9948646620774731 + 0.04425343965974749 0.9990203366690195 0.04425343965974749 0.9990203366690195 + -0.01285161614940513 0.9999174145709976 -0.01285161614940513 0.9999174145709976 + -0.06991475265791579 0.997552969701751 -0.06991475265791579 0.997552969701751 + -0.1267498417751967 0.9919347143889877 -0.1267498417751967 0.9919347143889877 + -0.1831714992538492 0.9830809742137711 -0.1831714992538492 0.9830809742137711 + -0.238995689374548 0.9710206282362824 -0.238995689374548 0.9710206282362824 + -0.2940403252323039 0.9557930147983302 -0.2940403252323039 0.9557930147983302 + -0.3481258626661013 0.9374478032098549 -0.3481258626661013 0.9374478032098549 + -0.4010758858946333 0.9160448317379641 -0.4010758858946333 0.9160448317379641 + -0.452717682947911 0.891653912426943 -0.452717682947911 0.891653912426943 + -0.502882809017811 0.8643546033858764 -0.502882809017811 0.8643546033858764 + -0.5514076358900291 0.8342359492866327 -0.5514076358900291 0.8342359492866327 + -0.5981338856653033 0.8013961909186528 -0.5981338856653033 0.8013961909186528 + -0.6429091470290245 0.7659424447479145 -0.6429091470290245 0.7659424447479145 + -0.6855873723852631 0.7279903535252857 -0.6855873723852631 0.7279903535252857 + -0.7260293542336737 0.6876637090839059 -0.7260293542336737 0.6876637090839059 + -0.7641031792354241 0.6450940485559584 -0.7641031792354241 0.6450940485559584 + -0.7996846584870905 0.6004202253258841 -0.7996846584870905 0.6004202253258841 + -0.8326577325990443 0.5537879561195048 -0.8326577325990443 0.5537879561195048 + -0.8629148502570608 0.5053493457063482 -0.8629148502570608 0.5053493457063482 + -0.8903573190323506 0.4552623907655068 -0.8903573190323506 0.4552623907655068 + -0.914895627295748 0.4036904645333099 -0.914895627295748 0.4036904645333099 + -0.9364497361860409 0.3508017839137857 -0.9364497361860409 0.3508017839137857 + -0.9549493406800994 0.2967688607900824 -0.9549493406800994 0.2967688607900824 + -0.9703340989132492 0.2417679393265632 -0.9703340989132492 0.2417679393265632 + -0.9825538290018901 0.1859784210969765 -0.9825538290018901 0.1859784210969765 + -0.9915686727263722 0.1295822799138087 -0.9915686727263722 0.1295822799138087 + -0.9973492255402215 0.07276346826753322 -0.9973492255402215 0.07276346826753322 + -0.9998766324816606 0.0157073173118208 -0.9998766324816606 0.0157073173118208 + -0.9991426496745736 -0.04140006764816076 -0.9991426496745736 -0.04140006764816076 + -0.9951496712183173 -0.09837241419257212 -0.9951496712183173 -0.09837241419257212 + -0.9879107213786663 -0.1550238903688171 -0.9879107213786663 -0.1550238903688171 + -0.9774494121053655 -0.211169710836747 -0.9774494121053655 -0.211169710836747 + -0.9637998660148575 -0.2666267396000311 -0.9637998660148575 -0.2666267396000311 + -0.9470066050894003 -0.3212140873577135 -0.9470066050894003 -0.3212140873577135 + -0.9271244054556153 -0.3747537015275125 -0.9271244054556153 -0.3747537015275125 + -0.9042181187161474 -0.4270709470163373 -0.9042181187161474 -0.4270709470163373 + -0.8783624604172174 -0.4779951758436607 -0.8783624604172174 -0.4779951758436607 + -0.8496417663420389 -0.5273602837597652 -0.8496417663420389 -0.5273602837597652 + -0.8181497174250235 -0.5750052520432785 -0.8181497174250235 -0.5750052520432785 + -0.783989034184045 -0.6207746727107738 -0.783989034184045 -0.6207746727107738 + -0.7472711416674596 -0.6645192554253124 -0.7472711416674596 -0.6645192554253124 + -0.7081158060087589 -0.7060963144504903 -0.7081158060087589 -0.7060963144504903 + -0.6666507437743362 -0.7453702340616536 -0.6666507437743362 -0.7453702340616536 + -0.6230112053785932 -0.7822129108962037 -0.6230112053785932 -0.7822129108962037 + -0.5773395339251989 -0.816504171800141 -0.5773395339251989 -0.816504171800141 + -0.5297847009134748 -0.8481321658079123 -0.5297847009134748 -0.8481321658079123 + -0.4805018203243237 -0.8769937289770157 -0.4805018203243237 -0.8769937289770157 + -0.4296516426706702 -0.9029947208873342 -0.4296516426706702 -0.9029947208873342 + -0.377400030662694 -0.9260503317076225 -0.377400030662694 -0.9260503317076225 + -0.3239174181981496 -0.9460853588275453 -0.3239174181981496 -0.9460853588275453 + -0.2693782544424148 -0.963034452152963 -0.2693782544424148 -0.963034452152963 + -0.21396043481157 -0.9768423272643564 -0.21396043481157 -0.9768423272643564 + -0.1578447207145323 -0.9874639457431098 -0.1578447207145323 -0.9874639457431098 + -0.1012141499469083 -0.9948646620774731 -0.1012141499469083 -0.9948646620774731 + -0.04425343965974761 -0.9990203366690195 -0.04425343965974761 -0.9990203366690195 + 0.01285161614940523 -0.9999174145709976 0.01285161614940523 -0.9999174145709976 + 0.06991475265791544 -0.997552969701751 0.06991475265791544 -0.997552969701751 + 0.1267498417751965 -0.9919347143889877 0.1267498417751965 -0.9919347143889877 + 0.1831714992538486 -0.9830809742137711 0.1831714992538486 -0.9830809742137711 + 0.2389956893745477 -0.9710206282362824 0.2389956893745477 -0.9710206282362824 + 0.2940403252323038 -0.9557930147983302 0.2940403252323038 -0.9557930147983302 + 0.3481258626661007 -0.9374478032098551 0.3481258626661007 -0.9374478032098551 + 0.4010758858946331 -0.9160448317379642 0.4010758858946331 -0.9160448317379642 + 0.4527176829479109 -0.8916539124269431 0.4527176829479109 -0.8916539124269431 + 0.5028828090178106 -0.8643546033858768 0.5028828090178106 -0.8643546033858768 + 0.5514076358900289 -0.8342359492866327 0.5514076358900289 -0.8342359492866327 + 0.5981338856653029 -0.8013961909186531 0.5981338856653029 -0.8013961909186531 + 0.642909147029024 -0.765942444747915 0.642909147029024 -0.765942444747915 + 0.685587372385263 -0.7279903535252857 0.685587372385263 -0.7279903535252857 + 0.7260293542336733 -0.6876637090839064 0.7260293542336733 -0.6876637090839064 + 0.7641031792354241 -0.6450940485559585 0.7641031792354241 -0.6450940485559585 + 0.7996846584870905 -0.6004202253258842 0.7996846584870905 -0.6004202253258842 + 0.832657732599044 -0.5537879561195053 0.832657732599044 -0.5537879561195053 + 0.8629148502570607 -0.5053493457063483 0.8629148502570607 -0.5053493457063483 + 0.8903573190323507 -0.4552623907655065 0.8903573190323507 -0.4552623907655065 + 0.9148956272957478 -0.4036904645333105 0.9148956272957478 -0.4036904645333105 + 0.9364497361860408 -0.3508017839137859 0.9364497361860408 -0.3508017839137859 + 0.9549493406800993 -0.296768860790083 0.9549493406800993 -0.296768860790083 + 0.9703340989132491 -0.2417679393265637 0.9703340989132491 -0.2417679393265637 + 0.9825538290018901 -0.1859784210969766 0.9825538290018901 -0.1859784210969766 + 0.9915686727263721 -0.1295822799138092 0.9915686727263721 -0.1295822799138092 + 0.9973492255402215 -0.07276346826753334 0.9973492255402215 -0.07276346826753334
--- a/data/h_init.map +++ b/data/h_init.map @@ -1,4 +1,4 @@ -# Created by Octave 3.0.1, Wed Jun 25 11:39:16 2008 CDT <jordi@Iris> +# Created by Octave 3.0.1, Sun Jun 29 04:50:49 2008 CDT <jordi@Iris> # name: h_init # type: matrix # rows: 661
--- a/include/interpolator.hpp +++ b/include/interpolator.hpp @@ -94,6 +94,8 @@ interpolator<RBF> operator/(double a) const; //@} + //debug + mutable map<std::vector<size_t>, matrix> precomp_rbfs; private: //Once the matrix is defined, this function inverts it. void computecoeffs(); @@ -137,7 +139,7 @@ * the vector represents zeros. Thus, an empty vector represents * evaluation instead of derivatives. */ - mutable map<std::vector<size_t>, matrix> precomp_rbfs; + /// Precomputed values using precomp_rbfs mutable map<std::vector<size_t>, map<point, double> > precomp_values;
--- a/interpolator.cpp +++ b/interpolator.cpp @@ -260,9 +260,8 @@ precomp_rbfs[alpha] = phis; precomp_values[alpha] = precompute_values(phis); - //debug - std::cout << "Wtf?" << std::endl; } + //Are we evaluating at a precomputed point in the domain? if(precomp_values[alpha].find(p) != precomp_values[alpha].end()) @@ -399,8 +398,7 @@ } template<typename RBF> - interpolator<RBF> interpolator<RBF>:: - operator*(double a) const + interpolator<RBF> interpolator<RBF>::operator*(double a) const { interpolator<RBF> u = *this; u.coeffs = (this -> coeffs)*a; @@ -408,8 +406,7 @@ } template<typename RBF> - interpolator<RBF> interpolator<RBF>:: - operator/(double a) const + interpolator<RBF> interpolator<RBF>::operator/(double a) const { interpolator<RBF> u = *this; u.coeffs = (this -> coeffs)*(1/a);
--- a/main-linear-wave-eq.cpp +++ b/main-linear-wave-eq.cpp @@ -51,6 +51,11 @@ map<point, double> give_u1(const interpolator<RBF>& u, const matrix& intr); +class zero_func : public realfunc{ +public: + double at(const point&) const{return 0;}; +}; + int main(){ gsl_set_error_handler(&error_handling::errorHandler); @@ -58,49 +63,37 @@ using namespace std; using linalg::vector; - matrix - intr = utils::read_matrix("data/circ_intr.matrix"), - bdry = utils::read_matrix("data/circ_bdry.matrix"), - nrml = utils::read_matrix("data/circ_nrml.matrix"); shared_ptr<domain> Omega(new domain("data/circ_intr.matrix", "data/circ_bdry.matrix", "data/circ_nrml.matrix") ); //Interior conditions, init them - vector u_init = utils::read_vector("data/circ_init.vector"); - map<point, double> f, u0, u1; - slice s(1,2); - for(size_t i = 1; i <= intr.rows(); i++){ - u0[intr(i,s)] = u_init(i); - } - u1 = u0; - f = calc_f(u0, u1, intr); + map<point,double> u_init = utils::read_pd_map("data/wave_init.map"); //Boundary conditions, Dirichlet, set to zero (clamped membrane) - map<point, double> g; - for(size_t i = 1; i <= bdry.rows(); i++){ - g[bdry(i,s)] = 0; - } + zero_func g; //timestep double h = 0.01; shared_ptr<wave_op> W(new wave_op(h) ); shared_ptr<dirichlet_op> D(new dirichlet_op); - shared_ptr<linear_BVP2> the_bvp(new linear_BVP2(Omega,W,D,f,g) ); + shared_ptr<linear_BVP2> the_bvp(new linear_BVP2(Omega,W,D,u_init,g) ); conical::set_n(5); - interpolator<conical> u(the_bvp); + interpolator<conical> u(the_bvp), u0=u, u1=u; + u0(*(Omega->get_interior().begin())); + u1(*(Omega->get_interior().begin())); + u(*(Omega->get_interior().begin())); //Main loop size_t maxiter = 1000; for(size_t n = 1; n <= maxiter; n++){ - save_step(u,intr,bdry,n); + //save_step(u,Omega,n); u0 = u1; - u1 = give_u1(u,intr); - f = calc_f(u0,u1,intr); + u1 = u; cout << "Iteration: " << n << endl; - u.set_f(f); + u.set_f(2*u1 - u0); } return 0; @@ -166,9 +159,9 @@ p(1) = r*cos(th); p(2) = r*sin(th); result(i,j) = u.at(p); - th += 2*M_PI/(cols-1); + th += 2*M_PI/(double(cols)-1); } - r += 1.0/(rows-1); + r += 1.0/(double(rows)-1); } ofs << result; }
--- a/main.cpp +++ b/main.cpp @@ -1,8 +1,11 @@ #include <iostream> #include <fstream> #include <map> +#include <set> #include <sstream> + #include <boost/shared_ptr.hpp> + #include "include/linalg.hpp" #include "include/rbf.hpp" #include "include/bvp.hpp" @@ -14,83 +17,239 @@ using namespace linalg; using namespace bvp; -using namespace rbf; + +#define RBF_TYPE rbf::conical -class wave_op : public linear_diff_op2{ +//Will solve the system +// +// u_t = -u*u_x - v*u_y - g*h_x =: f1(u,v,h) +// +// v_t = -u*v_x - v*v_y - g*h_y =: f2(u,v,h) +// +// h_t = -u*h_x - h*u_x - v*h_y - h*v_y =: f3(u,v,h) +// +//where g is the acceleration due to gravity, u(x,y,0) = v(x,y,0) = 0, +//and h starts out as an undisturbed surface high with a small +//disturbance. We'll do this by RK4. + + +const double g = 9.8; // m/s^2 + +template<typename RBF> +class Fgen : public realfunc{ public: - wave_op(double h_in) : h(h_in) {} ; - double at(const realfunc &f, const point &p) const; - double at(const radial_basis_function &RBF, const point &p) const; -private: - Laplacian L; - double h; + void set_interps(const interpolator<RBF>& u0, + const interpolator<RBF>& v0, + const interpolator<RBF>& h0); + void set_u(const interpolator<RBF>& u0); + void set_v(const interpolator<RBF>& v0); + void set_h(const interpolator<RBF>& h0); + void set_dt(double dt_in); +protected: + interpolator<RBF> u; + interpolator<RBF> v; + interpolator<RBF> h; + double dt; +}; + +template<typename RBF> +class Fu : public Fgen<RBF>{ + using Fgen<RBF>::u; + using Fgen<RBF>::v; + using Fgen<RBF>::h; + using Fgen<RBF>::dt; +public: + double at(const point& p) const; }; -double wave_op::at(const realfunc &f, const point &p) const{ - return f(p) - h*h*L(f,p); -} - -double wave_op::at(const radial_basis_function &RBF, const point &p) const{ - return RBF(p) - h*h*L(RBF,p); -} - - -using boost::shared_ptr; - -std::map<point,double> calc_f(const std::map<point,double>& u0, - const std::map<point,double>& u1, - const matrix& intr); +template<typename RBF> +class Fv : public Fgen<RBF>{ + using Fgen<RBF>::u; + using Fgen<RBF>::v; + using Fgen<RBF>::h; + using Fgen<RBF>::dt; +public: + double at(const point& p) const; +}; template<typename RBF> -void save_step(const interpolator<RBF>& u, - const matrix& intr, - const matrix& bdry, - size_t n); +class Fh : public Fgen<RBF>{ + using Fgen<RBF>::u; + using Fgen<RBF>::v; + using Fgen<RBF>::h; + using Fgen<RBF>::dt; +public: + double at(const point& p) const; +}; + +class iter_neumann : public bdry_diff_op{ +public: + //If this is u's, set 1, for v, set 2. + iter_neumann(size_t u_or_v_in); + double at(const realfunc &f, const point &p, const vector &n) const; +private: + size_t u_or_v; + double at(const realfunc &f, const point &p) const {return f(p);}; +}; template<typename RBF> -map<point, double> give_u1(const interpolator<RBF>& u, - const matrix& intr); +class Gu_or_v : public realfunc{ +public: + //specify the OTHER, whether u or v. + Gu_or_v(size_t u_or_v_in, + const shared_ptr<domain> Omega_in) : u_or_v(u_or_v_in), + Omega(Omega_in) {}; + double at(const point& p) const; + void set_other(const interpolator<RBF>& other_in){other = other_in;}; +private: + size_t u_or_v; + const shared_ptr<domain> Omega; + interpolator<RBF> other; +}; class zero_func : public realfunc{ public: - double at(const point&) const{return 0;}; + double at(const point& p) const{p.size(); return 0;}; }; -int main(){ +//************ Function declarations **************************** + +template<typename RBF> +void save_interp(const shared_ptr<domain> Omega, + const interpolator<RBF>& u, + size_t n, string which_interp); + +template<typename RBF> +void bdry_iter(interpolator<RBF> &u, interpolator<RBF> &v, + const boost::shared_ptr<domain> Omega); + + +//********************** Main ****************************************** +int main() +{ gsl_set_error_handler(&error_handling::errorHandler); try{ using namespace std; - - using linalg::vector; + using boost::shared_ptr; + + map<point, double> h_init = utils::read_pd_map("data/h_init.map"); + shared_ptr<domain> Omega(new domain("data/circ_intr.matrix", "data/circ_bdry.matrix", - "data/circ_nrml.matrix") - ); - //Interior conditions, init them - map<point,double> u_init = utils::read_pd_map("data/wave_init.map"); + "data/circ_nrml.matrix")); + + shared_ptr<Id_op> I(new Id_op); + shared_ptr<iter_neumann> + u_bdry_op(new iter_neumann(1)), + v_bdry_op(new iter_neumann(2)); + zero_func Z; + shared_ptr<linear_BVP2> + u_bvp_init(new linear_BVP2(Omega, I, u_bdry_op, Z, Z)), + v_bvp_init(new linear_BVP2(Omega, I, v_bdry_op, Z, Z)); + + + double dt = 1e-2; + + //init the interps. + using namespace rbf; + conical::set_n(5); thin_plate_spline::set_n(6); + c_infty_rbf::set_epsilon(0.01); + + cout << "Initialising... please wait." << endl; + + interpolator<RBF_TYPE> + u1, u0(u_bvp_init), + v1, v0(v_bvp_init), + h1, h0(Omega, h_init); + + //FIXME: put proper precomp function here. + point p = *(Omega -> get_interior().begin()); + u0(p); v0(p); h0(p); + u0.d(p,1); v0.d(p,1); h0.d(p,1); + u0.d(p,2); v0.d(p,2); h0.d(p,2); + + u1 = u0; v1 = v0; h1 = h0; + + //Intermediate interpolators for RK4 + std::vector<interpolator<RBF_TYPE> > + k1(3,h0), k2(3,h0), k3(3,h0), k4(3,h0); + + Fu<RBF_TYPE> f_u; + Fv<RBF_TYPE> f_v; + Fh<RBF_TYPE> f_h; + + f_u.set_dt(dt); + f_v.set_dt(dt); + f_h.set_dt(dt); + + - //Boundary conditions, Dirichlet, set to zero (clamped membrane) - zero_func g; - - //timestep - double h = 0.01; - - shared_ptr<wave_op> W(new wave_op(h) ); - shared_ptr<dirichlet_op> D(new dirichlet_op); - shared_ptr<linear_BVP2> the_bvp(new linear_BVP2(Omega,W,D,u_init,g) ); + //main loop + size_t maxiter = 10; + for(size_t i = 1; i <= maxiter; i++){ + cout << "Now on iteration #" << i << endl; + if(i % 1 == 0){ + save_interp(Omega,u0,i,"u"); + save_interp(Omega,v0,i,"v"); + save_interp(Omega,h0,i,"h"); + } + + //k1 + f_u.set_interps(u0,v0,h0); + f_v.set_interps(u0,v0,h0); + f_h.set_interps(u0,v0,h0); + + k1[0].set_f(f_u); + k1[1].set_f(f_v); + k1[2].set_f(f_h); + + bdry_iter(k1[0],k1[1],Omega); + + //k2 + f_u.set_interps(u0+(k1[0]/2), v0+(k1[1]/2), h0+(k1[2]/2)); + f_v.set_interps(u0+(k1[0]/2), v0+(k1[1]/2), h0+(k1[2]/2)); + f_h.set_interps(u0+(k1[0]/2), v0+(k1[1]/2), h0+(k1[2]/2)); + + k2[0].set_f(f_u); + k2[1].set_f(f_v); + k2[2].set_f(f_h); + + bdry_iter(k2[0],k2[1],Omega); - conical::set_n(5); - interpolator<conical> u(the_bvp), u0=u, u1=u; + //k3 + f_u.set_interps(u0+(k2[0]/2), v0+(k2[1]/2), h0+(k2[2]/2)); + f_v.set_interps(u0+(k2[0]/2), v0+(k2[1]/2), h0+(k2[2]/2)); + f_h.set_interps(u0+(k2[0]/2), v0+(k2[1]/2), h0+(k2[2]/2)); + + k3[0].set_f(f_u); + k3[1].set_f(f_v); + k3[2].set_f(f_h); + + bdry_iter(k3[0],k3[1],Omega); - //Main loop - size_t maxiter = 1000; - for(size_t n = 1; n <= maxiter; n++){ - //save_step(u,Omega,n); + //k4 + f_u.set_interps(u0+k3[0], v0+k3[1], h0+k3[2]); + f_v.set_interps(u0+k3[0], v0+k3[1], h0+k3[2]); + f_h.set_interps(u0+k3[0], v0+k3[1], h0+k3[2]); + + k4[0].set_f(f_u); + k4[1].set_f(f_v); + k4[2].set_f(f_h); + + bdry_iter(k4[0],k4[1],Omega); + + //Grand finale + u1.set_f(u0 + (k1[0] + 2*k2[0] + 2*k3[0] + k4[0])/6); + v1.set_f(v0 + (k1[1] + 2*k2[1] + 2*k3[1] + k4[1])/6); + h1.set_f(h0 + (k1[2] + 2*k2[2] + 2*k3[2] + k4[2])/6); + + //Enforce boundary conditions iteratively + bdry_iter(u1,v1,Omega); + u0 = u1; - u1 = u; - cout << "Iteration: " << n << endl; - u.set_f(2*u1 - u0); + v0 = v1; + h0 = h1; } return 0; @@ -102,27 +261,93 @@ } -std::map<point,double> calc_f(const std::map<point,double>& u0, - const std::map<point,double>& u1, - const matrix& intr) +//******************* Function definitions *************************** + +template<typename RBF> +void Fgen<RBF>::set_interps(const interpolator<RBF>& u0, + const interpolator<RBF>& v0, + const interpolator<RBF>& h0){ + set_u(u0); + set_v(v0); + set_h(h0); +} + +template<typename RBF> +void Fgen<RBF>::set_u(const interpolator<RBF>& u0) +{ + u = u0; +} + +template<typename RBF> +void Fgen<RBF>::set_v(const interpolator<RBF>& v0) { - std::map<point, double> f; - slice s(1,2); - for(size_t i = 1; i <= intr.rows(); i++){ - f[intr(i,s)] = 2*u1.at(intr(i,s)) - u0.at(intr(i,s)); - } - return f; + v = v0; +} + +template<typename RBF> +void Fgen<RBF>::set_h(const interpolator<RBF>& h0) +{ + h = h0; +} + +template<typename RBF> +void Fgen<RBF>::set_dt(double dt_in) +{ + dt = dt_in; +} + + +template<typename RBF> +double Fu<RBF>::at(const point& p) const +{ + return dt*(u(p)*u.d(p,1) + v(p)*u.d(p,2) + g*h.d(p,1)); } -template <typename RBF> -void save_step(const interpolator<RBF>& u, - const matrix& intr, - const matrix& bdry, - size_t n) +template<typename RBF> +double Fv<RBF>::at(const point& p) const +{ + return dt*(u(p)*v.d(p,1) + v(p)*v.d(p,2) + g*h.d(p,2)); +} + +template<typename RBF> +double Fh<RBF>::at(const point& p) const +{ + return dt*(u(p)*h.d(p,1) + h(p)*u.d(p,1) + v(p)*h.d(p,2) + h(p)*v.d(p,2)); +} + +iter_neumann::iter_neumann(size_t u_or_v_in) +{ + if(u_or_v_in < 1 or u_or_v_in > 2){ + error_handling::badArgument exc; + exc.reason = "Argument to iter_neumann constructor must be 1 or 2"; + exc.line = __LINE__; + exc.file = __FILE__; + throw exc; + } + u_or_v = u_or_v_in; +} + +double iter_neumann::at(const realfunc &f, const point &p, + const vector &n) const +{ + return n(u_or_v)*f(p); +} + +template<typename RBF> +double Gu_or_v<RBF>::at(const point& p) const +{ + point n = Omega -> get_normals().at(p); + return -n(u_or_v)*other(p); +} + + +template<typename RBF> +void save_interp(const shared_ptr<domain> Omega, + const interpolator<RBF>& u, + size_t n, string which_interp) { using namespace std; - - string filename = "results/u"; + string filename = "results/" + which_interp; if(n < 10000) filename += "0"; if(n < 1000) @@ -135,41 +360,65 @@ string n_string; ss << n; ss >> n_string; - //filename += n_string + ".vector"; - filename += n_string + ".matrix"; + filename += n_string + ".map"; ofstream ofs(filename.c_str()); -// slice s(1,2); -// for(size_t i = 1; i <= intr.rows(); i++) -// ofs << u.at(intr(i,s)) << endl; -// for(size_t i = 1; i <= bdry.rows(); i++) -// ofs << u.at(bdry(i,s)) << endl; - intr.rows(); - bdry.rows(); - size_t rows = 20, cols = 30; - matrix result(rows,cols); - double r = 0; - for(size_t i = 1; i <= rows; i++){ - double th = 0; - for(size_t j = 1; j <= cols; j++){ - point p(2); - p(1) = r*cos(th); - p(2) = r*sin(th); - result(i,j) = u.at(p); - th += 2*M_PI/(double(cols)-1); - } - r += 1.0/(double(rows)-1); + slice s(1,2); + matrix M(Omega -> get_interior().size() + + Omega -> get_boundary().size(), 3); + size_t k = 1; + for(set<point>::const_iterator i = Omega -> get_interior().begin(); + i != Omega -> get_interior().end(); i++){ + M(k,s) = *i; + M(k,3) = u(*i); + k++; } - ofs << result; + for(set<point>::const_iterator i = Omega -> get_boundary().begin(); + i != Omega -> get_boundary().end(); i++){ + M(k,s) = *i; + M(k,3) = u(*i); + k++; + } + ofs << M; } template<typename RBF> -map<point, double> give_u1(const interpolator<RBF>& u, - const matrix& intr) +linalg::vector at_bdry(const interpolator<RBF>& u, + const boost::shared_ptr<domain> Omega) +{ + using namespace linalg; + + vector out(Omega -> get_boundary().size()); + std::set<point>::const_iterator I = Omega -> get_boundary().begin(); + + for(size_t i = 1; i <= out.size(); i++){ + out(i) = u(*I); + I++; + } + + return out; +} + +template<typename RBF> +void bdry_iter(interpolator<RBF> &u, interpolator<RBF> &v, + const boost::shared_ptr<domain> Omega) { - map<point, double> u1; - slice s(1,2); - for(size_t i = 1; i <= intr.rows(); i++) - u1[intr(i,s)] = u.at(intr(i,s)); - return u1; + Gu_or_v<RBF_TYPE> gu(2, Omega), gv(1, Omega); + double err = 1; + do{ + linalg::vector u_old, u_new, v_old, v_new; + u_old = at_bdry(u,Omega); + gu.set_other(v); + u.set_g(gu); + u_new = at_bdry(u,Omega); + + v_old = at_bdry(v,Omega); + gv.set_other(u); + v.set_g(gv); + v_new = at_bdry(v,Omega); + + double err_u = norm(u_new - u_old); + double err_v = norm(v_new - v_old); + err = (err_u > err_v? err_u : err_v); + }while(err > 1e-2); }