void Kernel::computeOffDiagJacobianScalar(unsigned int jvar) { DenseMatrix<Number> & ke = _assembly.jacobianBlock(_var.index(), jvar); MooseVariableScalar & jv = _sys.getScalarVariable(_tid, jvar); for (_i = 0; _i < _test.size(); _i++) for (_j = 0; _j < jv.order(); _j++) for (_qp = 0; _qp < _qrule->n_points(); _qp++) ke(_i, _j) += _JxW[_qp] * _coord[_qp] * computeQpOffDiagJacobian(jvar); }
void qt_mac_send_modifiers_changed(quint32 modifiers, QObject *object) { static quint32 cachedModifiers = 0; quint32 lastModifiers = cachedModifiers, changedModifiers = lastModifiers ^ modifiers; cachedModifiers = modifiers; //check the bits static qt_mac_enum_mapper modifier_key_symbols[] = { { shiftKeyBit, QT_MAC_MAP_ENUM(Qt::Key_Shift) }, { rightShiftKeyBit, QT_MAC_MAP_ENUM(Qt::Key_Shift) }, //??? { controlKeyBit, QT_MAC_MAP_ENUM(Qt::Key_Meta) }, { rightControlKeyBit, QT_MAC_MAP_ENUM(Qt::Key_Meta) }, //??? { cmdKeyBit, QT_MAC_MAP_ENUM(Qt::Key_Control) }, { optionKeyBit, QT_MAC_MAP_ENUM(Qt::Key_Alt) }, { rightOptionKeyBit, QT_MAC_MAP_ENUM(Qt::Key_Alt) }, //??? { alphaLockBit, QT_MAC_MAP_ENUM(Qt::Key_CapsLock) }, { kEventKeyModifierNumLockBit, QT_MAC_MAP_ENUM(Qt::Key_NumLock) }, { 0, QT_MAC_MAP_ENUM(0) } }; for (int i = 0; i <= 32; i++) { //just check each bit if (!(changedModifiers & (1 << i))) continue; QEvent::Type etype = QEvent::KeyPress; if (lastModifiers & (1 << i)) etype = QEvent::KeyRelease; int key = 0; for (uint x = 0; modifier_key_symbols[x].mac_code; x++) { if (modifier_key_symbols[x].mac_code == i) { #ifdef DEBUG_KEY_BINDINGS_MODIFIERS qDebug("got modifier changed: %s", modifier_key_symbols[x].desc); #endif key = modifier_key_symbols[x].qt_code; break; } } if (!key) { #ifdef DEBUG_KEY_BINDINGS_MODIFIERS qDebug("could not get modifier changed: %d", i); #endif continue; } #ifdef DEBUG_KEY_BINDINGS_MODIFIERS qDebug("KeyEvent (modif): Sending %s to %s::%s: %d - 0x%08x", etype == QEvent::KeyRelease ? "KeyRelease" : "KeyPress", object ? object->metaObject()->className() : "none", object ? object->objectName().toLatin1().constData() : "", key, (int)modifiers); #endif QKeyEvent ke(etype, key, qt_mac_get_modifiers(modifiers ^ (1 << i)), QLatin1String("")); qt_sendSpontaneousEvent(object, &ke); } }
void TaskHeader::keyReleaseEvent ( QKeyEvent * event ) { switch (event->key()) { case Qt::Key_Down: { QKeyEvent ke(QEvent::KeyRelease, Qt::Key_Tab, 0); QApplication::sendEvent(this, &ke); return; } case Qt::Key_Up: { QKeyEvent ke(QEvent::KeyRelease, Qt::Key_Tab, Qt::ShiftModifier); QApplication::sendEvent(this, &ke); return; } default:; } BaseClass::keyReleaseEvent(event); }
void StressDivergenceTruss::computeOffDiagJacobian(unsigned int jvar) { if (jvar == _var.number()) { computeJacobian(); } else { unsigned int coupled_component = 0; bool active(false); if ( _xdisp_coupled && jvar == _xdisp_var ) { coupled_component = 0; active = true; } else if ( _ydisp_coupled && jvar == _ydisp_var ) { coupled_component = 1; active = true; } else if ( _zdisp_coupled && jvar == _zdisp_var ) { coupled_component = 2; active = true; } DenseMatrix<Number> & ke = _assembly.jacobianBlock(_var.number(), jvar); if (active) { ColumnMajorMatrix stiff_global(3,3); computeStiffness( stiff_global ); for (_i=0; _i<_test.size(); _i++) { for (_j=0; _j<_phi.size(); _j++) { int sign( _i == _j ? 1 : -1 ); ke(_i,_j) += sign * stiff_global(_component, coupled_component); } } } else if ( false ) // Need some code here for coupling with temperature { } } }
void iisTaskHeader::keyPressEvent ( QKeyEvent * event ) { switch (event->key()) { case Qt::Key_Down: { QKeyEvent ke(QEvent::KeyPress, Qt::Key_Tab, 0); QApplication::sendEvent(this, &ke); return; } case Qt::Key_Up: { QKeyEvent ke(QEvent::KeyPress, Qt::Key_Tab, Qt::ShiftModifier); QApplication::sendEvent(this, &ke); return; } default:; } QWidget::keyPressEvent(event); }
void Processor<sint, sgf2n>::resp_secure_socket_internal(int client_id, const vector<int>& registers) { external_clients.symmetric_client_commsec_send_keys.erase(client_id); external_clients.symmetric_client_commsec_recv_keys.erase(client_id); unsigned char client_public_bytes[crypto_sign_PUBLICKEYBYTES]; sts_msg1_t m1; sts_msg2_t m2; sts_msg3_t m3; external_clients.load_server_keys_once(); external_clients.require_ed25519_keys(); // Validate inputs and state if(registers.size() != 8) { throw "Invalid call to init_secure_socket."; } if (client_id >= (int)external_clients.external_client_sockets.size()) { cerr << "No socket connection exists for client id " << client_id << endl; throw "No socket connection exists for client"; } vector<int> client_public_key (registers.size(), 0); for(unsigned int i = 0; i < registers.size(); i++) { client_public_key[i] = (int&)get_Ci_ref(registers[i]); } external_clients.curve25519_ints_to_bytes(client_public_bytes, client_public_key); // Start Station to Station Protocol for the responder STS ke(client_public_bytes, external_clients.server_publickey_ed25519, external_clients.server_secretkey_ed25519); socket_stream.reset_read_head(); socket_stream.ReceiveExpected(external_clients.external_client_sockets[client_id], 32); socket_stream.consume(m1.bytes, sizeof m1.bytes); m2 = ke.recv_msg1(m1); socket_stream.reset_write_head(); socket_stream.append(m2.pubkey, sizeof m2.pubkey); socket_stream.append(m2.sig, sizeof m2.sig); socket_stream.Send(external_clients.external_client_sockets[client_id]); socket_stream.ReceiveExpected(external_clients.external_client_sockets[client_id], 64); socket_stream.consume(m3.bytes, sizeof m3.bytes); ke.recv_msg3(m3); // Use results of STS to generate send and receive keys. vector<unsigned char> recvKey = ke.derive_secret(crypto_secretbox_KEYBYTES); vector<unsigned char> sendKey = ke.derive_secret(crypto_secretbox_KEYBYTES); external_clients.symmetric_client_commsec_recv_keys[client_id] = make_pair(recvKey,0); external_clients.symmetric_client_commsec_send_keys[client_id] = make_pair(sendKey,0); }
void ODEKernel::computeOffDiagJacobian(unsigned int jvar) { if (_sys.isScalarVariable(jvar)) { DenseMatrix<Number> & ke = _assembly.jacobianBlock(_var.number(), jvar); MooseVariableScalar & var_j = _sys.getScalarVariable(_tid, jvar); for (_i = 0; _i < _var.order(); _i++) for (_j = 0; _j < var_j.order(); _j++) { if (jvar != _var.number()) ke(_i, _j) += computeQpOffDiagJacobian(jvar); } } }
void TimeDerivative::computeJacobian() { if (_lumping) { DenseMatrix<Number> & ke = _assembly.jacobianBlock(_var.number(), _var.number()); for (_i = 0; _i < _test.size(); _i++) for (_j = 0; _j < _phi.size(); _j++) for (_qp = 0; _qp < _qrule->n_points(); _qp++) ke(_i, _i) += _JxW[_qp] * _coord[_qp] * computeQpJacobian(); } else TimeKernel::computeJacobian(); }
void KernelValue::computeOffDiagJacobian(unsigned int jvar) { if (jvar == _var.number()) computeJacobian(); else { DenseMatrix<Number> & ke = _assembly.jacobianBlock(_var.number(), jvar); for (_j = 0; _j < _phi.size(); _j++) for (_qp = 0; _qp < _qrule->n_points(); _qp++) for (_i = 0; _i < _test.size(); _i++) ke(_i, _j) += _JxW[_qp] * _coord[_qp] * computeQpOffDiagJacobian(jvar); } }
void DiracKernel::computeJacobian() { DenseMatrix<Number> & ke = _assembly.jacobianBlock(_var.number(), _var.number()); for (_qp = 0; _qp < _qrule->n_points(); _qp++) { _current_point = _physical_point[_qp]; if (isActiveAtPoint(_current_elem, _current_point)) for (_i = 0; _i < _test.size(); _i++) for (_j = 0; _j < _phi.size(); _j++) { ke(_i, _j) += computeQpJacobian(); } } }
void ODEKernel::computeJacobian() { DenseMatrix<Number> & ke = _assembly.jacobianBlock(_var.number(), _var.number()); for (_i = 0; _i < _var.order(); _i++) for (_j = 0; _j < _var.order(); _j++) ke(_i, _j) += computeQpJacobian(); // compute off-diagonal jacobians wrt scalar variables const std::vector<MooseVariableScalar *> & scalar_vars = _sys.getScalarVariables(_tid); for (std::vector<MooseVariableScalar *>::const_iterator it = scalar_vars.begin(); it != scalar_vars.end(); ++it) { MooseVariableScalar * jvar = *it; computeOffDiagJacobian(jvar->number()); } }
void StressDivergence::computeOffDiagJacobian(MooseVariableFEBase & jvar) { size_t jvar_num = jvar.number(); if (jvar_num == _var.number()) computeJacobian(); else { if (_volumetric_locking_correction) { // calculate volume averaged value of shape function derivative _avg_grad_test.resize(_test.size()); for (_i = 0; _i < _test.size(); _i++) { _avg_grad_test[_i].resize(3); _avg_grad_test[_i][_component] = 0.0; for (_qp = 0; _qp < _qrule->n_points(); _qp++) _avg_grad_test[_i][_component] += _grad_test[_i][_qp](_component) * _JxW[_qp] * _coord[_qp]; _avg_grad_test[_i][_component] /= _current_elem_volume; } _avg_grad_phi.resize(jvar.phiSize()); for (_i = 0; _i < jvar.phiSize(); _i++) { _avg_grad_phi[_i].resize(3); for (unsigned int component = 0; component < _mesh.dimension(); component++) { _avg_grad_phi[_i][component] = 0.0; for (_qp = 0; _qp < _qrule->n_points(); _qp++) _avg_grad_phi[_i][component] += _grad_phi[_i][_qp](component) * _JxW[_qp] * _coord[_qp]; _avg_grad_phi[_i][component] /= _current_elem_volume; } } } DenseMatrix<Number> & ke = _assembly.jacobianBlock(_var.number(), jvar_num); for (_i = 0; _i < _test.size(); _i++) for (_j = 0; _j < jvar.phiSize(); _j++) for (_qp = 0; _qp < _qrule->n_points(); _qp++) ke(_i, _j) += _JxW[_qp] * _coord[_qp] * computeQpOffDiagJacobian(jvar_num); } }
bool build(int nthreads=1) { size_t numElem = data_.size(); KeyIterator<decltype(data_.begin())> kb(data_.begin()); KeyIterator<decltype(data_.begin())> ke(data_.end()); auto keyIt = boomphf::range(kb, ke); BooPHFT* ph = new BooPHFT(numElem, keyIt, nthreads); boophf_.reset(ph); std::cerr << "reordering keys and values to coincide with phf ... "; std::vector<size_t> inds; inds.reserve(data_.size()); for (size_t i = 0; i < data_.size(); ++i) { inds.push_back(ph->lookup(data_[i].first)); } reorder_destructive_(inds.begin(), inds.end(), data_.begin()); std::cerr << "done\n"; built_ = true; return built_; }
void NodalEqualValueConstraint::computeJacobian() { // do the diagonal block DenseMatrix<Number> & ke = _assembly.jacobianBlock(_var.number(), _var.number()); // put zeroes on the diagonal (we have to do it, otherwise PETSc will complain!) for (unsigned int i = 0; i < ke.m(); i++) for (unsigned int j = 0; j < ke.n(); j++) ke(i, j) = 0.; for (unsigned int k = 0; k < _value.size(); k++) { DenseMatrix<Number> & ken = _assembly.jacobianBlock(_var.number(), _val_number[k]); ken(k, 0) = 1.; ken(k, 1) = -1.; } }
uint64_t Fujimap::getInteger(const char* kbuf, const size_t klen) const { string s(kbuf, klen); map<string, uint64_t>::const_iterator it = tmpEdges_.find(string(kbuf, klen)); if (it != tmpEdges_.end()){ return it->second; } const uint64_t id = getBlockID(kbuf, klen); for (vector< vector<FujimapBlock> >::const_reverse_iterator it2 = fbs_.rbegin(); it2 != fbs_.rend(); ++it2){ KeyEdge ke(kbuf, klen, 0, (*it2)[id].getSeed()); uint64_t ret = (*it2)[id].getVal(ke); if (ret != NOTFOUND){ return ret; } } return NOTFOUND; }
void ntTruss::def_KG(){ for (int i = 0; i < elementCnt; i++){ //ELEMENT STIFFNESS MATRIX(FIG. 2.52) af::array ke = elements.at(i)->get_k(); int row_ID; int col_ID; int r_dof = 0; int c_dof = 0; ///CONFIRM THAT .span() returns number of rows or columns//////////////////////////////// for (int j = 0; j < ke.dims(0); j++) { /// if (r_dof >= DOF){ r_dof = 0; } for (int k = 0; k < ke.dims(1); k++){ /// if (c_dof >= DOF){ c_dof = 0; } if (j < DOF & k < DOF){ row_ID = (DOF * elements.at(i)->get_nodeInd()[0]) + r_dof; col_ID = (DOF * elements.at(i)->get_nodeInd()[0]) + c_dof; } else if (j < DOF & k >= DOF){ row_ID = (DOF * elements.at(i)->get_nodeInd()[1]) + r_dof; col_ID = (DOF * elements.at(i)->get_nodeInd()[0]) + c_dof; } else if (j >= DOF & k < DOF){ row_ID = (DOF * elements.at(i)->get_nodeInd()[0]) + r_dof; col_ID = (DOF * elements.at(i)->get_nodeInd()[1]) + c_dof; } else if (j >= DOF & k >= DOF){ row_ID = (DOF * elements.at(i)->get_nodeInd()[1]) + r_dof; col_ID = (DOF * elements.at(i)->get_nodeInd()[1]) + c_dof; } K(row_ID, col_ID) += ke(j, k); c_dof += 1; } r_dof += 1; } } }
void DiracKernel::computeOffDiagJacobian(unsigned int jvar) { if (jvar == _var.number()) { computeJacobian(); } else { DenseMatrix<Number> & ke = _assembly.jacobianBlock(_var.number(), jvar); for (_qp = 0; _qp < _qrule->n_points(); _qp++) { _current_point = _physical_point[_qp]; if (isActiveAtPoint(_current_elem, _current_point)) for (_i=0; _i<_test.size(); _i++) for (_j=0; _j<_phi.size(); _j++) ke(_i, _j) += computeQpOffDiagJacobian(jvar); } } }
void DiracKernel::computeJacobian() { DenseMatrix<Number> & ke = _assembly.jacobianBlock(_var.number(), _var.number()); const std::vector<unsigned int> * multiplicities = _drop_duplicate_points ? NULL : &_local_dirac_kernel_info.getPoints()[_current_elem].second; unsigned int local_qp = 0; Real multiplicity = 1.0; for (_qp = 0; _qp < _qrule->n_points(); _qp++) { _current_point = _physical_point[_qp]; if (isActiveAtPoint(_current_elem, _current_point)) { if (!_drop_duplicate_points) multiplicity = (*multiplicities)[local_qp++]; for (_i = 0; _i < _test.size(); _i++) for (_j = 0; _j < _phi.size(); _j++) ke(_i, _j) += multiplicity * computeQpJacobian(); } } }
/* virtual */ void KlipperPopup::keyPressEvent( QKeyEvent* e ) { // If alt-something is pressed, select a shortcut // from the menu. Do this by sending a keyPress // without the alt-modifier to the superobject. if ( e->modifiers() & Qt::AltModifier ) { QKeyEvent ke( QEvent::KeyPress, e->key(), e->modifiers() ^ Qt::AltModifier, e->text(), e->isAutoRepeat(), e->count() ); KMenu::keyPressEvent( &ke ); #ifdef DEBUG_EVENTS__ kDebug() << "Passing this event to ancestor (KMenu): " << e << "->" << ke; #endif if (ke.isAccepted()) { e->accept(); return; } else { e->ignore(); } } // Otherwise, send most events to the search // widget, except a few used for navigation: // These go to the superobject. switch( e->key() ) { case Qt::Key_Up: case Qt::Key_Down: case Qt::Key_Right: case Qt::Key_Left: case Qt::Key_Tab: case Qt::Key_Backtab: case Qt::Key_Escape: { #ifdef DEBUG_EVENTS__ kDebug() << "Passing this event to ancestor (KMenu): " << e; #endif KMenu::keyPressEvent(e); break; } case Qt::Key_Return: case Qt::Key_Enter: { KMenu::keyPressEvent(e); this->hide(); if (activeAction() == m_filterWidgetAction) setActiveAction(actions().at(TOP_HISTORY_ITEM_INDEX)); break; } default: { #ifdef DEBUG_EVENTS__ kDebug() << "Passing this event down to child (KLineEdit): " << e; #endif setActiveAction(actions().at(actions().indexOf(m_filterWidgetAction))); QString lastString = m_filterWidget->text(); QApplication::sendEvent(m_filterWidget, e); if (m_filterWidget->text().isEmpty()) { if (m_filterWidgetAction->isVisible()) m_filterWidget->setVisible(false); m_filterWidgetAction->setVisible(false); } else if (!m_filterWidgetAction->isVisible() ) m_filterWidgetAction->setVisible(true); if (m_filterWidget->text() != lastString) { m_dirty = true; rebuild(m_filterWidget->text()); } break; } //default: } //case }
bool PopupMenu::event(QEvent* event) { DEBUG_PRST_ROUTES(stderr, "PopupMenu::event:%p activePopupWidget:%p this:%p class:%s event type:%d\n", event, QApplication::activePopupWidget(), this, metaObject()->className(), event->type()); switch(event->type()) { #ifndef POPUP_MENU_DISABLE_STAY_OPEN case QEvent::MouseButtonDblClick: { if(_stayOpen) { QMouseEvent* e = static_cast<QMouseEvent*>(event); if(e->modifiers() == Qt::NoModifier) { event->accept(); // Convert into a return press, which selects the item and closes the menu. // Note that with double click, it's a press followed by release followed by double click. // That would toggle our item twice eg on->off->on, which is hopefully OK. QKeyEvent ke(QEvent::KeyPress, Qt::Key_Return, Qt::NoModifier); //ke.ignore(); // Pass it on return QMenu::event(&ke); } } } break; case QEvent::KeyPress: { QKeyEvent* e = static_cast<QKeyEvent*>(event); switch(e->key()) { case Qt::Key_Space: if (!style()->styleHint(QStyle::SH_Menu_SpaceActivatesItem, 0, this)) break; case Qt::Key_Select: case Qt::Key_Return: case Qt::Key_Enter: { if(QAction* act = activeAction()) { const bool stay_open = _stayOpen && (MusEGlobal::config.popupsDefaultStayOpen || (e->modifiers() & Qt::ControlModifier)); // Stay open? Or does the action have a submenu, but also a checkbox of its own? if(stay_open || (act->isEnabled() && act->menu() && act->isCheckable())) { act->trigger(); // Trigger the action. event->accept(); if(!stay_open) closeUp(); return true; // We handled it. } // Otherwise let ancestor QMenu handle it... } } break; default: break; } } break; #endif // POPUP_MENU_DISABLE_STAY_OPEN #ifndef POPUP_MENU_DISABLE_AUTO_SCROLL case QEvent::MouseMove: { if(!MusEGlobal::config.scrollableSubMenus) { QMouseEvent* e = static_cast<QMouseEvent*>(event); QPoint globPos = e->globalPos(); int dw = QApplication::desktop()->width(); // We want the whole thing if multiple monitors. if(x() < 0 && globPos.x() <= 0) // If on the very first pixel (or beyond) { moveDelta = 32; if(!timer->isActive()) timer->start(); event->accept(); return true; } else if(x() + width() >= dw && globPos.x() >= (dw -1)) // If on the very last pixel (or beyond) { moveDelta = -32; if(!timer->isActive()) timer->start(); event->accept(); return true; } if(timer->isActive()) timer->stop(); } } break; #endif // POPUP_MENU_DISABLE_AUTO_SCROLL default: break; } event->ignore(); return QMenu::event(event); }
void ntElement::def_ke(){ UVW = getDirection(); L = getLength(); if (FE == T3){ ke = arma::zeros(2, 2); ke(0, 0) = (E*A) / L; ke(0, 1) = -(E*A) / L; ke(1, 0) = -(E*A) / L; ke(1, 1) = (E*A) / L; } else if (FE == F6){ ///DEVELOP FUNCTION FOR EQUIVALENT FORCES ke = arma::zeros(6, 6); ke(0, 0) = (E*A) / L; ke(0, 3) =-(E*A) / L; ke(1, 1) = ((E*I * 12) / pow(L, 3)); ke(1, 2) = ((E*I * 6 ) / pow(L, 2)); ke(1, 4) =-((E*I * 12) / pow(L, 3)); ke(1, 5) = ((E*I * 6 ) / pow(L, 2)); ke(2, 1) = ke(1, 2); ke(2, 2) = ((E*I * 4) / L); ke(2, 4) =-((E*I * 6) / pow(L, 2)); ke(2, 5) = ((E*I * 2) / L); ke(3, 0) =-(E*A) / L; ke(3, 3) = (E*A) / L; ke(4, 1) = ke(1, 4); ke(4, 2) = ke(2, 4); ke(4, 4) = ((E*I * 12) / pow(L, 3)); ke(4, 5) = -((E*I * 6) / pow(L, 2)); ke(5, 1) = ke(1, 5); ke(5, 2) = ke(2, 5); ke(5, 4) = ke(4, 5); ke(5, 5) = ((E*I * 4) / L); //2D BEAM INTERPOLATION FUNCTION //ke(0, 0) = ((E * I) / L) * 12; //ke(0, 1) = ((E * I) / L) * 6 * L; //ke(0, 2) = ((E * I) / L) * -12; //ke(0, 3) = ((E * I) / L) * 6 * L; //ke(1, 0) = ke(0, 1); //ke(1, 1) = ((E * I) / L) * 4 * pow(L, 2); //ke(1, 2) = ((E * I) / L) * -6 * L; //ke(1, 3) = ((E * I) / L) * 2 * pow(L, 2); //ke(2, 0) = ke(0, 2); //ke(2, 1) = ke(1, 2); //ke(2, 2) = ((E * I) / L) * 12; //ke(2, 3) = ((E * I) / L) * -6 * L; //ke(3, 0) = ke(0, 3); //ke(3, 1) = ke(1, 3); //ke(3, 2) = ke(2, 3); //ke(3, 3) = ((E * I) / L) * 4 * pow(L, 2); } }
void InertialForceBeam::computeOffDiagJacobian(MooseVariableFEBase & jvar) { mooseAssert(_beta > 0.0, "InertialForceBeam: Beta parameter should be positive."); Real factor = 0.0; if (isParamValid("beta")) factor = 1.0 / (_beta * _dt * _dt) + _eta[0] * (1.0 + _alpha) * _gamma / _beta / _dt; else factor = (*_du_dotdot_du)[0] + _eta[0] * (1.0 + _alpha) * (*_du_dot_du)[0]; size_t jvar_num = jvar.number(); if (jvar_num == _var.number()) computeJacobian(); else { unsigned int coupled_component = 0; bool disp_coupled = false; bool rot_coupled = false; for (unsigned int i = 0; i < _ndisp; ++i) { if (jvar_num == _disp_num[i] && _component > 2) { coupled_component = i; disp_coupled = true; break; } } for (unsigned int i = 0; i < _nrot; ++i) { if (jvar_num == _rot_num[i]) { coupled_component = i + 3; rot_coupled = true; break; } } DenseMatrix<Number> & ke = _assembly.jacobianBlock(_var.number(), jvar_num); if (disp_coupled || rot_coupled) { for (unsigned int i = 0; i < _test.size(); ++i) { for (unsigned int j = 0; j < _phi.size(); ++j) { if (_component < 3 && coupled_component > 2) { RankTwoTensor A; A(0, 1) = _Az[0]; A(0, 2) = -_Ay[0]; A(1, 0) = -_Az[0]; A(2, 0) = _Ay[0]; // conversion from local config to global coordinate system const RankTwoTensor Ag = _original_local_config[0].transpose() * A * _original_local_config[0]; ke(i, j) += (i == j ? 1.0 / 3.0 : 1.0 / 6.0) * _density[0] * Ag(_component, coupled_component - 3) * _original_length[0] * factor; } else if (_component > 2 && coupled_component < 3) { RankTwoTensor A; A(0, 1) = -_Az[0]; A(0, 2) = _Ay[0]; A(1, 0) = _Az[0]; A(2, 0) = -_Ay[0]; // conversion from local config to global coordinate system const RankTwoTensor Ag = _original_local_config[0].transpose() * A * _original_local_config[0]; ke(i, j) += (i == j ? 1.0 / 3.0 : 1.0 / 6.0) * _density[0] * Ag(_component - 3, coupled_component) * _original_length[0] * factor; } else if (_component > 2 && coupled_component > 2) { RankTwoTensor I; if (isParamValid("Ix")) I(0, 0) = _Ix[0]; else I(0, 0) = _Iy[0] + _Iz[0]; I(1, 1) = _Iz[0]; I(2, 2) = _Iy[0]; // conversion from local config to global coordinate system const RankTwoTensor Ig = _original_local_config[0].transpose() * I * _original_local_config[0]; ke(i, j) += (i == j ? 1.0 / 3.0 : 1.0 / 6.0) * _density[0] * Ig(_component - 3, coupled_component - 3) * _original_length[0] * factor; } } } } } }
void QDeclarativeTester::updateCurrentTime(int msec) { QDeclarativeItemPrivate::setConsistentTime(msec); QImage img(m_view->width(), m_view->height(), QImage::Format_RGB32); if (options & QDeclarativeViewer::TestImages) { img.fill(qRgb(255,255,255)); QPainter p(&img); m_view->render(&p); } FrameEvent fe; fe.msec = msec; if (msec == 0 || !(options & QDeclarativeViewer::TestImages)) { // Skip first frame, skip if not doing images } else if (0 == (m_savedFrameEvents.count() % 60)) { fe.image = img; } else { QCryptographicHash hash(QCryptographicHash::Md5); hash.addData((const char *)img.bits(), img.bytesPerLine() * img.height()); fe.hash = hash.result(); } m_savedFrameEvents.append(fe); // Deliver mouse events filterEvents = false; if (!testscript) { for (int ii = 0; ii < m_mouseEvents.count(); ++ii) { MouseEvent &me = m_mouseEvents[ii]; me.msec = msec; QMouseEvent event(me.type, me.pos, me.button, me.buttons, me.modifiers); if (me.destination == View) { QCoreApplication::sendEvent(m_view, &event); } else { QCoreApplication::sendEvent(m_view->viewport(), &event); } } for (int ii = 0; ii < m_keyEvents.count(); ++ii) { KeyEvent &ke = m_keyEvents[ii]; ke.msec = msec; QKeyEvent event(ke.type, ke.key, ke.modifiers, ke.text, ke.autorep, ke.count); if (ke.destination == View) { QCoreApplication::sendEvent(m_view, &event); } else { QCoreApplication::sendEvent(m_view->viewport(), &event); } } m_savedMouseEvents.append(m_mouseEvents); m_savedKeyEvents.append(m_keyEvents); } m_mouseEvents.clear(); m_keyEvents.clear(); // Advance test script while (testscript && testscript->count() > testscriptidx) { QObject *event = testscript->event(testscriptidx); if (QDeclarativeVisualTestFrame *frame = qobject_cast<QDeclarativeVisualTestFrame *>(event)) { if (frame->msec() < msec) { if (options & QDeclarativeViewer::TestImages && !(options & QDeclarativeViewer::Record)) { qWarning() << "QDeclarativeTester: Extra frame. Seen:" << msec << "Expected:" << frame->msec(); imagefailure(); } } else if (frame->msec() == msec) { if (!frame->hash().isEmpty() && frame->hash().toUtf8() != fe.hash.toHex()) { if (options & QDeclarativeViewer::TestImages && !(options & QDeclarativeViewer::Record)) { qWarning() << "QDeclarativeTester: Mismatched frame hash. Seen:" << fe.hash.toHex() << "Expected:" << frame->hash().toUtf8(); imagefailure(); } } } else if (frame->msec() > msec) { break; } if (options & QDeclarativeViewer::TestImages && !(options & QDeclarativeViewer::Record) && !frame->image().isEmpty()) { QImage goodImage(frame->image().toLocalFile()); if (goodImage != img) { QString reject(frame->image().toLocalFile() + ".reject.png"); qWarning() << "QDeclarativeTester: Image mismatch. Reject saved to:" << reject; img.save(reject); imagefailure(); } } } else if (QDeclarativeVisualTestMouse *mouse = qobject_cast<QDeclarativeVisualTestMouse *>(event)) { QPoint pos(mouse->x(), mouse->y()); QPoint globalPos = m_view->mapToGlobal(QPoint(0, 0)) + pos; QMouseEvent event((QEvent::Type)mouse->type(), pos, globalPos, (Qt::MouseButton)mouse->button(), (Qt::MouseButtons)mouse->buttons(), (Qt::KeyboardModifiers)mouse->modifiers()); MouseEvent me(&event); me.msec = msec; if (!mouse->sendToViewport()) { QCoreApplication::sendEvent(m_view, &event); me.destination = View; } else { QCoreApplication::sendEvent(m_view->viewport(), &event); me.destination = ViewPort; } m_savedMouseEvents.append(me); } else if (QDeclarativeVisualTestKey *key = qobject_cast<QDeclarativeVisualTestKey *>(event)) { QKeyEvent event((QEvent::Type)key->type(), key->key(), (Qt::KeyboardModifiers)key->modifiers(), QString::fromUtf8(QByteArray::fromHex(key->text().toUtf8())), key->autorep(), key->count()); KeyEvent ke(&event); ke.msec = msec; if (!key->sendToViewport()) { QCoreApplication::sendEvent(m_view, &event); ke.destination = View; } else { QCoreApplication::sendEvent(m_view->viewport(), &event); ke.destination = ViewPort; } m_savedKeyEvents.append(ke); } testscriptidx++; } filterEvents = true; if (testscript && testscript->count() <= testscriptidx) complete(); }
void tst_Q3RichText::keyPressEvent() { // Still needs to test Key_Prior and Key_Next int para, index; Q3TextEdit textedit; textedit.show(); textedit.setText( "This is a test" ); qWarning( "Consider using QtTestCase::keyEvent() for sending key events" ); QKeyEvent ke( QEvent::KeyPress, Qt::Key_Right, 0, Qt::NoButton ); QApplication::sendEvent( textedit.viewport(), &ke ); textedit.getCursorPosition( ¶, &index ); QCOMPARE( para, 0 ); QCOMPARE( index, 1 ); ke = QKeyEvent( QEvent::KeyPress, Qt::Key_Right, 0, Qt::ControlModifier ); QApplication::sendEvent( textedit.viewport(), &ke ); textedit.getCursorPosition( ¶, &index ); QCOMPARE( para, 0 ); QCOMPARE( index, 5 ); ke = QKeyEvent( QEvent::KeyPress, Qt::Key_Left, 0, Qt::NoButton ); QApplication::sendEvent( textedit.viewport(), &ke ); textedit.getCursorPosition( ¶, &index ); QCOMPARE( para, 0 ); QCOMPARE( index, 4 ); ke = QKeyEvent( QEvent::KeyPress, Qt::Key_Left, 0, Qt::ControlModifier ); QApplication::sendEvent( textedit.viewport(), &ke ); textedit.getCursorPosition( ¶, &index ); QCOMPARE( para, 0 ); QCOMPARE( index, 0 ); // Test that the text is removed when Enter/Return is pressed first textedit.selectAll(); ke = QKeyEvent( QEvent::KeyPress, Qt::Key_Enter, 0, Qt::NoButton ); QApplication::sendEvent( textedit.viewport(), &ke ); QCOMPARE( textedit.text(), QString("\n") ); textedit.setText( "This is a test" ); textedit.selectAll(); ke = QKeyEvent( QEvent::KeyPress, Qt::Key_Return, 0, Qt::NoButton ); QApplication::sendEvent( textedit.viewport(), &ke ); QCOMPARE( textedit.text(), QString("\n") ); // Now test if the line-break is added in rich text mode textedit.setTextFormat( Qt::RichText ); textedit.setText( "This is a test" ); ke = QKeyEvent( QEvent::KeyPress, Qt::Key_Enter, 0, Qt::ControlModifier ); QApplication::sendEvent( textedit.viewport(), &ke ); QVERIFY( textedit.text().contains( "<br />" ) ); textedit.setText( "This is a test" ); textedit.moveCursor( Q3TextEdit::MoveLineEnd, FALSE ); ke = QKeyEvent( QEvent::KeyPress, Qt::Key_Return, 0, Qt::ControlModifier ); QApplication::sendEvent( textedit.viewport(), &ke ); QVERIFY( textedit.text().contains( "<br />" ) ); textedit.setText( "This is a test" ); textedit.moveCursor( Q3TextEdit::MoveWordForward, FALSE ); ke = QKeyEvent( QEvent::KeyPress, Qt::Key_Return, 0, Qt::NoButton ); QApplication::sendEvent( textedit.viewport(), &ke ); QString es = QString::fromLatin1("<p dir=\"ltr\">"); QVERIFY( textedit.text().count( es ) == 2 ); textedit.setTextFormat( Qt::AutoText ); textedit.setText( "This is a test" ); QApplication::clipboard()->setText(""); textedit.selectAll(); ke = QKeyEvent( QEvent::KeyPress, Qt::Key_Delete, 0, Qt::NoButton ); QApplication::sendEvent( textedit.viewport(), &ke ); QCOMPARE( textedit.text(), QString("") ); #if defined (Q_WS_WIN) textedit.setText( "This is a test" ); QApplication::clipboard()->setText(""); textedit.selectAll(); ke = QKeyEvent( QEvent::KeyPress, Qt::Key_Delete, 0, Qt::ShiftModifier ); QApplication::sendEvent( textedit.viewport(), &ke ); QCOMPARE( textedit.text(), QString("") ); QCOMPARE( QApplication::clipboard()->text(), QString("This is a test") ); #endif textedit.setText( "This is a test" ); ke = QKeyEvent( QEvent::KeyPress, Qt::Key_Delete, 0, Qt::NoButton ); QApplication::sendEvent( textedit.viewport(), &ke ); QCOMPARE( textedit.text(), QString("his is a test") ); bool nativeClipboardWorking = true; #if defined (Q_WS_MAC) PasteboardRef pasteboard; OSStatus status = PasteboardCreate(0, &pasteboard); if (status == noErr) CFRelease(pasteboard); nativeClipboardWorking = status == noErr; #endif if (nativeClipboardWorking) { textedit.setText( "This is a test" ); QApplication::clipboard()->setText(" and this is another test"); textedit.moveCursor( Q3TextEdit::MoveLineEnd, FALSE ); ke = QKeyEvent( QEvent::KeyPress, Qt::Key_Insert, 0, Qt::ShiftModifier ); QApplication::sendEvent( textedit.viewport(), &ke ); QCOMPARE( textedit.text(), QString("This is a test and this is another test") ); } #if defined (Q_WS_WIN) textedit.setText( "This is a test" ); QApplication::clipboard()->setText(""); textedit.selectAll(); ke = QKeyEvent( QEvent::KeyPress, Qt::Key_Insert, 0, Qt::ControlModifier ); QApplication::sendEvent( textedit.viewport(), &ke ); QCOMPARE( QApplication::clipboard()->text(), QString("This is a test") ); #endif textedit.setText( "This is a test" ); textedit.selectAll(); ke = QKeyEvent( QEvent::KeyPress, Qt::Key_Backspace, 0, Qt::NoButton ); QApplication::sendEvent( textedit.viewport(), &ke ); QCOMPARE( textedit.text(), QString("") ); textedit.setText( "This is a test" ); textedit.moveCursor( Q3TextEdit::MoveLineEnd, FALSE ); ke = QKeyEvent( QEvent::KeyPress, Qt::Key_Backspace, 0, Qt::NoButton ); QApplication::sendEvent( textedit.viewport(), &ke ); QCOMPARE( textedit.text(), QString( "This is a tes" ) ); if (nativeClipboardWorking) { textedit.setText( "This is a test" ); QApplication::clipboard()->setText(""); textedit.selectAll(); ke = QKeyEvent( QEvent::KeyPress, Qt::Key_F16, 0, Qt::NoButton ); QApplication::sendEvent( textedit.viewport(), &ke ); QCOMPARE( QApplication::clipboard()->text(), QString("This is a test") ); textedit.setText( "This is a test" ); textedit.moveCursor( Q3TextEdit::MoveLineEnd, FALSE ); QApplication::clipboard()->setText(" and this is another test"); ke = QKeyEvent( QEvent::KeyPress, Qt::Key_F18, 0, Qt::NoButton ); QApplication::sendEvent( textedit.viewport(), &ke ); QCOMPARE( textedit.text(), QString("This is a test and this is another test") ); textedit.setText( "This is a test" ); QApplication::clipboard()->setText(""); textedit.selectAll(); ke = QKeyEvent( QEvent::KeyPress, Qt::Key_F20, 0, Qt::NoButton ); QApplication::sendEvent( textedit.viewport(), &ke ); QCOMPARE( textedit.text(), QString("") ); QCOMPARE( QApplication::clipboard()->text(), QString("This is a test") ); } }
void QDeclarativeTester::updateCurrentTime(int msec) { #ifndef Q_OS_SYMBIAN QDeclarativeItemPrivate::setConsistentTime(msec); #endif if (!testscript && msec > 16 && options & QDeclarativeViewer::Snapshot) return; QImage img(m_view->width(), m_view->height(), QImage::Format_RGB32); if (options & QDeclarativeViewer::TestImages) { img.fill(qRgb(255,255,255)); #ifdef Q_WS_MAC bool oldSmooth = qt_applefontsmoothing_enabled; qt_applefontsmoothing_enabled = false; #endif QPainter p(&img); #ifdef Q_WS_MAC qt_applefontsmoothing_enabled = oldSmooth; #endif m_view->render(&p); } bool snapshot = msec == 16 && (options & QDeclarativeViewer::Snapshot || (testscript && testscript->count() == 2)); FrameEvent fe; fe.msec = msec; if (msec == 0 || !(options & QDeclarativeViewer::TestImages)) { // Skip first frame, skip if not doing images } else if (0 == ((m_savedFrameEvents.count()-1) % 60) || snapshot) { fe.image = img; } else { QCryptographicHash hash(QCryptographicHash::Md5); hash.addData((const char *)img.bits(), img.bytesPerLine() * img.height()); fe.hash = hash.result(); } m_savedFrameEvents.append(fe); // Deliver mouse events filterEvents = false; if (!testscript) { for (int ii = 0; ii < m_mouseEvents.count(); ++ii) { MouseEvent &me = m_mouseEvents[ii]; me.msec = msec; QMouseEvent event(me.type, me.pos, me.button, me.buttons, me.modifiers); if (me.destination == View) { QCoreApplication::sendEvent(m_view, &event); } else { QCoreApplication::sendEvent(m_view->viewport(), &event); } } for (int ii = 0; ii < m_keyEvents.count(); ++ii) { KeyEvent &ke = m_keyEvents[ii]; ke.msec = msec; QKeyEvent event(ke.type, ke.key, ke.modifiers, ke.text, ke.autorep, ke.count); if (ke.destination == View) { QCoreApplication::sendEvent(m_view, &event); } else { QCoreApplication::sendEvent(m_view->viewport(), &event); } } m_savedMouseEvents.append(m_mouseEvents); m_savedKeyEvents.append(m_keyEvents); } m_mouseEvents.clear(); m_keyEvents.clear(); // Advance test script while (testscript && testscript->count() > testscriptidx) { QObject *event = testscript->event(testscriptidx); if (QDeclarativeVisualTestFrame *frame = qobject_cast<QDeclarativeVisualTestFrame *>(event)) { if (frame->msec() < msec) { if (options & QDeclarativeViewer::TestImages && !(options & QDeclarativeViewer::Record)) { qWarning() << "QDeclarativeTester(" << m_script << "): Extra frame. Seen:" << msec << "Expected:" << frame->msec(); imagefailure(); } } else if (frame->msec() == msec) { if (!frame->hash().isEmpty() && frame->hash().toUtf8() != fe.hash.toHex()) { if (options & QDeclarativeViewer::TestImages && !(options & QDeclarativeViewer::Record)) { qWarning() << "QDeclarativeTester(" << m_script << "): Mismatched frame hash at" << msec << ". Seen:" << fe.hash.toHex() << "Expected:" << frame->hash().toUtf8(); imagefailure(); } } } else if (frame->msec() > msec) { break; } if (options & QDeclarativeViewer::TestImages && !(options & QDeclarativeViewer::Record) && !frame->image().isEmpty()) { QImage goodImage(frame->image().toLocalFile()); if (frame->msec() == 16 && goodImage.size() != img.size()){ //Also an image mismatch, but this warning is more informative. Only checked at start though. qWarning() << "QDeclarativeTester(" << m_script << "): Size mismatch. This test must be run at " << goodImage.size(); imagefailure(); } if (goodImage != img) { QString reject(frame->image().toLocalFile() + QLatin1String(".reject.png")); qWarning() << "QDeclarativeTester(" << m_script << "): Image mismatch. Reject saved to:" << reject; img.save(reject); bool doDiff = (goodImage.size() == img.size()); if (doDiff) { QImage diffimg(m_view->width(), m_view->height(), QImage::Format_RGB32); diffimg.fill(qRgb(255,255,255)); QPainter p(&diffimg); int diffCount = 0; for (int x = 0; x < img.width(); ++x) { for (int y = 0; y < img.height(); ++y) { if (goodImage.pixel(x,y) != img.pixel(x,y)) { ++diffCount; p.drawPoint(x,y); } } } QString diff(frame->image().toLocalFile() + QLatin1String(".diff.png")); diffimg.save(diff); qWarning().nospace() << " Diff (" << diffCount << " pixels differed) saved to: " << diff; } imagefailure(); } } } else if (QDeclarativeVisualTestMouse *mouse = qobject_cast<QDeclarativeVisualTestMouse *>(event)) { QPoint pos(mouse->x(), mouse->y()); QPoint globalPos = m_view->mapToGlobal(QPoint(0, 0)) + pos; QMouseEvent event((QEvent::Type)mouse->type(), pos, globalPos, (Qt::MouseButton)mouse->button(), (Qt::MouseButtons)mouse->buttons(), (Qt::KeyboardModifiers)mouse->modifiers()); MouseEvent me(&event); me.msec = msec; if (!mouse->sendToViewport()) { QCoreApplication::sendEvent(m_view, &event); me.destination = View; } else { QCoreApplication::sendEvent(m_view->viewport(), &event); me.destination = ViewPort; } m_savedMouseEvents.append(me); } else if (QDeclarativeVisualTestKey *key = qobject_cast<QDeclarativeVisualTestKey *>(event)) { QKeyEvent event((QEvent::Type)key->type(), key->key(), (Qt::KeyboardModifiers)key->modifiers(), QString::fromUtf8(QByteArray::fromHex(key->text().toUtf8())), key->autorep(), key->count()); KeyEvent ke(&event); ke.msec = msec; if (!key->sendToViewport()) { QCoreApplication::sendEvent(m_view, &event); ke.destination = View; } else { QCoreApplication::sendEvent(m_view->viewport(), &event); ke.destination = ViewPort; } m_savedKeyEvents.append(ke); } testscriptidx++; } filterEvents = true; if (testscript && testscript->count() <= testscriptidx) { //if (msec == 16) //for a snapshot, leave it up long enough to see // (void)::sleep(1); complete(); } }
// Apply the phong model to this point on the surface of the object, returning // the color of that point. Vec3d Material::shade( Scene *scene, const ray& r, const isect& i ) const { // YOUR CODE HERE // For now, this method just returns the diffuse color of the object. // This gives a single matte color for every distinct surface in the // scene, and that's it. Simple, but enough to get you started. // (It's also inconsistent with the phong model...) // Your mission is to fill in this method with the rest of the phong // shading model, including the contributions of all the light sources. // You will need to call both distanceAttenuation() and shadowAttenuation() // somewhere in your code in order to compute shadows and light falloff. if( debugMode ) std::cout << "Debugging Phong code..." << std::endl; //Intersection Point Vec3d P = r.at(i.t); Vec3d L = Vec3d(0,0,0); Vec3d V = -r.getDirection(); //======[ Emission ]====== L += ke(i); if(debugMode) std::cout << "ke(i): " << ke(i) <<"\n"; //======[ Ambient ]====== //missing Ka L += prod(ka(i),scene->ambient()); if(debugMode){ std::cout << "ambient: " << scene->ambient() <<"\n"; std::cout << "ka(i): " << ka(i) <<"\n"; } //iterate through lights for ( std::vector<Light*>::const_iterator litr = scene->beginLights(); litr != scene->endLights(); ++litr ) { Vec3d Lc; //light contribution Light* pLight = *litr; Vec3d sa = pLight->shadowAttenuation(P); double da = pLight->distanceAttenuation(P); //======[ Diffuse ]====== Vec3d direction = pLight->getDirection(P); Vec3d normal = i.N; if(debugMode) { std::cout << "D: "; clamp((normal*direction)*kd(i)).print(); } Lc = clamp((normal*direction)*kd(i)); //======[ Specular ]====== Vec3d H = (V+direction)/2.0; if(debugMode) { std::cout << "S: "; clamp(ks(i)*pow((normal*H),shininess(i))).print(); std::cout <<"sa: "; sa.print(); } Lc += clamp(ks(i)*pow((normal*H),shininess(i))); Lc = da * prod(Lc,sa); L+=Lc; } if(debugMode){ std::cout <<"L: "; L.print(); } return L; }