Changeset 0a4f7f for src/molecule_dynamics.cpp
- Timestamp:
- Apr 7, 2010, 3:45:38 PM (15 years ago)
- Branches:
- Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
- Children:
- 72e7fa
- Parents:
- f9352d
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/molecule_dynamics.cpp
rf9352d r0a4f7f 14 14 #include "molecule.hpp" 15 15 #include "parser.hpp" 16 #include "Plane.hpp" 16 17 17 18 /************************************* Functions for class molecule *********************************/ … … 79 80 // Log() << Verbose(0) << trajectory2 << endl; 80 81 // determine normal vector for both 81 normal .MakeNormalVector(&trajectory1, &trajectory2);82 normal = Plane(trajectory1, trajectory2,0).getNormal(); 82 83 // print all vectors for debugging 83 84 // Log() << Verbose(0) << "Normal vector in between: "; … … 85 86 // setup matrix 86 87 for (int i=NDIM;i--;) { 87 gsl_matrix_set(A, 0, i, trajectory1 .x[i]);88 gsl_matrix_set(A, 1, i, trajectory2 .x[i]);89 gsl_matrix_set(A, 2, i, normal .x[i]);90 gsl_vector_set(x,i, (Walker->Trajectory.R.at(Params.startstep) .x[i] - Runner->Trajectory.R.at(Params.startstep).x[i]));88 gsl_matrix_set(A, 0, i, trajectory1[i]); 89 gsl_matrix_set(A, 1, i, trajectory2[i]); 90 gsl_matrix_set(A, 2, i, normal[i]); 91 gsl_vector_set(x,i, (Walker->Trajectory.R.at(Params.startstep)[i] - Runner->Trajectory.R.at(Params.startstep)[i])); 91 92 } 92 93 // solve the linear system by Householder transformations … … 514 515 Sprinter = mol->AddCopyAtom(Walker); 515 516 for (int n=NDIM;n--;) { 516 Sprinter->x .x[n] = Walker->Trajectory.R.at(startstep).x[n] + (PermutationMap[Walker->nr]->Trajectory.R.at(endstep).x[n] - Walker->Trajectory.R.at(startstep).x[n])*((double)step/(double)MaxSteps);517 Sprinter->x[n] = Walker->Trajectory.R.at(startstep)[n] + (PermutationMap[Walker->nr]->Trajectory.R.at(endstep)[n] - Walker->Trajectory.R.at(startstep)[n])*((double)step/(double)MaxSteps); 517 518 // add to Trajectories 518 519 //Log() << Verbose(3) << step << ">=" << MDSteps-1 << endl; 519 520 if (step < MaxSteps) { 520 Walker->Trajectory.R.at(step) .x[n] = Walker->Trajectory.R.at(startstep).x[n] + (PermutationMap[Walker->nr]->Trajectory.R.at(endstep).x[n] - Walker->Trajectory.R.at(startstep).x[n])*((double)step/(double)MaxSteps);521 Walker->Trajectory.U.at(step) .x[n] = 0.;522 Walker->Trajectory.F.at(step) .x[n] = 0.;521 Walker->Trajectory.R.at(step)[n] = Walker->Trajectory.R.at(startstep)[n] + (PermutationMap[Walker->nr]->Trajectory.R.at(endstep)[n] - Walker->Trajectory.R.at(startstep)[n])*((double)step/(double)MaxSteps); 522 Walker->Trajectory.U.at(step)[n] = 0.; 523 Walker->Trajectory.F.at(step)[n] = 0.; 523 524 } 524 525 } … … 582 583 for(int i=0;i<AtomCount;i++) 583 584 for(int d=0;d<NDIM;d++) { 584 Velocity .x[d] += Force.Matrix[0][i][d+5];585 Velocity[d] += Force.Matrix[0][i][d+5]; 585 586 } 586 587 for(int i=0;i<AtomCount;i++) 587 588 for(int d=0;d<NDIM;d++) { 588 Force.Matrix[0][i][d+5] -= Velocity .x[d]/(double)AtomCount;589 Force.Matrix[0][i][d+5] -= Velocity[d]/(double)AtomCount; 589 590 } 590 591 // solve a constrained potential if we are meant to
Note:
See TracChangeset
for help on using the changeset viewer.