akuaku
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору akaGM omega real*8 Хорошо, вот зачем homega=0.0001d0 omega_center=17.780d0 ! центр лоренциана gamma=0.120d0 ! ширина лоренциана omega=omega_center-20*gamma i_Do: do i=0,100000 if( omega .gt. omega_center+20*gamma) exit if(omega .ge. omega_center+4*gamma .and. omega .lt. omega_center+20*gamma) then; omega=omegamax3+(i-imaxlev3)*100*homega; imaxlev4=i; omegamax4=omega; endif if(omega .ge. omega_center+2*gamma .and. omega .lt. omega_center+4*gamma) then; omega=omegamax2+(i-imaxlev2)*10*homega; imaxlev3=i; omegamax3=omega; endif if(omega .ge. omega_center-2*gamma .and. omega .lt. omega_center+2*gamma) then omega=omegamax1 +(i-imaxlev1)*homega; imaxlev2=i; omegamax2=omega endif if(omega .ge. omega_center-4*gamma .and. omega .lt. omega_center-2*gamma) then omega=omegamax0 +(i-imaxlev0)*10*homega; imaxlev1=i; omegamax1=omega endif if(omega .ge. omaga_center-20*gamma .and. omega .lt. omega_center-4*gamma) then omega=omega_center-20*gamma+i*100*homega; imaxlev0=i; omegamax0=omega endif write(*,*) omega,i if(omega .eq. omega_center-20*gamma) then; write(*,*) "omega=17.78-20Gamma"; pause; endif if(omega .eq. omega_center-4*gamma) then; write(*,*) "omega=17.78-4Gamma"; pause; endif if(omega .eq. omega_center-2*gamma) then; write(*,*) "omega=17.78-2Gamma"; pause; endif if(omega .eq. omega_center+2*gamma) then; write(*,*) "omega=17.78+2Gamma"; pause; endif if(omega .eq. omega_center+4*gamma) then; write(*,*) "omega=17.78+4Gamma"; pause; endif if(omega .eq. omega_center+20*gamma) then; write(*,*) "omega=17.78+20Gamma"; pause; endif .... enddo i_Do Вот эти if не выполняются if(omega .eq. omega_center-2*gamma) then; write(*,*) "omega=17.78-2Gamma"; pause; endif if(omega .eq. omega_center+4*gamma) then; write(*,*) "omega=17.78+4Gamma"; pause; endif if(omega .eq. omega_center+20*gamma) then; write(*,*) "omega=17.78+20Gamma"; pause; endif - даже если подставить численное значение omega_center+20*gamma, - не выполняется. Дело в том, что программа почему-то считает, что в этих if omega .ne. соответствующему выражению с omega_center (-2/+4/+20)*gamma. Хотя смотря значения omega в дебаггере видно, что в цикле omega пробегает в том числе и указанные значения ! gamma и omega_center могут меняться. Мне для начала нужно, чтобы это было вычислением площади под узким лоренцианом. Т. е. просто от omega_center-20gamma до omega_center-4gamma и симметрично с + шаг 0.01 от omega_center-4gamma до omega_center-2gamma и симметрично с + шаг 0.001 от omega_center-2gamma до omega_center+2gamma шаг 0.0001 Парадокс в том, почему не работает. - Что-то в последнем компиляторе не то или изменилось ? - Виновата 64-битность ? - ещё ? ... | Всего записей: 95 | Зарегистр. 09-06-2005 | Отправлено: 23:13 24-03-2008 | Исправлено: akuaku, 23:23 24-03-2008 |
|