frigaut / yao

An adaptive optics simulation package. Yao is a yorick plugin. Many of the core routines are written in C, which makes it very fast.
http://frigaut.github.io/yao/index.html
GNU General Public License v2.0
22 stars 7 forks source link

Bad dimension error #12

Open UlasGokay opened 6 years ago

UlasGokay commented 6 years ago

Dear all, very useful and professional simulation tool! I recently started working with yao for the DAG project AO, however, i am having an error which i cant solve:

loop.niter=1000 aoloop,disp=1 ERROR (aoloop) bad dimension list LINE: 3477 FILE: /usr/lib/yorick/i/yao.i To enter debug mode, type now (then dbexit to get out)

Additionally, i am getting a warning for the size of my phase screens (although i created 2048,256 sized phase screens):

Some of the phase screens are too small (Y dimension) for the specified system. The following WFS/screens will cause a index overflow (current Ydim is 256): WFS#1, screen#1, Ymax=8130.438965 WFS#1, screen#2, Ymax=8863.816406 WFS#1, screen#3, Ymax=8130.149902 WFS#1, screen#4, Ymax=9592.368164 WFS#1, screen#5, Ymax=8129.932617 WFS#1, screen#6, Ymax=8129.522949 WFS#1, screen#7, Ymax=8128.839355 WFS#1, screen#8, Ymax=21125.363281 To remedy this situation, you can either:

I am pasting the contents of my .par file as well, could you comment? thank you!

// YAO parameter file //------------------------------- sim.name = "ULASSH"; sim.pupildiam = 128; // sim.debug = 0; sim.verbose = 0;

//------------------------------- atm.dr0at05mic = 42.4967; // this is r0=0.166 at 550 nm // atm.screen = &(Y_USER+"data/screen"+["1","2","3","4","5","6","7","8"]+".fits"); // atm.layerfrac = &([0.5328,0.0145,0.035,0.0957,0.1083,0.0437,0.0658,0.1042]); atm.layerspeed = &([15,13,13,9,9,15,25,40]); atm.layeralt = &([48.,162,324,649,1299,2598,5196,10392]); atm.winddir = &([0,10,340,30,300,290,280,90]);

//------------------------------- nwfs = 1; // number of WFSs (>1 if e.g. mcao) wfs = array(wfss,nwfs);

n = 1; wfs(n).type = "hartmann"; wfs(n).lambda = 0.55; wfs(n).gspos = [0.,0.]; wfs(n).gsalt = 0.; wfs(n).gsmag = 5.; // wfs(n).shmethod = 2;

wfs(n).shnxsub = 10; //?? wfs(n).npixpersub = 13;

wfs(n).pixsize = 0.15; //?? wfs(n).npixels = 8; //??

wfs(n).noise = 1; wfs(n).ron = 3.5; wfs(n).shthreshold = 0.; wfs(n).nintegcycles= 1; wfs(n).pupoffset = 0.; wfs(n).fstop = "square";

//------------------------------- ndm = 1; dm = array(dms,ndm);

n =1; dm(n).type = "zernike"; //?? dm(n).nxact = 11; dm(n).iffile = ""; dm(n).pitch = 12.8; //?? dm(n).nzer = 128; //?? dm(n).alt = 0.0; dm(n).unitpervolt = 0.01; dm(n).push4imat = 100;

//------------------------------- mat.condition = &([15.]); mat.file = "";

//------------------------------- tel.diam = 3.94; tel.cobs = 0.247462;

//------------------------------- target.lambda = &([1.65]); target.xposition = &([0.]); target.yposition = &([0]); target.dispzoom = &([1.]);

//------------------------------- gs.zeropoint = 1e11;

//------------------------------- loop.gain = 0.6; loop.framedelay = 1; loop.niter = 5000; loop.ittime = 2e-3; loop.startskip = 10; loop.skipevery = 10000; loop.skipby = 10000; loop.modalgainfile = "simulModeGains.fits";

//-------------------------------

frigaut commented 6 years ago

Hi Ulas, Are you working with Onur? Francois Ps: will answer tomorrow.

Sent from my iPad

On 13 Nov 2017, at 6:31 pm, UlasGokay notifications@github.com wrote:

Dear all, very useful and professional simulation tool! I recently started working with yao for the DAG project AO, however, i am having an error which i cant solve:

loop.niter=1000 aoloop,disp=1 ERROR (aoloop) bad dimension list LINE: 3477 FILE: /usr/lib/yorick/i/yao.i To enter debug mode, type now (then dbexit to get out)

Additionally, i am getting a warning for the size of my phase screens (although i created 2048,256 sized phase screens):

Some of the phase screens are too small (Y dimension) for the specified system. The following WFS/screens will cause a index overflow (current Ydim is 256): WFS#1, screen#1, Ymax=8130.438965 WFS#1, screen#2, Ymax=8863.816406 WFS#1, screen#3, Ymax=8130.149902 WFS#1, screen#4, Ymax=9592.368164 WFS#1, screen#5, Ymax=8129.932617 WFS#1, screen#6, Ymax=8129.522949 WFS#1, screen#7, Ymax=8128.839355 WFS#1, screen#8, Ymax=21125.363281 To remedy this situation, you can either:

  • use larger phase screens (Y axis) using 'create_phase_screens'
  • Modify the extremum Y offsets of your WFSs
  • Lower the altitude of the offending atmospheric layer EXIT called, back to main loop

I am pasting the contents of my .par file as well, could you comment? thank you!

// YAO parameter file //------------------------------- sim.name = "ULASSH"; sim.pupildiam = 128; // sim.debug = 0; sim.verbose = 0;

//------------------------------- atm.dr0at05mic = 42.4967; // this is r0=0.166 at 550 nm // atm.screen = &(Y_USER+"data/screen"+["1","2","3","4","5","6","7","8"]+".fits"); // atm.layerfrac = &([0.5328,0.0145,0.035,0.0957,0.1083,0.0437,0.0658,0.1042]); atm.layerspeed = &([15,13,13,9,9,15,25,40]); atm.layeralt = &([48.,162,324,649,1299,2598,5196,10392]); atm.winddir = &([0,10,340,30,300,290,280,90]);

//------------------------------- nwfs = 1; // number of WFSs (>1 if e.g. mcao) wfs = array(wfss,nwfs);

n = 1; wfs(n).type = "hartmann"; wfs(n).lambda = 0.55; wfs(n).gspos = [0.,0.]; wfs(n).gsalt = 0.; wfs(n).gsmag = 5.; // wfs(n).shmethod = 2;

wfs(n).shnxsub = 10; //?? wfs(n).npixpersub = 13;

wfs(n).pixsize = 0.15; //?? wfs(n).npixels = 8; //??

wfs(n).noise = 1; wfs(n).ron = 3.5; wfs(n).shthreshold = 0.; wfs(n).nintegcycles= 1; wfs(n).pupoffset = 0.; wfs(n).fstop = "square";

//------------------------------- ndm = 1; dm = array(dms,ndm);

n =1; dm(n).type = "zernike"; //?? dm(n).nxact = 11; dm(n).iffile = ""; dm(n).pitch = 12.8; //?? dm(n).nzer = 128; //?? dm(n).alt = 0.0; dm(n).unitpervolt = 0.01; dm(n).push4imat = 100;

//------------------------------- mat.condition = &([15.]); mat.file = "";

//------------------------------- tel.diam = 3.94; tel.cobs = 0.247462;

//------------------------------- target.lambda = &([1.65]); target.xposition = &([0.]); target.yposition = &([0]); target.dispzoom = &([1.]);

//------------------------------- gs.zeropoint = 1e11;

//------------------------------- loop.gain = 0.6; loop.framedelay = 1; loop.niter = 5000; loop.ittime = 2e-3; loop.startskip = 10; loop.skipevery = 10000; loop.skipby = 10000; loop.modalgainfile = "simulModeGains.fits";

//-------------------------------

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.

UlasGokay commented 6 years ago

Hi Francois, yes i am working with Onur and Laurent, thank you for your quick response, i am eager to hear about your comment, many thanks!

mvandam commented 6 years ago

Merhaba Ulas,

The problem is that the phase screens are too small. First, you need to generate some larger phase screens, maybe 1024x1024 or larger (I used 4096 here, but this is larger than you need). You do this by running in yao:

create_phase_screens,1024,1024,prefix="screen1024"

Rename the screens (1-8) and put them in the directory .yorick/data where the other screens are. Then change the parameter file to look for these files:

atm.screen = &(YUSER+"data/screen1024"+["1","2","3","4","5","6","7","8"]+".fits");

I did this and ran it without crashing. However, the Strehl was 0, so there were a few things wrong with your parameter files. I have modified it and attach a working file (H-band Strehl of 0.452 with r0=0.10 m).

Marcos

On 13/11/17 20:31, UlasGokay wrote:

Dear all, very useful and professional simulation tool! I recently started working with yao for the DAG project AO, however, i am having an error which i cant solve:

loop.niter=1000
aoloop,disp=1
ERROR (aoloop) bad dimension list
LINE: 3477 FILE: /usr/lib/yorick/i/yao.i
To enter debug mode, type now (then dbexit to get out)

Additionally, i am getting a warning for the size of my phase screens (although i created 2048,256 sized phase screens):

Some of the phase screens are too small (Y dimension) for the specified system. The following WFS/screens will cause a index overflow (current Ydim is 256): WFS#1, screen#1, Ymax=8130.438965 WFS#1, screen#2, Ymax=8863.816406 WFS#1, screen#3, Ymax=8130.149902 WFS#1, screen#4, Ymax=9592.368164 WFS#1, screen#5, Ymax=8129.932617 WFS#1, screen#6, Ymax=8129.522949 WFS#1, screen#7, Ymax=8128.839355 WFS#1, screen#8, Ymax=21125.363281 To remedy this situation, you can either:

  • use larger phase screens (Y axis) using 'create_phase_screens'
  • Modify the extremum Y offsets of your WFSs
  • Lower the altitude of the offending atmospheric layer EXIT called, back to main loop

I am pasting the contents of my .par file as well, could you comment? thank you!

// YAO parameter file //------------------------------- sim.name = "ULASSH"; sim.pupildiam = 128; // sim.debug = 0; sim.verbose = 0;

//------------------------------- atm.dr0at05mic = 42.4967; // this is r0=0.166 at 550 nm // atm.screen = &(Y_USER+"data/screen"+["1","2","3","4","5","6","7","8"]+".fits"); // atm.layerfrac = &([0.5328,0.0145,0.035,0.0957,0.1083,0.0437,0.0658,0.1042]); atm.layerspeed = &([15,13,13,9,9,15,25,40]); atm.layeralt = &([48.,162,324,649,1299,2598,5196,10392]); atm.winddir = &([0,10,340,30,300,290,280,90]);

//------------------------------- nwfs = 1; // number of WFSs (>1 if e.g. mcao) wfs = array(wfss,nwfs);

n = 1; wfs(n).type = "hartmann"; wfs(n).lambda = 0.55; wfs(n).gspos = [0.,0.]; wfs(n).gsalt = 0.; wfs(n).gsmag = 5.; // wfs(n).shmethod = 2;

wfs(n).shnxsub = 10; //?? wfs(n).npixpersub = 13;

wfs(n).pixsize = 0.15; //?? wfs(n).npixels = 8; //??

wfs(n).noise = 1; wfs(n).ron = 3.5; wfs(n).shthreshold = 0.; wfs(n).nintegcycles= 1; wfs(n).pupoffset = 0.; wfs(n).fstop = "square";

//------------------------------- ndm = 1; dm = array(dms,ndm);

n =1; dm(n).type = "zernike"; //?? dm(n).nxact = 11; dm(n).iffile = ""; dm(n).pitch = 12.8; //?? dm(n).nzer = 128; //?? dm(n).alt = 0.0; dm(n).unitpervolt = 0.01; dm(n).push4imat = 100;

//------------------------------- mat.condition = &([15.]); mat.file = "";

//------------------------------- tel.diam = 3.94; tel.cobs = 0.247462;

//------------------------------- target.lambda = &([1.65]); target.xposition = &([0.]); target.yposition = &([0]); target.dispzoom = &([1.]);

//------------------------------- gs.zeropoint = 1e11;

//------------------------------- loop.gain = 0.6; loop.framedelay = 1; loop.niter = 5000; loop.ittime = 2e-3; loop.startskip = 10; loop.skipevery = 10000; loop.skipby = 10000; loop.modalgainfile = "simulModeGains.fits";

//-------------------------------

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/frigaut/yao/issues/12, or mute the thread https://github.com/notifications/unsubscribe-auth/AAl_n1COfrAkok-tJkOarTERAWNXFdvFks5s1_A_gaJpZM4QbWLT.

-- Marcos van Dam Adaptive Optics Scientist Flat Wavefronts Postal Address: 21 Lascelles Street, Christchurch 8022, New Zealand Cell phone: +64 21 148 1956 Skype: marcos.van.dam Website: www.flatwavefronts.com

// YAO parameter file //------------------------------- sim.name = "ULASSH"; sim.pupildiam = 120; // sim.debug = 0; sim.verbose = 0;

//------------------------------- tel.diam = 3.94; tel.cobs = 0.247462;

//------------------------------- r0 = 0.10; atm.dr0at05mic = tel.diam/r0; atm.screen = &(YUSER+"data/yao4096x4096"+["1","2","3","4","5","6","7","0"]+".fits"); // atm.layerfrac = &([0.5328,0.0145,0.035,0.0957,0.1083,0.0437,0.0658,0.1042]); atm.layerspeed = &([15,13,13,9,9,15,25,40]); atm.layeralt = &([48.,162,324,649,1299,2598,5196,10392]); atm.winddir = &([0,10,340,30,300,290,280,90]);

//------------------------------- nwfs = 1; // number of WFSs (>1 if e.g. mcao) wfs = array(wfss,nwfs);

n = 1; wfs(n).type = "hartmann"; wfs(n).lambda = 0.55; wfs(n).gspos = [0.,0.]; wfs(n).gsalt = 0.; wfs(n).gsmag = 5.; // wfs(n).shmethod = 2; wfs(n).shnxsub = 10; //?? wfs(n).npixpersub = 12; wfs(n).pixsize = 0.25; //?? wfs(n).npixels = 8; //?? wfs(n).noise = 1; wfs(n).ron = 3.5; wfs(n).shthreshold = 0.; wfs(n).nintegcycles= 1; wfs(n).pupoffset = 0.; wfs(n).fstop = "square";

//------------------------------- ndm = 1; dm = array(dms,ndm);

n =1; dm(n).type = "zernike"; //?? dm(n).nzer = 35; //?? dm(n).alt = 0.0; dm(n).unitpervolt = 1; dm(n).push4imat = 0.01; dm(n).regparam = 0.1;

//------------------------------- mat.method = "mmse";

//------------------------------- target.lambda = &([1.65]); target.xposition = &([0.]); target.yposition = &([0]); target.dispzoom = &([1.]);

//------------------------------- gs.zeropoint = 1e11;

//------------------------------- loop.gain = 0.6; loop.framedelay = 1; loop.niter = 5000; loop.ittime = 2e-3; loop.startskip = 10; loop.skipevery = 10000; loop.skipby = 10000;

UlasGokay commented 6 years ago

Dear Marcos, thank you for your detailed response. I seem to have a permission problem: i can't move the phase screen files that i created to .yorick/data because i dont have permission (it's root controlled). All the parameter files and the fits files are located in a folder home/desktop/ulas_yao_works, and i access here with the terminal, then run Yao. All new phase screen files are built inside here too. I am new to Yao (and Linux) so i might be missing something. Can you comment on this?

mvandam commented 6 years ago

Hello Ulas,

I have no idea how you installed yao, but I strongly recommend that you change the permission of the folder .yorick/data and .yorick/yao. If you can't, then it is OK to run from your directory: home/desktop/ulas_yao_works

But just make sure that all of the files names use the right directory.

For Linux questions, it is probably best to ask someone at your institute for help.

Marcos

On 14/11/17 20:57, UlasGokay wrote:

Dear Marcos, thank you for your detailed response. I seem to have a permission problem: i can't move the phase screen files that i created to .yorick/data because i dont have permission (it's root controlled). All the parameter files and the fits files are located in a folder home/desktop/ulas_yao_works, and i access here with the terminal, then run Yao. All new phase screen files are built inside here too. I am new to Yao (and Linux) so i might be missing something. Can you comment on this?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/frigaut/yao/issues/12#issuecomment-344174891, or mute the thread https://github.com/notifications/unsubscribe-auth/AAl_n6xGSKyfzgt5I-MaeSFtvNujo0heks5s2Uf5gaJpZM4QbWLT.

-- Marcos van Dam Adaptive Optics Scientist Flat Wavefronts Postal Address: PO BOX 1060, Christchurch 8140, New Zealand Cell phone: +64 21 148 1956 Skype: marcos.van.dam Website: www.flatwavefronts.com

UlasGokay commented 6 years ago

Hello Marcos, thank you! I opted for staying in my directory and reading the fits files from there with 4096by4096 setting, as you pointed out, the strehl is somehow 0, i am now looking to sort that issue out, all the best Ulaş