Mercurial > hg > amuse
view base/charm/methods.lisp @ 253:b5ffec94ae6d
some very sketchy Charm constituent code
author | Jamie Forth <j.forth@gold.ac.uk> |
---|---|
date | Thu, 24 Feb 2011 11:23:18 +0000 |
parents | |
children |
line wrap: on
line source
(cl:in-package #:amuse-charm) ;;;===================================================================== ;;; identifiers ;;;===================================================================== (defmethod id ((o constituent-identifier)) (constituent-id o)) (defmethod id ((o constituent)) (constituent-id (identifier o))) (defmethod id ((o event-identifier)) (event-id o)) (defmethod id ((o event)) (event-id o)) (defmethod id ((o composition-identifier)) (composition-id o)) (defmethod id ((o composition)) (composition-id o)) ;;;===================================================================== ;;; Specialised constructors ;;;===================================================================== (defmethod make-charm-parent-identifier ((implementation (eql *package*)) id) "A Charm constituent parent in this context is just another Charm constituent, i.e. a constituent has been defined which as a subset of another (parent) constituent." (make-charm-constituent-identifier id)) (defmethod make-charm-parent-identifier ((implementation (eql (find-package "AMUSE-GEERDES"))) id) "FIXME: This should be in amuse-geerdes" (amuse-geerdes::g-id-file-id id)) (defmethod make-charm-particle-identifier ((impl-package (eql *package*)) id) "A CHARM particle in this context is just another CHARM constituent, i.e. a constituent has been defined which is the union of other previously defined constituents." (make-charm-constituent-identifier id)) (defmethod make-charm-particle-identifier ((impl-package (eql (find-package "AMUSE-GEERDES"))) id) "FIXME: This should be in amuse-geerdes" (amuse-geerdes::make-geerdes-event-identifier id)) ;; (defmethod get-charm-particles (constituent-identifier ids ;; (parent amuse-geerdes::composition)) ;; "FIXME: This should be in amuse-geerdes" ;; (amuse-geerdes::select-events-by-ids parent ids)) (defmethod get-charm-parent ((constituent-identifier amuse-geerdes::constituent-identifier)) (amuse-geerdes::get-composition constituent-identifier)) ;; (defmethod %cache-charm-particles ((impl-package (eql *package*)) ;; constituent) ;; "hierarchy of constituents not yet implemented!") ;; (defmethod %cache-charm-particles ((impl-package (eql (find-package ;; "AMUSE-GEERDES"))) ;; constituent) ;; "FIXME: This should be in amuse-geerdes. This relies on identifier ;; and particles being in the same order! Better to have generic ;; functions within each implementation that can take a list of event ;; identifiers and return a list of events from the database? Or maybe ;; better still to make compositions proper CHARM constituents so that we ;; can use 'make-sequence-like'?" ;; (let ((composition (amuse-geerdes::get-composition ;; (parent-identifier constituent)))) ;; (loop with events = (%list-slot-sequence-data composition) ;; for identifier in (%list-slot-sequence-data constituent) ;; for event = (loop for events-head on events ;; until (eq (event-id (car events-head)) ;; (event-id identifier)) ;; finally (progn (setf events events-head) ;; (return (car events-head)))) ;; collect event into cached-events ;; finally (progn (setf (particle-cache constituent) ;; cached-events) ;; (return constituent)))))