亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? simulation_run.m

?? 帶電粒子在電磁場中運(yùn)動軌跡模擬程序
?? M
字號:
function simulation_run( particle_startVel, particle_startPos, handles )
% simulation loop



%     Copyright (C) 2007 
%
%       mag. David Erzen
%       Faculty of Mechanical Engineering
%       LECAD Laboratory
%       Askerceva 6
%       1000 Ljubljana
%       SLOVENIA
%       contact email: david.erzen@lecad.uni-lj.si
%       
%       Prof. John P. Verboncoeur
%       Plasma Theory and Simulation Group
%       University of California
%       Berkeley, CA 94720-1730 USA
%       
% 
%     This program is free software: you can redistribute it and/or modify
%     it under the terms of the GNU General Public License as published by
%     the Free Software Foundation, either version 3 of the License, or
%     (at your option) any later version.
% 
%     This program is distributed in the hope that it will be useful,
%     but WITHOUT ANY WARRANTY; without even the implied warranty of
%     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
%     GNU General Public License for more details.
% 
%     You should have received a copy of the GNU General Public License
%     along with this program.  If not, see <http://www.gnu.org/licenses/>.
    


    global_variables;
    
    status = STATUS_RUNNING;            % simulation_running is set to 0 by user to stop or pause the simualtion
    particle_vel = particle_startVel;    % temporary velocity and position information for solver 
    particle_pos = particle_startPos;
    trajectory(1, 1:3) = particle_startPos;
    w = vrworld('sim1.wrl');
    
    counterSim = 0;
    absolute_time = 0;
    
    % SIMULATION LOOP
    while status == STATUS_RUNNING
    
       % calcuate to (tspan) for solver 
       % TODO: to should be calculated as 1/100 part of inverse value of
       % Deby frequency
        to = time_scale( particle_pos );        
        absolute_time = absolute_time + to;
        set(w, 'Time', absolute_time*1000);
        
        % calcualte one step with function field_Efunction and
        % field_Bfunction
        % TODO: solver calculates more points then needed afterwards, this
        % should not be
        
        [ time, partial_trajectory ] = ode15s( @acceleration, [0, to], [particle_pos, particle_vel] );
        
        % update particle_vel and particle_vel
        particle_pos = partial_trajectory ( length( partial_trajectory ), 1:3 );
        particle_vel = partial_trajectory ( length( partial_trajectory ), 4:6 );
        
        
        % update trajectory and guiding center        
        trajectory = cat( 1, trajectory, particle_pos ); 
        calculate_guideCenter;
                
        % update virtual world:
        
        % update force vector
        if vectorForce_set
            % calculate force vector if shown
            acc = acceleration( 0, partial_trajectory ( length( partial_trajectory ), : ) );
            vector_force = (acc(4:6))'/factor_force;
            [ vector_forceRotation, vector_forceConePos, vector_forcePos, vector_forceHeight] = vectorParameters( particle_pos, vector_force );
            w.a_cone_Material.transparency = 0;
            w.a_cyl_Material.transparency = 0;
            w.a_cylinder.rotation = vector_forceRotation;
            w.a_cylinder.translation = vector_forcePos;
            w.a_Cyl.height = vector_forceHeight;
            w.a_cone.rotation = vector_forceRotation;
            w.a_cone.translation = vector_forceConePos;
        else
            % otherwise hide it by putting tranparency 100
            w.a_cone_Material.transparency = 100;
            w.a_cyl_Material.transparency = 100;
        end;

        % update velocity vector
        if vectorVel_set
            % calculate velocity vector
            vector_velocity = particle_vel/factor_velocity;
            [ vector_velocityRotation, vector_velocityConePos, vector_velocityPos, vector_velocityHeight] = vectorParameters( particle_pos, vector_velocity );
            w.v_cone_Material.transparency = 0;
            w.v_cyl_Material.transparency = 0;
            w.v_cylinder.rotation = vector_velocityRotation;
            w.v_cylinder.translation = vector_velocityPos;
            w.v_Cyl.height = vector_velocityHeight;
            w.v_cone.rotation = vector_velocityRotation;
            w.v_cone.translation = vector_velocityConePos;
        else
            % otherwise hide it by putting tranparency 100
            w.v_cone_Material.transparency = 100;
            w.v_cyl_Material.transparency = 100;
        end;

        %update guiding center vector
        if (vectorGuide_set) & length(guide_center) > 0
            % calculate guiding center vector
            vector_guidingCenter = guide_center(length(guide_center(:,1)), 1:3) - particle_pos;                
            [ vector_guideRotation, vector_guideConePos, vector_guidePos, vector_guideHeight] = vectorParameters( particle_pos, vector_guidingCenter );
            w.g_cone_Material.transparency = 0;
            w.g_cyl_Material.transparency = 0;
            w.g_cylinder.rotation = vector_guideRotation;
            w.g_cylinder.translation = vector_guidePos;
            w.g_Cyl.height = vector_guideHeight - w.g_Cone.height;
            w.g_cone.rotation = vector_guideRotation;
            % adjusting the height of the cylinder and the position of the
            % cone in order to place the tip of the cone in the guiding
            % center
            if vector_guideConePos ~= vector_guidePos
                w.g_cone.translation = vector_guideConePos - w.g_Cone.height*(vector_guideConePos - vector_guidePos)/(2*norm(vector_guideConePos - vector_guidePos));
            else
                w.g_cone.translation = vector_guideConePos;
            end;
        else
            % otherwise hide it by putting tranparency 100
            w.g_cone_Material.transparency = 100;
            w.g_cyl_Material.transparency = 100;
        end;

        % update trajectory
        if traj_set
            w.trajectory_spine.spine = trajectory;
        else
            w.trajectory_spine.spine = trajectory( length( trajectory ), 1:3 );
        end;

        % update guiding center
        if guide_set
            w.guide_spine.spine = guide_center;
        else
            if length( guide_center ) > 0
                w.guide_spine.spine = guide_center( 1, 1:3 );
            end;
        end;

        % update particle
        w.ball.translation = particle_pos;

        % update magnetic field lines for time factor
        switch get( handles.popMagField,'Value' )
            case BFIELD_TIMECONSTANT
            otherwise
                % TODO: get rid of these 18 and 9 asap!!!!!!!!!!!!!!!!!!!!
                for i = 1:18              % updating magnetic field lines    
                    if i <= 9 
                        tmp_num = i;
                    else
                        tmp_num = i+1;
                    end
                    name_line = strcat('B', num2str(tmp_num), '_Material');
                    line = vrnode(w, name_line); 
                    t = absolute_time;
                    line.transparency = 1-abs(eval(field_BTimefunctionX)+eval(field_BTimefunctionY)+eval(field_BTimefunctionZ))/3;                    
                end
        end
         
        % update electric field lines for time factor
        switch get( handles.popElecField,'Value' )
            case EFIELD_TIMECONSTANT
            otherwise
                % TODO: get rid of these 18 and 9 asap!!!!!!!!!!!!!!!!!!!!
                for i = 1:18              % updating electric field lines    
                    if i <= 9
                        tmp_num = i;
                    else
                        tmp_num = i+1;
                    end
                    name_line = strcat('E', num2str(tmp_num), '_Material');
                    line = vrnode(w, name_line); 
                    t = absolute_time;
                    line.transparency = 1-abs(eval(field_ETimefunctionX)+eval(field_ETimefunctionX)+eval(field_ETimefunctionX))/3;    
                end
        end
            
            
            
            vrdrawnow;
        
        
    end
end

% ******************* calculates time scale for one iteration *************
function to = time_scale( pos )

 %   global_variables;
    
%    B = norm( calculate_B( 0, pos ) );
%    if B > 0
%        to = particle_mass/( particle_charge*B );        
%    else
        to = 1e-7;
%    end;    
% TODO: calculate to taking in account the magnetic and electric field
end

% *************** calculates guiding center *******************************
function calculate_guideCenter
% TODO: check if the calculation for the guide center is correct
    global_variables;    
   
    traj_length = length(trajectory);
    if (traj_length > 0 ) traj_length = length(trajectory(:,1)); 
    end;
    if (traj_length > 2)  % trajectory is longer than three points
        t = trajectory(traj_length,1:3);
        t1 = trajectory(traj_length - 1,1:3);
        t2 = trajectory(traj_length - 2,1:3);
        
    if ((t(1) ~= t1(1)) || (t(2) ~= t1(2)) || (t(3) ~= t1(3))) && ((t(1) ~= t2(1)) || (t(2) ~= t2(2)) || (t(3) ~= t2(3))) && ((t2(1) ~= t1(1)) || (t2(2) ~= t1(2)) || (t2(3) ~= t1(3))) % the last three trajectory points are different from one to another            
        s12 = norm(trajectory(traj_length - 1,1:3)-trajectory(traj_length - 2,1:3));
            s23 = norm(trajectory(traj_length ,1:3)-trajectory(traj_length - 1,1:3));
            s13 = s12 + s23;
            
            % calculate vector for geometric guide center vector direction
            temp_guide = 2*(s12.*(trajectory(traj_length ,1:3)-trajectory(traj_length - 1,1:3)) - s23.*(trajectory(traj_length - 1 ,1:3)-trajectory(traj_length - 2,1:3)))/(s13*s23*s12);
            
            % calculate vector for guiding center from origin
            if norm(temp_guide) ~= 0           
                % calculate length of a guide center vector
                mag_field = calculate_B(0, trajectory(traj_length,1:3));
                if norm(mag_field) > 0
                    % calculate perpendicular velocity and length of the
                    % larmour radious
                    perpendicular_vel = particle_vel - mag_field'*(particle_vel*mag_field)/((norm(mag_field))^2);
                    guide_length = abs(norm(perpendicular_vel)/(norm(mag_field)*particle_charge/particle_mass));
                else
                    guide_length = 0;
                end;
                %**********************************************************               
                % larmour radious correction
                temp_guide1 = trajectory(traj_length -1, 1:3) + temp_guide*guide_length/(norm(temp_guide));
                %**********************************************************                
                % geometricly defined center of temporary circular motion
                %temp_guide1 = trajectory(traj_length -1, 1:3) + temp_guide/(norm(temp_guide))^2;
                %**********************************************************                
            else
                temp_guide1 = trajectory(traj_length -1, 1:3);
            end;

            if length(guide_center) == 0
                guide_center(1,1:3) = temp_guide1(1:3);
            else
                guide_center(length(guide_center(:,1))+1, 1:3) = temp_guide1(1:3);   
            end;  
        end;
    end;
end

% ******calculate parameters for force and velocity vector display ********
function [ vector_rotation, vector_conePos, vector_pos, vector_height] = vectorParameters( particle_pos, vector )
    
    if norm( vector ) > 0
        vector_normalised = vector/norm( vector );
    else
        vector_normalised = vector;
    end;
  
    rotation_angle = acos( dot( vector_normalised, [ 0; 1; 0 ] ) );
    rotation_axis = cross( [ 0 1 0 ], vector_normalised );
    vector_rotation = cat( 2, rotation_axis, rotation_angle );
    
    vector_conePos = particle_pos + vector;
    vector_pos = particle_pos + vector/2;
    vector_height = norm( vector );    
end

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久免费观看| 精品国产免费一区二区三区四区| 亚洲欧美日韩在线| 一本色道久久综合亚洲91| 亚洲精品日日夜夜| 欧美色图在线观看| 蜜臀久久久久久久| 精品国精品自拍自在线| 大胆欧美人体老妇| 亚洲色图欧美在线| 欧美日韩成人在线| 精品午夜一区二区三区在线观看| 久久影院视频免费| 本田岬高潮一区二区三区| 一区二区在线观看免费视频播放| 欧美高清你懂得| 精品一区二区国语对白| 中文字幕一区日韩精品欧美| 欧美视频一区二区三区四区| 久久精品久久综合| 国产精品久久久久婷婷| 色先锋久久av资源部| 日韩在线卡一卡二| 国产亚洲欧美日韩日本| 91久久精品一区二区三区| 日韩高清在线不卡| 欧美激情一区在线| 欧日韩精品视频| 韩国视频一区二区| 亚洲视频每日更新| 欧美一区二区精美| eeuss鲁片一区二区三区| 天天免费综合色| 国产午夜亚洲精品羞羞网站| 91福利资源站| 国产一区二区三区日韩| 亚洲精品视频免费观看| 久久综合久久综合久久综合| 色8久久人人97超碰香蕉987| 精品一区二区三区免费毛片爱| 最新久久zyz资源站| 日韩一二三区视频| 91首页免费视频| 精品一区二区日韩| 亚洲亚洲精品在线观看| 国产欧美一区二区三区沐欲| 欧美日韩综合在线| 成人污污视频在线观看| 日韩av在线发布| 国产精品成人免费精品自在线观看| 欧美精品乱码久久久久久| 成人精品在线视频观看| 美腿丝袜在线亚洲一区| 亚洲精品国产一区二区精华液| 精品国产三级电影在线观看| 在线观看日韩一区| 国产精品一区二区黑丝| 视频在线在亚洲| 亚洲视频在线一区二区| xf在线a精品一区二区视频网站| 色激情天天射综合网| 国产美女精品人人做人人爽 | 亚洲美女一区二区三区| 日韩欧美国产三级电影视频| 91视频国产观看| 国产精品综合在线视频| 天堂蜜桃91精品| 亚洲美女电影在线| 国产女人18毛片水真多成人如厕 | 亚洲日本丝袜连裤袜办公室| 亚洲精品一区二区三区四区高清| 欧美偷拍一区二区| 99精品欧美一区二区三区综合在线| 激情五月婷婷综合| 天天av天天翘天天综合网色鬼国产 | 久久99精品久久只有精品| 亚洲成人av在线电影| 亚洲欧美在线视频观看| 精品国产免费久久| 717成人午夜免费福利电影| 91黄色在线观看| 99国产精品久久久久久久久久久| 国产在线日韩欧美| 免费观看成人av| 亚洲妇女屁股眼交7| 亚洲欧美日韩国产中文在线| 国产清纯美女被跳蛋高潮一区二区久久w | 91精品国产91综合久久蜜臀| 欧美在线视频你懂得| thepron国产精品| 国产成人精品亚洲日本在线桃色| 狠狠色丁香婷综合久久| 免费在线一区观看| 日韩av午夜在线观看| 午夜欧美电影在线观看| 亚洲一级片在线观看| 亚洲欧美偷拍卡通变态| 国产精品久久久久久福利一牛影视| 久久蜜桃av一区二区天堂 | 2020国产精品自拍| 精品少妇一区二区三区在线播放 | 久久九九影视网| 久久综合色播五月| 欧美精品一区二区蜜臀亚洲| 欧美大片在线观看一区| 欧美α欧美αv大片| 欧美成人video| 欧美v日韩v国产v| 欧美精品一区二区三区在线| 久久青草国产手机看片福利盒子| 日韩免费一区二区| 日韩视频在线观看一区二区| 欧美一区二区久久久| 欧美不卡一区二区| 久久综合丝袜日本网| 精品99999| 国产女主播一区| 国产精品乱码久久久久久| 国产精品免费看片| 国产精品午夜在线| **网站欧美大片在线观看| 亚洲女人****多毛耸耸8| 一区二区三区不卡视频| 五月综合激情婷婷六月色窝| 免费高清在线视频一区·| 久久不见久久见免费视频7| 国产在线精品一区二区夜色 | 日韩一本二本av| 欧美xxxxxxxx| 国产精品久久久久久妇女6080| 亚洲欧洲中文日韩久久av乱码| 亚洲综合男人的天堂| 日韩制服丝袜av| 国产综合色视频| 成人动漫在线一区| 在线免费不卡电影| 欧美日韩一区二区电影| 日韩美女主播在线视频一区二区三区| 精品对白一区国产伦| 国产精品毛片a∨一区二区三区| 一区二区在线观看视频在线观看| 日韩精品久久理论片| 国产精品一区二区男女羞羞无遮挡 | 亚洲欧美日韩系列| 日韩影院在线观看| 国产精品一卡二| 91视视频在线观看入口直接观看www | 国产一区二区三区免费看| 成人免费视频免费观看| 欧美综合视频在线观看| 日韩亚洲欧美综合| 中文字幕一区二区三区蜜月| 亚洲第一在线综合网站| 狠狠色丁香久久婷婷综| 9l国产精品久久久久麻豆| 欧美三级电影在线观看| 久久这里只有精品视频网| 亚洲另类在线一区| 老司机精品视频线观看86| av不卡免费电影| 欧美一区二区视频免费观看| 国产精品网站在线观看| 亚洲一区二区成人在线观看| 久久国产精品第一页| 91视频国产资源| 精品国产免费一区二区三区四区 | 91在线视频在线| 欧美一区二区人人喊爽| 日韩一区有码在线| 热久久免费视频| 99re8在线精品视频免费播放| 欧美一区欧美二区| 国产精品成人免费| 久久爱www久久做| 91啪亚洲精品| 精品美女被调教视频大全网站| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 日韩国产欧美在线播放| 菠萝蜜视频在线观看一区| 67194成人在线观看| 国产精品家庭影院| 久久疯狂做爰流白浆xx| 91网站视频在线观看| 精品国产91九色蝌蚪| 偷拍亚洲欧洲综合| 高清国产一区二区三区| 欧美性色黄大片手机版| 中文字幕免费不卡| 美女www一区二区| 在线观看欧美黄色| 日韩精品专区在线影院重磅| 一级中文字幕一区二区| 人人爽香蕉精品| 91久久一区二区| 中文字幕亚洲在| 国产尤物一区二区| 91麻豆精品国产91久久久| 尤物av一区二区| 处破女av一区二区| 日韩欧美一区在线观看|